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
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") ⇒ 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) -> String



23
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
# File 'lib/solid_objects/component_token.rb', line 23

def generate(
  reference:,
  component_name:,
  dependencies:,
  instance_id:,
  revision:,
  refresh_path:,
  component_key: nil,
  locals: {},
  refresh_method: "replace"
)
  payload = {
    "actor_type" => reference.actor_type,
    "actor_id" => reference.actor_id,
    "component_name" => component_name,
    "component_key" => Serialization.dump(component_key),
    "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]



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/solid_objects/component_token.rb', line 53

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)


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

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) -> 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)

Returns:

  • (String)


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

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) -> String

#self?.signing_secretString

RBS:

  • () -> String

Returns:

  • (String)


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

def self?.signing_secret: () -> String

#self?.validate_component_key!void

This method returns an undefined value.

RBS:

  • (untyped) -> void

Parameters:

  • (Object)


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

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

#self?.validate_component_name!void

This method returns an undefined value.

RBS:

  • (String) -> void

Parameters:

  • (String)


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

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

#self?.validate_dependencies!void

This method returns an undefined value.

RBS:

  • (Array[untyped]) -> void

Parameters:

  • (Array[untyped])


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

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])


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

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])


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

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)


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

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

#self?.validate_refresh_path!void

This method returns an undefined value.

RBS:

  • (String) -> void

Parameters:

  • (String)


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

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

#self?.validate_revision!void

This method returns an undefined value.

RBS:

  • (Integer, Integer) -> void

Parameters:

  • (Integer)
  • (Integer)


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

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

#self?.verifierActiveSupport::MessageVerifier

RBS:

  • () -> ActiveSupport::MessageVerifier

Returns:



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

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

#self?.verifyHash[String, untyped]

RBS:

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

Parameters:

  • (String)

Returns:

  • (Hash[String, untyped])


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

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