class JsonapiSwaggerHelpers::PayloadDefinition
Attributes
payload[R]
Public Class Methods
new(payload)
click to toggle source
# File lib/jsonapi_swagger_helpers/payload_definition.rb, line 31 def initialize(payload) @payload = payload end
swagger_type_for(payload_name, attribute, type)
click to toggle source
Given a spec payload like:
key(:name, String)
Return the corresponding swagger type, ie :string If a key has multiple types, we'll pick the first swagger type that matches:
key(:total, [String, Integer]) => :string
# File lib/jsonapi_swagger_helpers/payload_definition.rb, line 13 def self.swagger_type_for(payload_name, attribute, type) types = Array(type) return :string if types.empty? type_mapping.each_pair do |swagger_type, klasses| if types.any? { |t| klasses.include?(t) } return swagger_type end end raise JsonapiSwaggerHelpers::Errors::TypeNotFound .new(payload_name, attribute) end
type_mapping()
click to toggle source
# File lib/jsonapi_swagger_helpers/payload_definition.rb, line 27 def self.type_mapping JsonapiSwaggerHelpers.config.type_mapping end
Public Instance Methods
context()
click to toggle source
# File lib/jsonapi_swagger_helpers/payload_definition.rb, line 35 def context JsonapiSwaggerHelpers.docs_controller end
generate()
click to toggle source
# File lib/jsonapi_swagger_helpers/payload_definition.rb, line 43 def generate _self = self context.send(:swagger_schema, payload.name) do payload = _self.payload payload.keys.each_pair do |attribute, config| property attribute do type = _self.class.swagger_type_for(payload.name, attribute, config[:type]) key :type, type if config[:description] key :description, config[:description] end end end end end
jsonapi_type()
click to toggle source
# File lib/jsonapi_swagger_helpers/payload_definition.rb, line 39 def jsonapi_type payload.type end