class APIBlueprint::OutputCollector
Collects example for API documentation
Attributes
configuration[RW]
resource_parameters[RW]
resources[RW]
Public Class Methods
new(configuration)
click to toggle source
# File lib/api_blueprint/output_collector.rb, line 8 def initialize(configuration) @configuration = configuration @resources = {} @resource_parameters = {} end
Public Instance Methods
add_example(metadata, example_block, request, response)
click to toggle source
# File lib/api_blueprint/output_collector.rb, line 14 def add_example(metadata, example_block, request, response) @resources.deep_merge!( metadata[:resource_group] => build_resource(example_block, metadata, request, response) ) end
Private Instance Methods
build_action(example_block, metadata, request, response)
click to toggle source
# File lib/api_blueprint/output_collector.rb, line 34 def build_action(example_block, metadata, request, response) example_description = metadata[:example_description] || metadata[:description].tr('()', '/') { description: metadata[:action_description], examples: { example_description => build_example(example_block, metadata, request, response) } } end
build_example(example_block, metadata, request, response)
click to toggle source
# File lib/api_blueprint/output_collector.rb, line 47 def build_example(example_block, metadata, request, response) { request: build_request(request), source: example_block.source, location: metadata[:location], response: build_response(response) } end
build_request(request)
click to toggle source
# File lib/api_blueprint/output_collector.rb, line 56 def build_request(request) { parameters: request_parameters(request), format: request.format } end
build_resource(example_block, metadata, request, response)
click to toggle source
# File lib/api_blueprint/output_collector.rb, line 23 def build_resource(example_block, metadata, request, response) @resource_parameters[metadata[:resource]] = metadata[:resource_parameters] { metadata[:resource] => { metadata[:action] => build_action(example_block, metadata, request, response) } } end
build_response(response)
click to toggle source
# File lib/api_blueprint/output_collector.rb, line 70 def build_response(response) { status: response.status, content_type: response.content_type.to_s, body: response_body(response) } end
request_parameters(request)
click to toggle source
# File lib/api_blueprint/output_collector.rb, line 63 def request_parameters(request) path_params = request.path_parameters.keys.map(&:to_s) request.parameters.except(*path_params).to_json rescue Encoding::UndefinedConversionError 'binary' end
response_body(response)
click to toggle source
# File lib/api_blueprint/output_collector.rb, line 78 def response_body(response) if response['Content-Transfer-Encoding'] == 'binary' 'binary' else response.body end end