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
-
#delete(*args, &block) ⇒ Object
-
#endpoint_description(description) ⇒ Object
Provide a description for the endpoint.
-
#endpoint_parameter(name, description, how_to_pass, required, type, params = nil) ⇒ Object
Define parameter for the endpoint.
-
#endpoint_response(code, type = nil, description = nil) ⇒ Object
-
#endpoint_summary(summary) ⇒ Object
Provide a summary for the endpoint.
-
#endpoint_tags(*tags) ⇒ Object
Provide tags for the endpoint.
-
#general_info(params) ⇒ Object
-
#get(*args, &block) ⇒ Object
-
#head(*args, &block) ⇒ Object
-
#link(*args, &block) ⇒ Object
-
#options(*args, &block) ⇒ Object
-
#patch(*args, &block) ⇒ Object
-
#post(*args, &block) ⇒ Object
-
#put(*args, &block) ⇒ Object
-
#type(name, params) ⇒ Object
-
#unlink(*args, &block) ⇒ Object
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, {}
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
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
|
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
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
|
#link(*args, &block) ⇒ Object
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
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
|
#unlink(*args, &block) ⇒ Object
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
|