Module: Sinatra::SwaggerExposer

Defined in:
lib/sinatra/swagger-exposer/swagger-exposer.rb,
lib/sinatra/swagger-exposer/version.rb,
lib/sinatra/swagger-exposer/swagger-info.rb,
lib/sinatra/swagger-exposer/swagger-type.rb,
lib/sinatra/swagger-exposer/swagger-endpoint.rb,
lib/sinatra/swagger-exposer/swagger-utilities.rb,
lib/sinatra/swagger-exposer/swagger-type-property.rb,
lib/sinatra/swagger-exposer/swagger-content-creator.rb,
lib/sinatra/swagger-exposer/swagger-endpoint-response.rb,
lib/sinatra/swagger-exposer/swagger-invalid-exception.rb,
lib/sinatra/swagger-exposer/swagger-endpoint-parameter.rb

Overview

Expose swagger API from your Sinatra app

Defined Under Namespace

Modules: SwaggerUtilities Classes: SwaggerContentCreator, SwaggerEndpoint, SwaggerEndpointParameter, SwaggerEndpointResponse, SwaggerInfo, SwaggerInvalidException, SwaggerType, SwaggerTypeProperty

Constant Summary collapse

VERSION =
'0.0.1'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.registered(app) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 18

def self.registered(app)
  app.set :swagger_endpoints, []
  app.set :swagger_current_endpoint_info, {}
  app.set :swagger_current_endpoint_parameters, {}
  app.set :swagger_current_endpoint_responses, {}
  app.set :swagger_types, {}

  # Declare the swagger endpoints
  app.endpoint_summary 'The swagger endpoint'
  app.endpoint_tags 'swagger'
  app.get '/swagger_doc.json' do
    swagger_content = ::Sinatra::SwaggerExposer::SwaggerContentCreator.new(
        settings.respond_to?(:swagger_info) ? settings.swagger_info : nil ,
        settings.swagger_types,
        settings.swagger_endpoints
    ).to_swagger
    content_type :json
    swagger_content.to_json
  end

  app.endpoint_summary 'Option method for the swagger endpoint, useful for some CORS stuff'
  app.endpoint_tags 'swagger'
  app.options '/swagger_doc.json' do
    200
  end

end

Instance Method Details

#delete(*args, &block) ⇒ Object



96
97
98
99
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 96

def delete(*args, &block)
  process_endpoint('delete', args)
  super(*args, &block)
end

#endpoint_description(description) ⇒ Object

Provide a description for the endpoint



52
53
54
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 52

def endpoint_description(description)
  set_if_type_and_not_exist(description, 'description', String)
end

#endpoint_parameter(name, description, how_to_pass, required, type, params = nil) ⇒ Object

Define parameter for the endpoint



62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 62

def endpoint_parameter(name, description, how_to_pass, required, type, params = nil)
  parameters = settings.swagger_current_endpoint_parameters
  check_if_not_duplicate(name, parameters, 'Parameter')
  parameters[name] = SwaggerEndpointParameter.new(
      name,
      description,
      how_to_pass,
      required,
      type,
      params,
      settings.swagger_types.keys)
end

#endpoint_response(code, type = nil, description = nil) ⇒ Object

Declare a response



90
91
92
93
94
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 90

def endpoint_response(code, type = nil, description = nil)
  responses = settings.swagger_current_endpoint_responses
  check_if_not_duplicate(code, responses, 'Response')
  responses[code] = SwaggerEndpointResponse.new(type, description, settings.swagger_types.keys)
end

#endpoint_summary(summary) ⇒ Object

Provide a summary for the endpoint



47
48
49
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 47

def endpoint_summary(summary)
  set_if_type_and_not_exist(summary, 'summary', String)
end

#endpoint_tags(*tags) ⇒ Object

Provide tags for the endpoint



57
58
59
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 57

def endpoint_tags(*tags)
  set_if_type_and_not_exist(tags, 'tags', nil)
end

#general_info(params) ⇒ Object

General information



76
77
78
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 76

def general_info(params)
  set :swagger_info, SwaggerInfo.new(params)
end

#get(*args, &block) ⇒ Object



101
102
103
104
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 101

def get(*args, &block)
  process_endpoint('get', args)
  super(*args, &block)
end

#head(*args, &block) ⇒ Object



106
107
108
109
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 106

def head(*args, &block)
  process_endpoint('head', args)
  super(*args, &block)
end


111
112
113
114
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 111

def link(*args, &block)
  process_endpoint('link', args)
  super(*args, &block)
end

#options(*args, &block) ⇒ Object



116
117
118
119
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 116

def options(*args, &block)
  process_endpoint('options', args)
  super(*args, &block)
end

#patch(*args, &block) ⇒ Object



121
122
123
124
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 121

def patch(*args, &block)
  process_endpoint('patch', args)
  super(*args, &block)
end

#post(*args, &block) ⇒ Object



126
127
128
129
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 126

def post(*args, &block)
  process_endpoint('post', args)
  super(*args, &block)
end

#put(*args, &block) ⇒ Object



131
132
133
134
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 131

def put(*args, &block)
  process_endpoint('put', args)
  super(*args, &block)
end

#type(name, params) ⇒ Object

Declare a type



81
82
83
84
85
86
87
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 81

def type(name, params)
  types = settings.swagger_types
  if types.key? name
    raise SwaggerInvalidException.new("Type [#{name}] already exist with value #{types[name]}")
  end
  types[name] = SwaggerType.new(name, params, settings.swagger_types.keys)
end


136
137
138
139
# File 'lib/sinatra/swagger-exposer/swagger-exposer.rb', line 136

def unlink(*args, &block)
  process_endpoint('unlink', args)
  super(*args, &block)
end