Class: Swaggard::ApiDefinition
- Inherits:
-
Object
- Object
- Swaggard::ApiDefinition
- Defined in:
- lib/swaggard/api_definition.rb
Instance Attribute Summary collapse
-
#definitions ⇒ Object
Returns the value of attribute definitions.
Instance Method Summary collapse
- #add_operation(operation) ⇒ Object
- #add_tag(tag) ⇒ Object
- #ignore_put_if_patch! ⇒ Object
-
#initialize ⇒ ApiDefinition
constructor
A new instance of ApiDefinition.
- #to_doc ⇒ Object
Constructor Details
#initialize ⇒ ApiDefinition
Returns a new instance of ApiDefinition.
7 8 9 10 11 |
# File 'lib/swaggard/api_definition.rb', line 7 def initialize @paths = {} @tags = {} @definitions = [] end |
Instance Attribute Details
#definitions ⇒ Object
Returns the value of attribute definitions.
5 6 7 |
# File 'lib/swaggard/api_definition.rb', line 5 def definitions @definitions end |
Instance Method Details
#add_operation(operation) ⇒ Object
19 20 21 22 23 |
# File 'lib/swaggard/api_definition.rb', line 19 def add_operation(operation) @paths[operation.path] ||= Swagger::Path.new(operation.path) @paths[operation.path].add_operation(operation) @definitions.concat(operation.definitions) end |
#add_tag(tag) ⇒ Object
13 14 15 16 17 |
# File 'lib/swaggard/api_definition.rb', line 13 def add_tag(tag) @tags[tag.name] ||= tag @tags[tag.name].description = tag.description unless tag.description.blank? end |
#ignore_put_if_patch! ⇒ Object
25 26 27 |
# File 'lib/swaggard/api_definition.rb', line 25 def ignore_put_if_patch! @paths.values.each(&:ignore_put_if_patch!) end |
#to_doc ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/swaggard/api_definition.rb', line 29 def to_doc contact = { 'name' => Swaggard.configuration.contact_name } contact['email'] = Swaggard.configuration.contact_email if Swaggard.configuration.contact_email.present? contact['url'] = Swaggard.configuration.contact_url if Swaggard.configuration.contact_url.present? license = { 'name' => Swaggard.configuration.license_name } license['url'] = Swaggard.configuration.license_url if Swaggard.configuration.license_url.present? { 'swagger' => Swaggard.configuration.swagger_version, 'info' => { 'version' => Swaggard.configuration.api_version, 'title' => Swaggard.configuration.title, 'description' => Swaggard.configuration.description, 'termsOfService' => Swaggard.configuration.tos, 'contact' => contact, 'license' => license, }, 'host' => Swaggard.configuration.host, 'basePath' => Swaggard.configuration.api_base_path, 'schemes' => Swaggard.configuration.schemes, 'consumes' => Swaggard.configuration.api_formats.map { |format| "application/#{format}" }, 'produces' => Swaggard.configuration.api_formats.map { |format| "application/#{format}" }, 'tags' => @tags.map { |_, tag| tag.to_doc }, 'paths' => Hash[@paths.values.map { |path| [format_path(path.path), path.to_doc] }], 'definitions' => Hash[@definitions.map { |definition| [definition.id, definition.to_doc] }] } end |