Class: Swaggard::ApiDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/swaggard/api_definition.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeApiDefinition

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

#definitionsObject

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_docObject



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