Module: Swagger::Blocks

Defined in:
lib/swagger/blocks.rb,
lib/swagger/blocks/version.rb

Defined Under Namespace

Modules: ClassMethods, InternalHelpers Classes: AllOfNode, ApiAuthorizationNode, ApiAuthorizationScopeNode, ApiAuthorizationsNode, ApiDeclarationNode, ApiNode, AuthorizationCodeNode, ContactNode, DeclarationError, Error, ExampleNode, ExternalDocsNode, GrantTypesNode, HeaderNode, ImplicitNode, InfoNode, ItemsNode, LicenseNode, LoginEndpointNode, ModelNode, ModelsNode, Node, NotFoundError, NotSupportedError, OperationNode, ParameterNode, PathNode, PropertiesNode, PropertyNode, ResourceListingAuthorizationNode, ResourceListingAuthorizationsNode, ResourceNode, ResponseNode, RootNode, SchemaNode, ScopeNode, ScopesNode, SecurityRequirementNode, SecuritySchemeNode, TagNode, TokenEndpointNode, TokenRequestEndpointNode, XmlNode

Constant Summary collapse

VERSION =
'1.1.2'

Class Method Summary collapse

Class Method Details

.build_api_json(resource_name, swaggered_classes) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/swagger/blocks.rb', line 31

def self.build_api_json(resource_name, swaggered_classes)
  data = Swagger::Blocks::InternalHelpers.parse_swaggered_classes(swaggered_classes)
  if !data[:root_node].is_swagger_1_2?
    raise NotSupportedError.new(
      'build_api_json only supports Swagger 1.2, you do not need to call this method ' +
      'for Swagger >= 2.0 definitions.'
    )
  end

  api_node = data[:api_node_map][resource_name.to_sym]
  raise Swagger::Blocks::NotFoundError.new(
    "Not found: swagger_api_root named #{resource_name}") if !api_node

  # Aggregate all model definitions into a new ModelsNode tree and add it to the JSON.
  temp_models_node = Swagger::Blocks::ModelsNode.call(name: 'models') { }
  data[:models_nodes].each { |models_node| temp_models_node.merge!(models_node) }
  result = api_node.as_json
  result.merge!(temp_models_node.as_json) if temp_models_node
  result
end

.build_root_json(swaggered_classes) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/swagger/blocks.rb', line 18

def self.build_root_json(swaggered_classes)
  data = Swagger::Blocks::InternalHelpers.parse_swaggered_classes(swaggered_classes)

  if data[:root_node].is_swagger_2_0?
    data[:root_node].key(:paths, data[:path_nodes]) # Required, so no empty check.
    if data[:schema_nodes] && !data[:schema_nodes].empty?
      data[:root_node].key(:definitions, data[:schema_nodes])
    end
  end

  data[:root_node].as_json
end

.included(base) ⇒ Object

Inject the swagger_root, swagger_api_root, and swagger_model class methods.



14
15
16
# File 'lib/swagger/blocks.rb', line 14

def self.included(base)
  base.extend(ClassMethods)
end