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.merge!(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 57 58 59 60 61 62 |
# 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? config = Swaggard.configuration server_url = "#{config.schemes.first}://#{config.host}#{config.api_base_path}" info = { 'version' => config.api_version, 'title' => config.title, 'description' => config.description, 'contact' => contact, 'license' => license, } info['termsOfService'] = config.tos if config.tos.present? doc = { 'openapi' => '3.1.0', 'info' => info, 'servers' => [{ 'url' => server_url }], 'tags' => @tags.map { |_, tag| tag.to_doc }, 'paths' => Hash[@paths.values.map { |path| [format_path(path.path), path.to_doc] }], } components = build_components doc['components'] = components unless components.empty? doc['security'] = config.security unless config.security.empty? doc end |