swagger_parser 0.0.1

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 (52) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +3 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +11 -0
  8. data/Rakefile +1 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +7 -0
  11. data/examples/swagger.json +1038 -0
  12. data/examples/swagger.yml +701 -0
  13. data/lib/swagger_parser/contact.rb +20 -0
  14. data/lib/swagger_parser/definitions.rb +13 -0
  15. data/lib/swagger_parser/enumerable_object.rb +30 -0
  16. data/lib/swagger_parser/errors/base_error.rb +6 -0
  17. data/lib/swagger_parser/errors/file_parsing_error.rb +8 -0
  18. data/lib/swagger_parser/examples.rb +12 -0
  19. data/lib/swagger_parser/extendable.rb +10 -0
  20. data/lib/swagger_parser/external_docs_attributable.rb +12 -0
  21. data/lib/swagger_parser/external_documentation.rb +6 -0
  22. data/lib/swagger_parser/file_parser.rb +58 -0
  23. data/lib/swagger_parser/header.rb +6 -0
  24. data/lib/swagger_parser/headers.rb +13 -0
  25. data/lib/swagger_parser/info.rb +40 -0
  26. data/lib/swagger_parser/items.rb +8 -0
  27. data/lib/swagger_parser/json_schema.rb +23 -0
  28. data/lib/swagger_parser/license.rb +15 -0
  29. data/lib/swagger_parser/minimal_json_schema.rb +91 -0
  30. data/lib/swagger_parser/operation.rb +67 -0
  31. data/lib/swagger_parser/parameter.rb +59 -0
  32. data/lib/swagger_parser/parameters.rb +13 -0
  33. data/lib/swagger_parser/path.rb +65 -0
  34. data/lib/swagger_parser/paths.rb +16 -0
  35. data/lib/swagger_parser/referable.rb +8 -0
  36. data/lib/swagger_parser/reference.rb +8 -0
  37. data/lib/swagger_parser/response.rb +31 -0
  38. data/lib/swagger_parser/response_definitions.rb +13 -0
  39. data/lib/swagger_parser/responses.rb +18 -0
  40. data/lib/swagger_parser/schema.rb +29 -0
  41. data/lib/swagger_parser/scopes.rb +12 -0
  42. data/lib/swagger_parser/security.rb +12 -0
  43. data/lib/swagger_parser/security_definitions.rb +13 -0
  44. data/lib/swagger_parser/security_scheme.rb +51 -0
  45. data/lib/swagger_parser/source_based_object.rb +10 -0
  46. data/lib/swagger_parser/swagger.rb +112 -0
  47. data/lib/swagger_parser/tag.rb +20 -0
  48. data/lib/swagger_parser/version.rb +3 -0
  49. data/lib/swagger_parser/xml.rb +30 -0
  50. data/lib/swagger_parser.rb +2 -0
  51. data/swagger_parser.gemspec +20 -0
  52. metadata +137 -0
@@ -0,0 +1,29 @@
1
+ require "swagger_parser/external_docs_attributable"
2
+ require "swagger_parser/json_schema"
3
+ require "swagger_parser/xml"
4
+
5
+ module SwaggerParser
6
+ class Schema < JsonSchema
7
+ include SwaggerParser::ExternalDocsAttributable
8
+
9
+ # @return [Object]
10
+ def discriminator
11
+ source["discriminator"]
12
+ end
13
+
14
+ # @return [Object]
15
+ def example
16
+ source["example"]
17
+ end
18
+
19
+ # @return [false, true]
20
+ def read_only
21
+ !!source["readOnly"]
22
+ end
23
+
24
+ # @return [Object]
25
+ def xml
26
+ SwaggerParser::Xml.new(source["xml"])
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,12 @@
1
+ require "swagger_parser/enumerable_object"
2
+
3
+ module SwaggerParser
4
+ class Scopes < EnumerableObject
5
+ private
6
+
7
+ # @note Implementation for SwaggerParser::EnumerableObject
8
+ def build_element(value)
9
+ value
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ require "swagger_parser/enumerable_object"
2
+
3
+ module SwaggerParser
4
+ class Security < EnumerableObject
5
+ private
6
+
7
+ # @note Implementation for SwaggerParser::EnumerableObject
8
+ def build_element(value)
9
+ value
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ require "swagger_parser/enumerable_object"
2
+ require "swagger_parser/security_scheme"
3
+
4
+ module SwaggerParser
5
+ class SecurityDefinitions < EnumerableObject
6
+ private
7
+
8
+ # @note Implementation for SwaggerParser::EnumerableObject
9
+ def build_element(value)
10
+ SwaggerParser::SecurityScheme.new(value)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,51 @@
1
+ require "swagger_parser/extendable"
2
+ require "swagger_parser/scopes"
3
+ require "swagger_parser/source_based_object"
4
+
5
+ module SwaggerParser
6
+ class SecurityScheme < SourceBasedObject
7
+ include SwaggerParser::Extendable
8
+
9
+ # @return [Object]
10
+ def authorization_url
11
+ source["authorizationUrl"]
12
+ end
13
+
14
+ # @return [Object]
15
+ def description
16
+ source["description"]
17
+ end
18
+
19
+ # @return [Object]
20
+ def flow
21
+ source["flow"]
22
+ end
23
+
24
+ # @return [Object]
25
+ def in
26
+ source["in"]
27
+ end
28
+
29
+ # @return [Object]
30
+ def name
31
+ source["name"]
32
+ end
33
+
34
+ # @return [SwaggerParser::Scopes, nil]
35
+ def scopes
36
+ if source["scopes"]
37
+ SwaggerParser::Scopes.new(source["scopes"])
38
+ end
39
+ end
40
+
41
+ # @return [Object]
42
+ def token_url
43
+ source["tokenUrl"]
44
+ end
45
+
46
+ # @return [Object]
47
+ def type
48
+ source["type"]
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,10 @@
1
+ module SwaggerParser
2
+ class SourceBasedObject
3
+ attr_reader :source
4
+
5
+ # @param [Object] source
6
+ def initialize(source)
7
+ @source = source
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,112 @@
1
+ require "swagger_parser/definitions"
2
+ require "swagger_parser/external_docs_attributable"
3
+ require "swagger_parser/info"
4
+ require "swagger_parser/parameters"
5
+ require "swagger_parser/paths"
6
+ require "swagger_parser/response_definitions"
7
+ require "swagger_parser/security"
8
+ require "swagger_parser/security_definitions"
9
+ require "swagger_parser/source_based_object"
10
+ require "swagger_parser/tag"
11
+
12
+ module SwaggerParser
13
+ class Swagger < SourceBasedObject
14
+ include SwaggerParser::ExternalDocsAttributable
15
+
16
+ # @return [Object]
17
+ def base_path
18
+ source["basePath"]
19
+ end
20
+
21
+ # @return [Object]
22
+ def consumes
23
+ source["consumes"] || []
24
+ end
25
+
26
+ # @return [SwaggerParser::Definitions]
27
+ def definitions
28
+ SwaggerParser::Definitions.new(source["definitions"] || {})
29
+ end
30
+
31
+ # @return [Array<SwaggerParser::Error>]
32
+ def errors
33
+ @__errors ||= []
34
+ end
35
+
36
+ # @return [Object]
37
+ def host
38
+ source["host"]
39
+ end
40
+
41
+ # @return [SwaggerParser::Info]
42
+ def info
43
+ SwaggerParser::Info.new(source["info"])
44
+ end
45
+
46
+ # @return [SwaggerParser::Parameters]
47
+ def parameters
48
+ SwaggerParser::Parameters.new(source["parameters"] || {})
49
+ end
50
+
51
+ # @return [SwaggerParser::Paths]
52
+ def paths
53
+ SwaggerParser::Paths.new(source["paths"])
54
+ end
55
+
56
+ # @return [Object]
57
+ def produces
58
+ source["produces"] || []
59
+ end
60
+
61
+ # @return [SwaggerParser::ResponseDefinitions]
62
+ def responses
63
+ SwaggerParser::ResponseDefinitions.new(source["responses"] || {})
64
+ end
65
+
66
+ # @return [Object]
67
+ def schemes
68
+ source["schemes"]
69
+ end
70
+
71
+ # @return [SwaggerParser::Security]
72
+ def security
73
+ SwaggerParser::Security.new(source["security"] || {})
74
+ end
75
+
76
+ # @return [SwaggerParser::SecurityDefinitions]
77
+ def security_definitions
78
+ SwaggerParser::SecurityDefinitions.new(source["securityDefinitions"] || {})
79
+ end
80
+
81
+ # @return [Object]
82
+ def swagger
83
+ source["swagger"]
84
+ end
85
+
86
+ # @return [Array<SwaggerParser::Tag>]
87
+ def tags
88
+ (source["tags"] || []).map do |element|
89
+ SwaggerParser::Tag.new(element)
90
+ end
91
+ end
92
+
93
+ # @return [false, true]
94
+ def valid?
95
+ collect_errors
96
+ errors.empty?
97
+ end
98
+
99
+ private
100
+
101
+ def collect_errors
102
+ unless has_hash_source?
103
+ errors |= SwaggerParser::Error.new("Swagger source is not a Hash")
104
+ end
105
+ end
106
+
107
+ # @return [false, true]
108
+ def has_hash_source?
109
+ source.is_a?(Hash)
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,20 @@
1
+ require "swagger_parser/extendable"
2
+ require "swagger_parser/external_docs_attributable"
3
+ require "swagger_parser/source_based_object"
4
+
5
+ module SwaggerParser
6
+ class Tag < SourceBasedObject
7
+ include SwaggerParser::Extendable
8
+ include SwaggerParser::ExternalDocsAttributable
9
+
10
+ # @return [Object]
11
+ def description
12
+ source["description"]
13
+ end
14
+
15
+ # @return [Object]
16
+ def name
17
+ source["name"]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ module SwaggerParser
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,30 @@
1
+ require "swagger_parser/source_based_object"
2
+
3
+ module SwaggerParser
4
+ class Xml < SourceBasedObject
5
+ # @return [false, true]
6
+ def attribute
7
+ !!source["attribute"]
8
+ end
9
+
10
+ # @return [Object]
11
+ def name
12
+ source["name"]
13
+ end
14
+
15
+ # @return [Object]
16
+ def namespace
17
+ source["namespace"]
18
+ end
19
+
20
+ # @return [Object]
21
+ def prefix
22
+ source["prefix"]
23
+ end
24
+
25
+ # @return [false, true]
26
+ def wrapped
27
+ !!source["wrapped"]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,2 @@
1
+ require "swagger_parser/file_parser"
2
+ require "swagger_parser/version"
@@ -0,0 +1,20 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "swagger_parser/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "swagger_parser"
7
+ spec.version = SwaggerParser::VERSION
8
+ spec.authors = ["Ryo Nakamura"]
9
+ spec.email = ["r7kamura@gmail.com"]
10
+ spec.summary = "Swagger schema parser."
11
+ spec.homepage = "https://github.com/r7kamura/swagger_parser"
12
+ spec.license = "MIT"
13
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
14
+ spec.bindir = "exe"
15
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
16
+ spec.require_paths = ["lib"]
17
+ spec.add_development_dependency "bundler", "~> 1.9"
18
+ spec.add_development_dependency "rake", "~> 10.0"
19
+ spec.add_development_dependency "rspec", "3.3.0"
20
+ end
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: swagger_parser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Ryo Nakamura
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-07-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.9'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.9'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 3.3.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 3.3.0
55
+ description:
56
+ email:
57
+ - r7kamura@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - ".travis.yml"
65
+ - Gemfile
66
+ - LICENSE.txt
67
+ - README.md
68
+ - Rakefile
69
+ - bin/console
70
+ - bin/setup
71
+ - examples/swagger.json
72
+ - examples/swagger.yml
73
+ - lib/swagger_parser.rb
74
+ - lib/swagger_parser/contact.rb
75
+ - lib/swagger_parser/definitions.rb
76
+ - lib/swagger_parser/enumerable_object.rb
77
+ - lib/swagger_parser/errors/base_error.rb
78
+ - lib/swagger_parser/errors/file_parsing_error.rb
79
+ - lib/swagger_parser/examples.rb
80
+ - lib/swagger_parser/extendable.rb
81
+ - lib/swagger_parser/external_docs_attributable.rb
82
+ - lib/swagger_parser/external_documentation.rb
83
+ - lib/swagger_parser/file_parser.rb
84
+ - lib/swagger_parser/header.rb
85
+ - lib/swagger_parser/headers.rb
86
+ - lib/swagger_parser/info.rb
87
+ - lib/swagger_parser/items.rb
88
+ - lib/swagger_parser/json_schema.rb
89
+ - lib/swagger_parser/license.rb
90
+ - lib/swagger_parser/minimal_json_schema.rb
91
+ - lib/swagger_parser/operation.rb
92
+ - lib/swagger_parser/parameter.rb
93
+ - lib/swagger_parser/parameters.rb
94
+ - lib/swagger_parser/path.rb
95
+ - lib/swagger_parser/paths.rb
96
+ - lib/swagger_parser/referable.rb
97
+ - lib/swagger_parser/reference.rb
98
+ - lib/swagger_parser/response.rb
99
+ - lib/swagger_parser/response_definitions.rb
100
+ - lib/swagger_parser/responses.rb
101
+ - lib/swagger_parser/schema.rb
102
+ - lib/swagger_parser/scopes.rb
103
+ - lib/swagger_parser/security.rb
104
+ - lib/swagger_parser/security_definitions.rb
105
+ - lib/swagger_parser/security_scheme.rb
106
+ - lib/swagger_parser/source_based_object.rb
107
+ - lib/swagger_parser/swagger.rb
108
+ - lib/swagger_parser/tag.rb
109
+ - lib/swagger_parser/version.rb
110
+ - lib/swagger_parser/xml.rb
111
+ - swagger_parser.gemspec
112
+ homepage: https://github.com/r7kamura/swagger_parser
113
+ licenses:
114
+ - MIT
115
+ metadata: {}
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ requirements: []
131
+ rubyforge_project:
132
+ rubygems_version: 2.4.5
133
+ signing_key:
134
+ specification_version: 4
135
+ summary: Swagger schema parser.
136
+ test_files: []
137
+ has_rdoc: