Class: SeaShanty::RequestSerializer
- Inherits:
-
Object
- Object
- SeaShanty::RequestSerializer
- Defined in:
- lib/sea_shanty/request_serializer.rb
Instance Method Summary collapse
- #digest(request) ⇒ Object
- #file_path(request) ⇒ Object
- #filename(request) ⇒ Object
-
#initialize(headers_filter: lambda { |_name, value| value }, body_filter: lambda { |body| body }) ⇒ RequestSerializer
constructor
A new instance of RequestSerializer.
- #serialize(request) ⇒ Object
Constructor Details
#initialize(headers_filter: lambda { |_name, value| value }, body_filter: lambda { |body| body }) ⇒ RequestSerializer
Returns a new instance of RequestSerializer.
8 9 10 11 |
# File 'lib/sea_shanty/request_serializer.rb', line 8 def initialize(headers_filter: lambda { |_name, value| value }, body_filter: lambda { |body| body }) @headers_filter = headers_filter @body_filter = body_filter end |
Instance Method Details
#digest(request) ⇒ Object
13 14 15 |
# File 'lib/sea_shanty/request_serializer.rb', line 13 def digest(request) Digest::SHA1.hexdigest(request.method.to_s + request.url.to_s + body_filter.call(request.body.to_s)) end |
#file_path(request) ⇒ Object
21 22 23 24 25 |
# File 'lib/sea_shanty/request_serializer.rb', line 21 def file_path(request) # Don't assume system directory separator is / url_path = request.url.path.delete_prefix("/").split("/").join(File::SEPARATOR) Pathname.new(request.url.hostname).join(url_path, request.method.to_s, filename(request)) end |
#filename(request) ⇒ Object
17 18 19 |
# File 'lib/sea_shanty/request_serializer.rb', line 17 def filename(request) "#{digest(request)}.yml" end |
#serialize(request) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/sea_shanty/request_serializer.rb', line 27 def serialize(request) hash = request.to_h hash[:headers] = hash.fetch(:headers).map { |name, value| [name, headers_filter.call(name, value)] }.to_h hash[:body] = body_filter.call(hash.fetch(:body)) hash end |