Module: SolidObjects::ComponentToken
- Defined in:
- lib/solid_objects/component_token.rb,
sig/generated/lib/solid_objects/component_token.rbs
Constant Summary collapse
- PURPOSE =
"solid_objects.actor_component"- MAXIMUM_TOKEN_BYTES =
16_384- MAXIMUM_DEPENDENCIES =
50- MAXIMUM_LOCALS =
50- MAXIMUM_COMPONENT_KEY_BYTES =
512- MAXIMUM_BATCH_BYTES =
64- REFRESH_METHODS =
%w[replace morph].freeze
- RESERVED_LOCALS =
%w[actor authorization_context component_key].freeze
- RUBY_KEYWORDS =
%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
- .generate(reference:, component_name:, dependencies:, instance_id:, revision:, refresh_path:, component_key: nil, locals: {}, refresh_method: "replace", batch: nil) ⇒ Object
- .verify(token) ⇒ Object
Instance Method Summary collapse
- #self?.apply_defaults! ⇒ void
- #self?.generate ⇒ String
- #self?.signing_secret ⇒ String
- #self?.validate_batch! ⇒ void
- #self?.validate_component_key! ⇒ void
- #self?.validate_component_name! ⇒ void
- #self?.validate_dependencies! ⇒ void
- #self?.validate_locals! ⇒ void
- #self?.validate_payload! ⇒ Hash[String, untyped]
- #self?.validate_refresh_method! ⇒ void
- #self?.validate_refresh_path! ⇒ void
- #self?.validate_revision! ⇒ void
- #self?.verifier ⇒ ActiveSupport::MessageVerifier
- #self?.verify ⇒ Hash[String, untyped]
Class Method Details
.generate(reference:, component_name:, dependencies:, instance_id:, revision:, refresh_path:, component_key: nil, locals: {}, refresh_method: "replace", batch: nil) ⇒ Object
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
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.
33 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 33
def self?.apply_defaults!: (Hash[String, untyped]?) -> void
|
#self?.generate ⇒ 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_secret ⇒ 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.
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.
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.
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.
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.
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]
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.
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.
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.
54 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 54
def self?.validate_revision!: (Integer, Integer) -> void
|
#self?.verifier ⇒ ActiveSupport::MessageVerifier
60 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 60
def self?.verifier: () -> ActiveSupport::MessageVerifier
|
#self?.verify ⇒ Hash[String, untyped]
27 |
# File 'sig/generated/lib/solid_objects/component_token.rbs', line 27
def self?.verify: (String) -> Hash[String, untyped]
|