class Swarker::Path

Constants

DEFAULT_SCHEMA

Attributes

name[R]
original_schema[R]
preparsed[R]
preparsed?[R]
schema[R]

Public Class Methods

new(name, original_schema, preparsed = false) click to toggle source
# File lib/swarker/path.rb, line 9
def initialize(name, original_schema, preparsed = false)
  @name            = name
  @original_schema = HashWithIndifferentAccess.new(original_schema)
  @preparsed       = preparsed

  parse_schema
end

Public Instance Methods

verb() click to toggle source
# File lib/swarker/path.rb, line 17
def verb
  # Lurker schema has only one request verb per file
  @verb ||= @preparsed ? @schema.keys.first : original_schema[:extensions][:method].downcase
end

Private Instance Methods

computed_schema() click to toggle source
# File lib/swarker/path.rb, line 35
def computed_schema
  {
    description: original_schema[:description],
    tags:        [original_schema[:prefix]],
    parameters:  PathParameters.new(original_schema).parameters,
    responses:   responses
  }
end
create_schema() click to toggle source
# File lib/swarker/path.rb, line 31
def create_schema
  HashWithIndifferentAccess.new(verb => DEFAULT_SCHEMA.merge(computed_schema))
end
parse_schema() click to toggle source
# File lib/swarker/path.rb, line 27
def parse_schema
  @schema = preparsed? ? @original_schema : create_schema
end
response_code() click to toggle source
# File lib/swarker/path.rb, line 53
def response_code
  # Lurker schema has only one response code per file
  @original_schema[:responseCodes].first[:status].to_s
end
response_schema() click to toggle source
# File lib/swarker/path.rb, line 58
def response_schema
  response_schema = @original_schema[:responseParameters].dup
  response_schema[:items].reject! { |k| k.to_sym == :required } if response_schema[:items]

  response_schema['$ref'].sub!(%r{.json#/}, '').sub!(%r{(\.\./)+}, '#/') if response_schema['$ref']

  response_schema
end
responses() click to toggle source
# File lib/swarker/path.rb, line 44
def responses
  {
    response_code => {
      description: '',
      schema:      response_schema
    }
  }
end