class Reynard::Context
Exposes a public interface to build a request context.
Public Class Methods
new(specification:, request_context: nil)
click to toggle source
# File lib/reynard/context.rb, line 9 def initialize(specification:, request_context: nil) @specification = specification @request_context = request_context || build_request_context end
Public Instance Methods
base_url(base_url)
click to toggle source
# File lib/reynard/context.rb, line 14 def base_url(base_url) copy(base_url: base_url) end
execute()
click to toggle source
# File lib/reynard/context.rb, line 31 def execute build_object(build_request.perform) end
headers(headers)
click to toggle source
# File lib/reynard/context.rb, line 27 def headers(headers) copy(headers: headers) end
operation(operation_name)
click to toggle source
# File lib/reynard/context.rb, line 18 def operation(operation_name) copy(operation: @specification.operation(operation_name)) end
params(params)
click to toggle source
# File lib/reynard/context.rb, line 22 def params(params) params = params.transform_keys(&:to_s) copy(params: @specification.build_grouped_params(@request_context.operation.node, params)) end
Private Instance Methods
build_object(http_response)
click to toggle source
# File lib/reynard/context.rb, line 52 def build_object(http_response) media_type = @specification.media_type( @request_context.operation.node, http_response.code, http_response.content_type ) ObjectBuilder.new( media_type: media_type, schema: @specification.schema(media_type.node), http_response: http_response ).call end
build_request()
click to toggle source
# File lib/reynard/context.rb, line 48 def build_request Reynard::Http::Request.new(request_context: @request_context) end
build_request_context()
click to toggle source
# File lib/reynard/context.rb, line 37 def build_request_context RequestContext.new(base_url: @specification.default_base_url) end
copy(**properties)
click to toggle source
# File lib/reynard/context.rb, line 41 def copy(**properties) self.class.new( specification: @specification, request_context: @request_context.copy(**properties) ) end