Module: SolidObjects::ComponentToken

Defined in:
lib/solid_objects/component_token.rb,
sig/generated/lib/solid_objects/component_token.rbs

Constant Summary collapse

PURPOSE =

Returns:

  • (::String)
"solid_objects.actor_component"
MAXIMUM_TOKEN_BYTES =

Returns:

  • (::Integer)
16_384
MAXIMUM_DEPENDENCIES =

Returns:

  • (::Integer)
50
MAXIMUM_LOCALS =

Returns:

  • (::Integer)
50
MAXIMUM_COMPONENT_KEY_BYTES =

Returns:

  • (::Integer)
512
MAXIMUM_BATCH_BYTES =

Returns:

  • (::Integer)
64
REFRESH_METHODS =

Returns:

  • (Object)
%w[replace morph].freeze
RESERVED_LOCALS =

Returns:

  • (Object)
%w[actor authorization_context component_key].freeze
RUBY_KEYWORDS =

Returns:

  • (Object)
%w[
  alias and begin break case class def defined do else elsif end ensure
  false for if in module next nil not or redo rescue retry return self
  super then true undef unless until when while yield
].freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.generate(reference:, component_name:, dependencies:, instance_id:, revision:, refresh_path:, component_key: nil, locals: {}, refresh_method: "replace", batch: nil) ⇒ Object

RBS:

  • (reference: Reference, component_name: String, dependencies: Array[String], instance_id: Integer, revision: Integer, refresh_path: String, ?component_key: untyped, ?locals: Hash[untyped, untyped], ?refresh_method: String | Symbol, ?batch: untyped) -> String



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/solid_objects/component_token.rb', line 24

def generate(
  reference:,
  component_name:,
  dependencies:,
  instance_id:,
  revision:,
  refresh_path:,
  component_key: nil,
  locals: {},
  refresh_method: "replace",
  batch: nil
)
  payload = {
    "actor_type" => reference.actor_type,
    "actor_id" => reference.actor_id,
    "component_name" => component_name,
    "component_key" => Serialization.dump(component_key),
    "batch" => batch&.to_s,
    "dependencies" => dependencies,
    "locals" => Serialization.dump(locals),
    "refresh_method" => refresh_method.to_s,
    "instance_id" => instance_id,
    "revision" => revision,
    "refresh_path" => refresh_path
  }
  validate_payload!(payload)
  verifier.generate(payload, purpose: PURPOSE).tap do |token|
    raise InvalidComponentToken, "component token is too large" if token.bytesize > MAXIMUM_TOKEN_BYTES
  end
end

.verify(token) ⇒ Object

RBS:

  • (String) -> Hash[String, untyped]



56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/solid_objects/component_token.rb', line 56

def verify(token)
  unless token.is_a?(String) && token.bytesize <= MAXIMUM_TOKEN_BYTES
    raise InvalidComponentToken, "invalid actor component token"
  end

  payload = verifier.verified(token, purpose: PURPOSE)
  apply_defaults!(payload)
  validate_payload!(payload)
  payload
rescue ActiveSupport::MessageVerifier::InvalidSignature
  raise InvalidComponentToken, "invalid actor component token"
end

Instance Method Details

#self?.apply_defaults!void

This method returns an undefined value.

RBS:

  • (Hash[String, untyped]?) -> void

Parameters:

  • (Hash[String, untyped], nil)


33
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 33

def self?.apply_defaults!: (Hash[String, untyped]?) -> void

#self?.generateString

RBS:

  • (reference: Reference, component_name: String, dependencies: Array[String], instance_id: Integer, revision: Integer, refresh_path: String, ?component_key: untyped, ?locals: Hash[untyped, untyped], ?refresh_method: String | Symbol, ?batch: untyped) -> String

Parameters:

  • reference: (Reference)
  • component_name: (String)
  • dependencies: (Array[String])
  • instance_id: (Integer)
  • revision: (Integer)
  • refresh_path: (String)
  • component_key: (Object)
  • locals: (Hash[untyped, untyped])
  • refresh_method: (String, Symbol)
  • batch: (Object)

Returns:

  • (String)


24
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 24

def self?.generate: (reference: Reference, component_name: String, dependencies: Array[String], instance_id: Integer, revision: Integer, refresh_path: String, ?component_key: untyped, ?locals: Hash[untyped, untyped], ?refresh_method: String | Symbol, ?batch: untyped) -> String

#self?.signing_secretString

RBS:

  • () -> String

Returns:

  • (String)


63
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 63

def self?.signing_secret: () -> String

#self?.validate_batch!void

This method returns an undefined value.

RBS:

  • (untyped) -> void

Parameters:

  • (Object)


42
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 42

def self?.validate_batch!: (untyped) -> void

#self?.validate_component_key!void

This method returns an undefined value.

RBS:

  • (untyped) -> void

Parameters:

  • (Object)


39
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 39

def self?.validate_component_key!: (untyped) -> void

#self?.validate_component_name!void

This method returns an undefined value.

RBS:

  • (String) -> void

Parameters:

  • (String)


36
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 36

def self?.validate_component_name!: (String) -> void

#self?.validate_dependencies!void

This method returns an undefined value.

RBS:

  • (Array[untyped]) -> void

Parameters:

  • (Array[untyped])


45
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 45

def self?.validate_dependencies!: (Array[untyped]) -> void

#self?.validate_locals!void

This method returns an undefined value.

RBS:

  • (Hash[untyped, untyped]) -> void

Parameters:

  • (Hash[untyped, untyped])


48
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 48

def self?.validate_locals!: (Hash[untyped, untyped]) -> void

#self?.validate_payload!Hash[String, untyped]

RBS:

  • (Hash[String, untyped]) -> Hash[String, untyped]

Parameters:

  • (Hash[String, untyped])

Returns:

  • (Hash[String, untyped])


30
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 30

def self?.validate_payload!: (Hash[String, untyped]) -> Hash[String, untyped]

#self?.validate_refresh_method!void

This method returns an undefined value.

RBS:

  • (String) -> void

Parameters:

  • (String)


51
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 51

def self?.validate_refresh_method!: (String) -> void

#self?.validate_refresh_path!void

This method returns an undefined value.

RBS:

  • (String) -> void

Parameters:

  • (String)


57
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 57

def self?.validate_refresh_path!: (String) -> void

#self?.validate_revision!void

This method returns an undefined value.

RBS:

  • (Integer, Integer) -> void

Parameters:

  • (Integer)
  • (Integer)


54
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 54

def self?.validate_revision!: (Integer, Integer) -> void

#self?.verifierActiveSupport::MessageVerifier

RBS:

  • () -> ActiveSupport::MessageVerifier

Returns:



60
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 60

def self?.verifier: () -> ActiveSupport::MessageVerifier

#self?.verifyHash[String, untyped]

RBS:

  • (String) -> Hash[String, untyped]

Parameters:

  • (String)

Returns:

  • (Hash[String, untyped])


27
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 27

def self?.verify: (String) -> Hash[String, untyped]