Class: ViewComponentReducible::Adapter::Session
- Inherits:
-
Base
- Object
- Base
- ViewComponentReducible::Adapter::Session
show all
- Defined in:
- lib/view_component_reducible/adapter/session.rb
Overview
Session adapter storing envelope in server session.
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Base
#initialize
Class Method Details
.state_param_name ⇒ Object
11
12
13
|
# File 'lib/view_component_reducible/adapter/session.rb', line 11
def self.state_param_name
'vcr_state_key'
end
|
Instance Method Details
#dump(envelope, request:) ⇒ String
23
24
25
26
27
28
29
30
|
# File 'lib/view_component_reducible/adapter/session.rb', line 23
def dump(envelope, request:)
key = SecureRandom.hex(16)
session = request.session
session_keys = session.respond_to?(:keys) ? session.keys : session.to_hash.keys
session_keys.grep(/\Avcr:/).each { |session_key| session.delete(session_key) }
session["vcr:#{key}"] = envelope
verifier.generate({ 'k' => key })
end
|
#load(request:) ⇒ Hash
34
35
36
37
38
39
|
# File 'lib/view_component_reducible/adapter/session.rb', line 34
def load(request:)
signed = request.params.fetch(self.class.state_param_name)
payload = verifier.verify(signed)
key = payload.fetch('k')
request.session.fetch("vcr:#{key}")
end
|
#verifier ⇒ ActiveSupport::MessageVerifier
16
17
18
|
# File 'lib/view_component_reducible/adapter/session.rb', line 16
def verifier
@verifier ||= ActiveSupport::MessageVerifier.new(@secret, digest: 'SHA256', serializer: JSON)
end
|