open_api 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.rspec +3 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +15 -0
  6. data/CODE_OF_CONDUCT.md +74 -0
  7. data/Gemfile +6 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +86 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/lib/open_api/callback.rb +22 -0
  14. data/lib/open_api/components.rb +35 -0
  15. data/lib/open_api/contact.rb +23 -0
  16. data/lib/open_api/discriminator.rb +40 -0
  17. data/lib/open_api/encoding.rb +26 -0
  18. data/lib/open_api/equatable_as_content.rb +13 -0
  19. data/lib/open_api/example.rb +24 -0
  20. data/lib/open_api/external_documentation.rb +20 -0
  21. data/lib/open_api/header.rb +42 -0
  22. data/lib/open_api/info.rb +39 -0
  23. data/lib/open_api/license.rb +20 -0
  24. data/lib/open_api/link.rb +50 -0
  25. data/lib/open_api/media_type.rb +34 -0
  26. data/lib/open_api/o_auth_flow.rb +26 -0
  27. data/lib/open_api/o_auth_flows.rb +26 -0
  28. data/lib/open_api/operation.rb +58 -0
  29. data/lib/open_api/parameter.rb +52 -0
  30. data/lib/open_api/path_item.rb +42 -0
  31. data/lib/open_api/paths.rb +26 -0
  32. data/lib/open_api/reference.rb +25 -0
  33. data/lib/open_api/request_body.rb +23 -0
  34. data/lib/open_api/response.rb +34 -0
  35. data/lib/open_api/responses.rb +34 -0
  36. data/lib/open_api/security_requirement.rb +20 -0
  37. data/lib/open_api/security_schema.rb +34 -0
  38. data/lib/open_api/serializers/yaml_serializer.rb +17 -0
  39. data/lib/open_api/serializers.rb +6 -0
  40. data/lib/open_api/server.rb +22 -0
  41. data/lib/open_api/server_variable.rb +22 -0
  42. data/lib/open_api/specification.rb +44 -0
  43. data/lib/open_api/tag.rb +24 -0
  44. data/lib/open_api/version.rb +3 -0
  45. data/lib/open_api/xml.rb +26 -0
  46. data/lib/open_api.rb +47 -0
  47. data/open_api.gemspec +30 -0
  48. metadata +174 -0
@@ -0,0 +1,26 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#oauthFlowObject
3
+ class OAuthFlow
4
+ prepend EquatableAsContent
5
+
6
+ attr_accessor :authorization_url, :token_url, :refresh_url ,:scopes
7
+
8
+ def initialize(authorization_url:, token_url:, refresh_url: nil, scopes:)
9
+ self.authorization_url = authorization_url
10
+ self.token_url = token_url
11
+ self.refresh_url = refresh_url
12
+ self.scopes = scopes.with_indifferent_access
13
+ end
14
+
15
+ def self.load(hash)
16
+ return unless hash
17
+
18
+ new(
19
+ authorization_url: hash["authorizationUrl"],
20
+ token_url: hash["tokenUrl"],
21
+ refresh_url: hash["refreshUrl"],
22
+ scopes: hash["scopes"],
23
+ )
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#oauth-flows-object
3
+ class OAuthFlows
4
+ prepend EquatableAsContent
5
+
6
+ attr_accessor :implicit, :password, :client_credentials, :authorization_code
7
+
8
+ def initialize(implicit: nil, password: nil, client_credentials: nil, authorization_code: nil)
9
+ self.implicit = implicit
10
+ self.password = password
11
+ self.client_credentials = client_credentials
12
+ self.authorization_code = authorization_code
13
+ end
14
+
15
+ def self.load(hash)
16
+ return unless hash
17
+
18
+ new(
19
+ implicit: OAuthFlow.load(hash["implicit"]),
20
+ password: OAuthFlow.load(hash["password"]),
21
+ client_credentials: OAuthFlow.load(hash["clientCredentials"]),
22
+ authorization_code: OAuthFlow.load(hash["authorizationCode"]),
23
+ )
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,58 @@
1
+ module OpenApi
2
+ class Operation
3
+ prepend EquatableAsContent
4
+
5
+ attr_accessor :tags, :summary, :description, :external_docs, :operation_id, :parameters, :request_body, :responses, :callbacks, :deprecated, :security, :servers
6
+
7
+ def initialize(responses:, tags: nil, summary: nil, description: nil, external_docs: nil, operation_id: nil, parameters: nil, request_body: nil, callbacks: nil, deprecated: nil, security: nil, servers: nil)
8
+ self.responses = responses
9
+ self.tags = tags
10
+ self.summary = summary
11
+ self.description = description
12
+ self.external_docs = external_docs
13
+ self.operation_id = operation_id
14
+ self.parameters = parameters
15
+ self.request_body = request_body
16
+ self.callbacks = callbacks
17
+ self.deprecated = deprecated
18
+ self.security = security
19
+ self.servers = servers
20
+ end
21
+
22
+ def serializable_hash
23
+ {
24
+ "description" => description&.to_s,
25
+ "responses" => responses.serializable_hash,
26
+ "tags" => tags&.map(&:to_s),
27
+ "summary" => summary&.to_s,
28
+ "externalDocs" => external_docs&.serializable_hash,
29
+ "operationId" => operation_id&.to_s,
30
+ "parameters" => parameters&.map(&:serializable_hash),
31
+ "requestBody" => request_body&.serializable_hash,
32
+ "callbacks" => callbacks&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_hash,
33
+ "deprecated" => deprecated,
34
+ "security" => security&.map(&:serializable_hash),
35
+ "servers" => servers&.map(&:server),
36
+ }.compact
37
+ end
38
+
39
+ def self.load(hash)
40
+ return unless hash
41
+
42
+ new(
43
+ responses: Responses.load(hash["responses"]),
44
+ tags: hash["tags"],
45
+ summary: hash["summary"]&.to_s,
46
+ description: hash["description"]&.to_s,
47
+ external_docs: ExternalDocumentation.load(hash["externalDocs"]),
48
+ operation_id: hash["operationId"]&.to_s,
49
+ parameters: hash["parameters"]&.map { |h| Reference.load(h) || Parameter.load(h) },
50
+ request_body: Reference.load(hash["requestBody"]) || RequestBody.load(hash["requestBody"]),
51
+ callbacks: hash["callbacks"]&.map { |k, v| [k, Reference.load(v) || Callback.load(v)] }&.to_h,
52
+ deprecated: hash["deprecated"],
53
+ security: hash["security"]&.map { |h| SecurityRequirement.load(h) },
54
+ servers: hash["servers"]&.map { |h| Server.load(h) },
55
+ )
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,52 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#parameterObject
3
+ class Parameter
4
+ prepend EquatableAsContent
5
+
6
+ attr_accessor :name, :in, :description, :required, :deprecated, :allow_empty_value
7
+
8
+ def initialize(name:, in:, description: nil, required: nil, deprecated: nil, allow_empty_value: nil, **other_fields_hash)
9
+ self.name = name
10
+ self.in = binding.local_variable_get(:in) # `in` is reserved keyword
11
+ self.required = required
12
+ self.deprecated = deprecated
13
+ self.allow_empty_value = allow_empty_value
14
+ self.other_fields_hash = other_fields_hash.with_indifferent_access
15
+
16
+ other_fields_hash.keys.each do |key|
17
+ define_singleton_method(key) do
18
+ other_fields_hash[key]
19
+ end
20
+ define_singleton_method("#{key}=") do |value|
21
+ other_fields_hash[key] = value
22
+ end
23
+ end
24
+ end
25
+
26
+ def self.load(hash)
27
+ other_fields_hash = hash.reject { |key|
28
+ key.to_sym.in?([:name, :in, :description, :required, :deprecated, :allow_empty_value])
29
+ }.symbolize_keys.map { |k, v|
30
+ value =
31
+ case k
32
+ when :schema then Schema.load(v)
33
+ end
34
+ [k, value]
35
+ }.to_h
36
+
37
+ new(
38
+ name: hash["name"].to_s,
39
+ in: hash["in"].to_s,
40
+ description: hash["description"]&.to_s,
41
+ required: hash["required"],
42
+ deprecated: hash["deprecated"],
43
+ allow_empty_value: hash["allowEmptyValue"],
44
+ **other_fields_hash,
45
+ )
46
+ end
47
+
48
+ private
49
+
50
+ attr_accessor :other_fields_hash
51
+ end
52
+ end
@@ -0,0 +1,42 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#path-item-object
3
+ class PathItem
4
+ prepend EquatableAsContent
5
+
6
+ attr_accessor :ref, :summary, :description, :servers, :parameters, :operations
7
+
8
+ OPERATION_NAMES = [:get, :put, :post, :delete, :options, :head, :patch, :trace]
9
+
10
+ def initialize(ref: nil, summary: nil, description: nil, servers: nil, parameters: nil, **operations)
11
+ self.ref = ref
12
+ self.summary = summary
13
+ self.description = description
14
+ self.servers = servers
15
+ self.parameters = parameters
16
+ self.operations = operations.with_indifferent_access
17
+ end
18
+
19
+ def serializable_hash
20
+ {
21
+ "ref" => ref&.to_s,
22
+ "summary" => summary&.to_s,
23
+ "description" => description&.to_s,
24
+ "servers" => servers&.map(&:serializable_hash),
25
+ "parameters" => parameters&.map(&:serializable_hash),
26
+ }.merge(operations.map { |k, v| [k.to_s, v.serializable_hash] }.to_h)
27
+ .compact
28
+ end
29
+
30
+ def self.load(hash)
31
+ operations = hash.select { |key| key.to_sym.in?(OPERATION_NAMES) }
32
+ new(
33
+ ref: hash["$ref"]&.to_s,
34
+ summary: hash["summary"]&.to_s,
35
+ description: hash["description"]&.to_s,
36
+ servers: hash["servers"]&.map { |server_hash| Server.load(server_hash) },
37
+ parameters: hash["parameters"]&.map { |h| Reference.load(h) || Parameter.load(h) },
38
+ **operations.map { |k ,v| [k.to_sym, Operation.load(v)] }.to_h,
39
+ )
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,26 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#pathsObject
3
+ class Paths
4
+ extend Forwardable
5
+ prepend EquatableAsContent
6
+
7
+ def initialize(**path_hash)
8
+ self.path_hash = path_hash.with_indifferent_access
9
+ end
10
+
11
+ def_delegator :path_hash, :[]
12
+
13
+ def self.load(hash)
14
+ hash = hash.map { |k, v| [k.to_sym, PathItem.load(v)] }.to_h
15
+ new(**hash)
16
+ end
17
+
18
+ def serializable_hash
19
+ path_hash.map { |k, v| [k.to_s, v.serializable_hash] }.to_h
20
+ end
21
+
22
+ private
23
+
24
+ attr_accessor :path_hash
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#referenceObject
3
+ class Reference
4
+ prepend EquatableAsContent
5
+
6
+ attr_accessor :ref
7
+
8
+ def initialize(ref:)
9
+ self.ref = ref
10
+ end
11
+
12
+ def serializable_hash
13
+ {
14
+ "$ref" => ref.to_s,
15
+ }
16
+ end
17
+
18
+ def self.load(hash)
19
+ return unless hash
20
+ return unless hash["$ref"]
21
+
22
+ new(ref: hash["$ref"])
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ module OpenApi
2
+ class RequestBody
3
+ prepend EquatableAsContent
4
+
5
+ attr_accessor :description, :content, :required
6
+
7
+ def initialize(description: nil, content:, required: false)
8
+ self.description = description
9
+ self.content = content.with_indifferent_access
10
+ self.required = required
11
+ end
12
+
13
+ def self.load(hash)
14
+ return unless hash
15
+
16
+ new(
17
+ description: hash["description"]&.to_s,
18
+ content: hash["content"].map { |k, v| [k, MediaType.load(v)] }.to_h,
19
+ required: hash["required"].nil? ? false : hash["required"]
20
+ )
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,34 @@
1
+ module OpenApi
2
+ class Response
3
+ prepend EquatableAsContent
4
+
5
+ attr_accessor :description, :headers, :content, :links
6
+
7
+ def initialize(description:, headers: nil, content: nil, links: nil)
8
+ self.description = description
9
+ self.headers = headers&.with_indifferent_access
10
+ self.content = content&.with_indifferent_access
11
+ self.links = links&.with_indifferent_access
12
+ end
13
+
14
+ def serializable_hash
15
+ {
16
+ "description" => description.to_s,
17
+ "headers" => headers&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
18
+ "content" => content&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
19
+ "links" => links&.map { |k, v| [k.to_s, v.serializable_hash] }&.to_h,
20
+ }.compact
21
+ end
22
+
23
+ def self.load(hash)
24
+ return unless hash
25
+
26
+ new(
27
+ description: hash["description"].to_s,
28
+ headers: hash["headers"]&.map { |k, v| [k, Header.load(v)] }&.to_h,
29
+ content: hash["content"]&.map { |k, v| [k, MediaType.load(v)] }&.to_h,
30
+ links: hash["links"]&.map { |k, v| [k, Reference.load(v) || Link.load(v)] }&.to_h,
31
+ )
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ module OpenApi
2
+ class Responses
3
+ extend Forwardable
4
+ prepend EquatableAsContent
5
+
6
+ attr_accessor :default
7
+
8
+ def initialize(default: nil, **responses_hash)
9
+ self.default = default
10
+ self.responses_hash = responses_hash.with_indifferent_access
11
+ end
12
+
13
+ def_delegator :responses_hash, :[]
14
+
15
+ def serializable_hash
16
+ {
17
+ "default" => default&.serializable_hash,
18
+ }
19
+ .merge(responses_hash.map { |k, v| [k.to_s, v.serializable_hash] }.to_h)
20
+ .compact
21
+ end
22
+
23
+ def self.load(hash)
24
+ return unless hash
25
+
26
+ hash = hash.map { |k, v| [k.to_s.to_sym, Response.load(v)] }.to_h
27
+ new(**hash)
28
+ end
29
+
30
+ private
31
+
32
+ attr_accessor :responses_hash
33
+ end
34
+ end
@@ -0,0 +1,20 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#security-requirement-object
3
+ class SecurityRequirement
4
+ extend Forwardable
5
+
6
+ def initialize(**hash)
7
+ self.hash = hash.with_indifferent_access
8
+ end
9
+
10
+ def_delegator :hash, :[]
11
+
12
+ def self.load(hash)
13
+ new(**hash.symbolize_keys)
14
+ end
15
+
16
+ private
17
+
18
+ attr_accessor :hash
19
+ end
20
+ end
@@ -0,0 +1,34 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#security-scheme-object
3
+ class SecuritySchema
4
+ prepend EquatableAsContent
5
+
6
+ attr_accessor :type, :description, :name, :in, :scheme, :bearer_format, :flows, :open_id_connect_url
7
+
8
+ def initialize(type:, description: nil, name:, in:, scheme:, bearer_format: nil, flows:, open_id_connect_url:)
9
+ self.type = type
10
+ self.description = description
11
+ self.name = name
12
+ self.in = binding.local_variable_get(:in)
13
+ self.scheme = scheme
14
+ self.bearer_format = bearer_format
15
+ self.flows = flows
16
+ self.open_id_connect_url = open_id_connect_url
17
+ end
18
+
19
+ def self.load(hash)
20
+ return unless hash
21
+
22
+ new(
23
+ type: hash["type"].to_s,
24
+ description: hash["description"]&.to_s,
25
+ name: hash["name"].to_s,
26
+ in: hash["in"].to_s,
27
+ scheme: hash["scheme"].to_s,
28
+ bearer_format: hash["bearerFormat"]&.to_s,
29
+ flows: OAuthFlows.load(hash["flows"]),
30
+ open_id_connect_url: hash["openIdConnectUrl"].to_s,
31
+ )
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,17 @@
1
+ require 'yaml'
2
+
3
+ module OpenApi
4
+ module Serializers
5
+ class YamlSerializer
6
+ def serialize(specification)
7
+ hash = specification.serializable_hash
8
+ YAML.dump(hash)
9
+ end
10
+
11
+ def deserialize(yaml_string)
12
+ hash = YAML.load(yaml_string)
13
+ Specification.load(hash)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,6 @@
1
+ require 'open_api/serializers/yaml_serializer'
2
+
3
+ module OpenApi
4
+ module Serializers
5
+ end
6
+ end
@@ -0,0 +1,22 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#server-object
3
+ class Server
4
+ prepend EquatableAsContent
5
+
6
+ attr_accessor :url, :description, :variables
7
+
8
+ def initialize(url:, description: nil, variables: nil)
9
+ self.url = url
10
+ self.description = description
11
+ self.variables = variables
12
+ end
13
+
14
+ def self.load(hash)
15
+ new(
16
+ url: hash["url"].to_s,
17
+ description: hash["description"]&.to_s,
18
+ variables: hash["variables"]&.map { |h| ServerVariable.load(h) }
19
+ )
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#server-variable-object
3
+ class ServerVariable
4
+ prepend EquatableAsContent
5
+
6
+ attr_accessor :enum, :default, :description
7
+
8
+ def initialize(enum: nil, default:, description: nil)
9
+ self.enum = enum
10
+ self.default = default
11
+ self.description = description
12
+ end
13
+
14
+ def self.load(hash)
15
+ new(
16
+ enum: hash["enum"],
17
+ default: hash["default"],
18
+ description: hash["description"],
19
+ )
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,44 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#oasObject
3
+ class Specification
4
+ prepend EquatableAsContent
5
+
6
+ attr_accessor :openapi, :info, :servers, :paths, :components, :security, :tags, :external_docs
7
+
8
+ def initialize(openapi:, info:, servers: nil, paths:, components: nil, security: nil, tags: nil, external_docs: nil)
9
+ self.openapi = openapi
10
+ self.info = info
11
+ self.paths = paths
12
+ self.components = components
13
+ self.security = security
14
+ self.tags = tags
15
+ self.external_docs = external_docs
16
+ end
17
+
18
+ def serializable_hash
19
+ {
20
+ "openapi" => openapi.to_s,
21
+ "info" => info.serializable_hash,
22
+ "paths" => paths.serializable_hash,
23
+ "components" => components&.serializable_hash,
24
+ "security" => security&.map(&:serializable_hash),
25
+ "tags" => tags&.map(&:serializable_hash),
26
+ "externalDocs" => external_docs&.serializable_hash,
27
+ }.compact
28
+ end
29
+
30
+ def self.load(hash)
31
+ return unless hash
32
+
33
+ new(
34
+ openapi: hash["openapi"].to_s,
35
+ info: Info.load(hash["info"]),
36
+ paths: Paths.load(hash["paths"]),
37
+ components: Components.load(hash["components"]),
38
+ security: hash["security"]&.map { |requirement_hash| SecurityRequirement.load(requirement_hash) },
39
+ tags: hash["tags"]&.map { |tag_hash| Tag.load(tag_hash) },
40
+ external_docs: ExternalDocumentation.load(hash["externalDocs"]),
41
+ )
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,24 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#tagObject
3
+ class Tag
4
+ prepend EquatableAsContent
5
+
6
+ attr_accessor :name, :description, :external_docs
7
+
8
+ def initialize(name:, description: nil, external_docs: nil)
9
+ self.name = name
10
+ self.description = description
11
+ self.external_docs = external_docs
12
+ end
13
+
14
+ def self.load(hash)
15
+ return unless hash
16
+
17
+ new(
18
+ name: hash["name"].to_s,
19
+ description: hash["description"]&.to_s,
20
+ external_docs: ExternalDocumentation.load(hash["externalDocs"]),
21
+ )
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,3 @@
1
+ module OpenApi
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,26 @@
1
+ module OpenApi
2
+ # https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#xml-object
3
+ class Xml
4
+ attr_accessor :name, :namespace, :prefix, :attribute, :wrapped
5
+
6
+ def initialize(name: nil, namespace: nil, prefix: nil, attribute: false, wrapped: false)
7
+ self.name = name
8
+ self.namespace = namespace
9
+ self.prefix = prefix
10
+ self.attribute = attribute
11
+ self.wrapped = wrapped
12
+ end
13
+
14
+ def self.load(hash)
15
+ return unless hash
16
+
17
+ new(
18
+ name: hash["name"],
19
+ namespace: hash["namespace"],
20
+ prefix: hash["prefix"],
21
+ attribute: hash["attribute"],
22
+ wrapped: hash["wrapped"],
23
+ )
24
+ end
25
+ end
26
+ end
data/lib/open_api.rb ADDED
@@ -0,0 +1,47 @@
1
+ # Dependant libraries
2
+ require "active_support"
3
+ require "active_support/core_ext/hash"
4
+ require "active_support/core_ext/string/inflections"
5
+ require "active_support/core_ext/object/inclusion"
6
+
7
+ # open_api/*
8
+ require "open_api/equatable_as_content"
9
+ require "open_api/version"
10
+
11
+ # Models
12
+ require "open_api/specification"
13
+ require "open_api/info"
14
+ require "open_api/contact"
15
+ require "open_api/license"
16
+ require "open_api/server"
17
+ require "open_api/server_variable"
18
+ require "open_api/components"
19
+ require "open_api/paths"
20
+ require "open_api/path_item"
21
+ require "open_api/operation"
22
+ require "open_api/external_documentation"
23
+ require "open_api/parameter"
24
+ require "open_api/request_body"
25
+ require "open_api/media_type"
26
+ require "open_api/encoding"
27
+ require "open_api/responses"
28
+ require "open_api/response"
29
+ require "open_api/callback"
30
+ require "open_api/example"
31
+ require "open_api/link"
32
+ require "open_api/header"
33
+ require "open_api/tag"
34
+ require "open_api/reference"
35
+ require "open_api/schema"
36
+ require "open_api/discriminator"
37
+ require "open_api/xml"
38
+ require "open_api/security_schema"
39
+ require "open_api/o_auth_flows"
40
+ require "open_api/o_auth_flow"
41
+ require "open_api/security_requirement"
42
+
43
+ # Serializer
44
+ require "open_api/serializers"
45
+
46
+ module OpenApi
47
+ end
data/open_api.gemspec ADDED
@@ -0,0 +1,30 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "open_api/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "open_api"
8
+ spec.version = OpenApi::VERSION
9
+ spec.authors = ["Kent Nagata"]
10
+ spec.email = ["ngtknt@me.com"]
11
+
12
+ spec.summary = "Provide PORO of OpenAPI specification"
13
+ spec.description = "It provides PORO of OpenAPI specification. It only support OpenAPI v3."
14
+ spec.homepage = "https://github.com/ngtk/open_api"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_dependency "activesupport", "~> 5.0"
25
+ spec.add_development_dependency "bundler", "~> 1.16"
26
+ spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "rspec", "~> 3.0"
28
+ spec.add_development_dependency "pry"
29
+ spec.add_development_dependency "simplecov"
30
+ end