ruby-swagger 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 (48) hide show
  1. checksums.yaml +7 -0
  2. data/lib/ruby-swagger.rb +7 -0
  3. data/lib/ruby-swagger/data/contact.rb +49 -0
  4. data/lib/ruby-swagger/data/definitions.rb +49 -0
  5. data/lib/ruby-swagger/data/document.rb +181 -0
  6. data/lib/ruby-swagger/data/example.rb +29 -0
  7. data/lib/ruby-swagger/data/external_documentation.rb +24 -0
  8. data/lib/ruby-swagger/data/header.rb +34 -0
  9. data/lib/ruby-swagger/data/headers.rb +48 -0
  10. data/lib/ruby-swagger/data/info.rb +56 -0
  11. data/lib/ruby-swagger/data/items.rb +45 -0
  12. data/lib/ruby-swagger/data/license.rb +51 -0
  13. data/lib/ruby-swagger/data/mime.rb +31 -0
  14. data/lib/ruby-swagger/data/operation.rb +82 -0
  15. data/lib/ruby-swagger/data/parameter.rb +88 -0
  16. data/lib/ruby-swagger/data/parameters.rb +53 -0
  17. data/lib/ruby-swagger/data/path.rb +115 -0
  18. data/lib/ruby-swagger/data/paths.rb +50 -0
  19. data/lib/ruby-swagger/data/reference.rb +30 -0
  20. data/lib/ruby-swagger/data/response.rb +25 -0
  21. data/lib/ruby-swagger/data/responses.rb +50 -0
  22. data/lib/ruby-swagger/data/schema.rb +68 -0
  23. data/lib/ruby-swagger/data/scopes.rb +44 -0
  24. data/lib/ruby-swagger/data/security_definitions.rb +49 -0
  25. data/lib/ruby-swagger/data/security_requirement.rb +35 -0
  26. data/lib/ruby-swagger/data/security_scheme.rb +67 -0
  27. data/lib/ruby-swagger/data/tag.rb +24 -0
  28. data/lib/ruby-swagger/data/url.rb +26 -0
  29. data/lib/ruby-swagger/data/xml_object.rb +15 -0
  30. data/lib/ruby-swagger/grape/grape.rb +2 -0
  31. data/lib/ruby-swagger/grape/grape_config.rb +160 -0
  32. data/lib/ruby-swagger/grape/grape_presenter.rb +48 -0
  33. data/lib/ruby-swagger/grape/grape_template.rb +67 -0
  34. data/lib/ruby-swagger/grape/method.rb +295 -0
  35. data/lib/ruby-swagger/grape/param.rb +33 -0
  36. data/lib/ruby-swagger/grape/route_path.rb +37 -0
  37. data/lib/ruby-swagger/grape/routes.rb +52 -0
  38. data/lib/ruby-swagger/grape/type.rb +141 -0
  39. data/lib/ruby-swagger/io/comparable.rb +30 -0
  40. data/lib/ruby-swagger/io/definitions.rb +48 -0
  41. data/lib/ruby-swagger/io/file_system.rb +97 -0
  42. data/lib/ruby-swagger/io/paths.rb +55 -0
  43. data/lib/ruby-swagger/io/security.rb +45 -0
  44. data/lib/ruby-swagger/object.rb +67 -0
  45. data/lib/ruby-swagger/railtie.rb +7 -0
  46. data/lib/ruby-swagger/template.rb +29 -0
  47. data/lib/tasks/swagger.rake +125 -0
  48. metadata +176 -0
@@ -0,0 +1,50 @@
1
+ require 'ruby-swagger/object'
2
+ require 'ruby-swagger/data/path'
3
+
4
+ module Swagger::Data
5
+ class Paths < Swagger::Object #https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#pathsObject
6
+
7
+ def initialize
8
+ @paths = {}
9
+ end
10
+
11
+ def self.parse(paths)
12
+ raise (ArgumentError.new("Swagger::Data::Paths#parse - paths object is nil")) unless paths
13
+ raise (ArgumentError.new("Swagger::Data::Paths#parse - paths object is not an hash")) unless paths.is_a?(Hash)
14
+
15
+ pts = Swagger::Data::Paths.new
16
+
17
+ paths.each do |path, path_obj|
18
+ pts.add_path(path, path_obj)
19
+ end
20
+
21
+ pts
22
+ end
23
+
24
+ def add_path(path, path_obj)
25
+ raise ArgumentError.new("Swagger::Data::Paths#parse - path is nil") if path.nil? || path.empty?
26
+ raise ArgumentError.new("Swagger::Data::Paths#parse - path object is nil") if path_obj.nil?
27
+
28
+ unless path_obj.is_a?(Swagger::Data::Path)
29
+ path_obj = Swagger::Data::Path.parse(path_obj)
30
+ end
31
+
32
+ @paths[path] = path_obj
33
+ end
34
+
35
+ def [](path)
36
+ @paths[path]
37
+ end
38
+
39
+ def to_swagger
40
+ swag_obj = {}
41
+
42
+ @paths.each do |path, path_obj|
43
+ swag_obj[path] = path_obj.to_swagger
44
+ end
45
+
46
+ swag_obj
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,30 @@
1
+ require 'ruby-swagger/object'
2
+
3
+ module Swagger::Data
4
+ class Reference < Swagger::Object #https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#referenceObject
5
+
6
+ @ref = nil
7
+
8
+ def self.parse(reference)
9
+ return nil unless reference
10
+
11
+ r = Swagger::Data::Reference.new
12
+ r.ref = reference['$ref']
13
+ r
14
+ end
15
+
16
+ def ref=(new_ref)
17
+ raise (ArgumentError.new("Swagger::Data::Reference#ref= $ref is nil")) unless new_ref
18
+ @ref = new_ref
19
+ end
20
+
21
+ def ref
22
+ @ref
23
+ end
24
+
25
+ def as_swagger
26
+ @ref.nil? ? {} : { '$ref' => @ref }
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,25 @@
1
+ require 'ruby-swagger/object'
2
+ require 'ruby-swagger/data/schema'
3
+ require 'ruby-swagger/data/headers'
4
+ require 'ruby-swagger/data/example'
5
+
6
+ module Swagger::Data
7
+ class Response < Swagger::Object # https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#responseObject
8
+
9
+ attr_swagger :description, :schema, :headers, :examples
10
+
11
+ def self.parse(response)
12
+ return nil unless response
13
+
14
+ r = Swagger::Data::Response.new
15
+
16
+ r.description = response['description']
17
+ r.schema = Swagger::Data::Schema.parse(response['schema'])
18
+ r.headers = Swagger::Data::Headers.parse(response['headers'])
19
+ r.examples = Swagger::Data::Example.parse(response['examples'])
20
+
21
+ r
22
+ end
23
+
24
+ end
25
+ end
@@ -0,0 +1,50 @@
1
+ require 'ruby-swagger/object'
2
+ require 'ruby-swagger/data/reference'
3
+ require 'ruby-swagger/data/response'
4
+
5
+ module Swagger::Data
6
+ class Responses < Swagger::Object # https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#responsesObject
7
+
8
+ def initialize
9
+ @responses = {}
10
+ end
11
+
12
+ def self.parse(responses)
13
+ return nil unless responses
14
+
15
+ r = Swagger::Data::Responses.new
16
+
17
+ responses.each do |response_key, response_value|
18
+ r.add_response(response_key, response_value)
19
+ end
20
+
21
+ r
22
+ end
23
+
24
+ def add_response(response_code, response)
25
+ raise ArgumentError.new('Swagger::Data::Responses#add_response - response is nil') unless response
26
+
27
+ if !response.is_a?(Swagger::Data::Reference) && !response.is_a?(Swagger::Data::Response)
28
+ # it's a reference object or it's a parameter object
29
+ response = response['$ref'] ? Swagger::Data::Reference.parse(response) : Swagger::Data::Response.parse(response)
30
+ end
31
+
32
+ @responses[response_code] = response
33
+ end
34
+
35
+ def [](key)
36
+ @responses[key]
37
+ end
38
+
39
+ def as_swagger
40
+ res = {}
41
+
42
+ @responses.each do |other_name, other_value|
43
+ res[other_name] = other_value.to_swagger
44
+ end
45
+
46
+ res
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,68 @@
1
+ require 'ruby-swagger/object'
2
+ require 'ruby-swagger/data/reference'
3
+ require 'ruby-swagger/data/xml_object'
4
+ require 'ruby-swagger/data/external_documentation'
5
+
6
+ module Swagger::Data
7
+ class Schema < Swagger::Object #https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#schemaObject
8
+
9
+ attr_swagger :discriminator, :readOnly, :xml, :externalDocs, :example,
10
+ :format, :title, :description, :default,
11
+ :multipleOf, :maximum, :exclusiveMaximum, :minimum,
12
+ :exclusiveMinimum, :maxLength, :minLength,
13
+ :pattern, :maxItems, :minItems, :uniqueItems, :maxProperties,
14
+ :minProperties, :required, :enum, :type, :items, :allOf,
15
+ :properties, :additionalProperties
16
+
17
+ attr_reader :ref
18
+
19
+ def self.parse(schema)
20
+ return nil if schema.nil?
21
+
22
+ sc = Swagger::Data::Schema.new.bulk_set(schema)
23
+ sc.ref= schema['$ref']
24
+ sc
25
+ end
26
+
27
+ def ref=(new_ref)
28
+ return nil unless new_ref
29
+
30
+ @ref = new_ref
31
+ end
32
+
33
+ def externalDocs=(new_doc)
34
+ return nil unless new_doc
35
+
36
+ if !new_doc.is_a?(Swagger::Data::ExternalDocumentation)
37
+ new_doc = Swagger::Data::ExternalDocumentation.parse(new_doc)
38
+ end
39
+
40
+ @externalDocs = new_doc
41
+ end
42
+
43
+ def xml=(new_xml)
44
+ return nil unless new_xml
45
+
46
+ if !new_xml.is_a?(Swagger::Data::XMLObject)
47
+ new_xml = Swagger::Data::XMLObject.parse(new_xml)
48
+ end
49
+
50
+ @xml = new_xml
51
+ end
52
+
53
+ def []=(attrib, value)
54
+ self.send("#{attrib}=", value)
55
+ end
56
+
57
+ def [](attrib)
58
+ self.send("#{attrib}")
59
+ end
60
+
61
+ def as_swagger
62
+ res = super
63
+ res['$ref'] = @ref if @ref
64
+ res
65
+ end
66
+
67
+ end
68
+ end
@@ -0,0 +1,44 @@
1
+ require 'ruby-swagger/object'
2
+
3
+ module Swagger::Data
4
+ class Scopes < Swagger::Object #https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#scopesObject
5
+
6
+ def initialize
7
+ @scopes = {}
8
+ end
9
+
10
+ def self.parse(scopes)
11
+ return nil unless scopes
12
+
13
+ scope = Swagger::Data::Scopes.new
14
+
15
+ scopes.each do |scope_name, scope_value|
16
+ scope.add_scope(scope_name, scope_value)
17
+ end
18
+
19
+ scope
20
+ end
21
+
22
+ def add_scope(scope_name, scope_value)
23
+ raise ArgumentError.new("Swagger::Data::Scopes#add_scope - scope_name is nil") unless scope_name
24
+ raise ArgumentError.new("Swagger::Data::Scopes#add_scope - scope_value is nil") unless scope_value
25
+
26
+ @scopes[scope_name] = scope_value
27
+ end
28
+
29
+ def [](scope)
30
+ @scopes[scope]
31
+ end
32
+
33
+ def as_swagger
34
+ swagger_scopes = {}
35
+
36
+ @scopes.each do |scope_k, scope_v|
37
+ swagger_scopes[scope_k] = scope_v
38
+ end
39
+
40
+ swagger_scopes
41
+ end
42
+
43
+ end
44
+ end
@@ -0,0 +1,49 @@
1
+ require 'ruby-swagger/object'
2
+ require 'ruby-swagger/data/security_scheme'
3
+
4
+ module Swagger::Data
5
+ class SecurityDefinitions < Swagger::Object #https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#securityDefinitionsObject
6
+
7
+ def initialize
8
+ @security = {}
9
+ end
10
+
11
+ def self.parse(security)
12
+ return nil unless security
13
+
14
+ params = Swagger::Data::SecurityDefinitions.new
15
+
16
+ security.each do |pname, pvalue|
17
+ params.add_param(pname, pvalue)
18
+ end
19
+
20
+ params
21
+ end
22
+
23
+ def add_param(pname, pvalue)
24
+ raise ArgumentError.new("Swagger::Data::SecurityDefinitions#add_param - parameter name is nil") unless pname
25
+ raise ArgumentError.new("Swagger::Data::SecurityDefinitions#add_param - parameter value is nil") unless pvalue
26
+
27
+ if !pvalue.is_a?(Swagger::Data::SecurityScheme)
28
+ pvalue = Swagger::Data::SecurityScheme.parse(pvalue)
29
+ end
30
+
31
+ @security[pname] = pvalue
32
+ end
33
+
34
+ def [](pname)
35
+ @security[pname]
36
+ end
37
+
38
+ def as_swagger
39
+ swagger_params = {}
40
+
41
+ @security.each do |p_k, p_v|
42
+ swagger_params[p_k] = p_v.to_swagger
43
+ end
44
+
45
+ swagger_params
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,35 @@
1
+ require 'ruby-swagger/object'
2
+
3
+ module Swagger::Data
4
+ class SecurityRequirement < Swagger::Object #https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#securityRequirementObject
5
+
6
+ def initialize
7
+ @requirements = {}
8
+ end
9
+
10
+ def self.parse(security)
11
+ return nil unless security
12
+
13
+ s = Swagger::Data::SecurityRequirement.new
14
+ security.each {|key, reqs| s.add_requirement(key, reqs)}
15
+ s
16
+ end
17
+
18
+ def add_requirement(key, requirements)
19
+ raise (ArgumentError.new("Swagger::Data::SecurityRequirement#add_requirement - key is nil")) unless key
20
+ raise (ArgumentError.new("Swagger::Data::SecurityRequirement#add_requirement - requirements is nil")) unless requirements
21
+ raise (ArgumentError.new("Swagger::Data::SecurityRequirement#add_requirement - requirements is not an array")) unless requirements.is_a?(Array)
22
+
23
+ @requirements[key] = requirements
24
+ end
25
+
26
+ def [](key)
27
+ @requirements[key]
28
+ end
29
+
30
+ def as_swagger
31
+ @requirements
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,67 @@
1
+ require 'ruby-swagger/object'
2
+ require 'ruby-swagger/data/scopes'
3
+
4
+ module Swagger::Data
5
+ class SecurityScheme < Swagger::Object #https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#securitySchemeObject
6
+
7
+ attr_swagger :type, :description, :name, :in, :flow, :authorizationUrl, :tokenUrl, :scopes
8
+
9
+ def self.parse(security)
10
+ return nil unless security
11
+
12
+ Swagger::Data::SecurityScheme.new.bulk_set(security)
13
+ end
14
+
15
+ def type=(new_type)
16
+ raise ArgumentError.new("Security::Data::SecurityScheme#type= - type is nil") unless new_type
17
+ raise ArgumentError.new("Security::Data::SecurityScheme#type= - unrecognized type #{new_type}") unless %w(basic apiKey oauth2).include?(new_type)
18
+
19
+ @type = new_type
20
+ end
21
+
22
+ def name=(new_name)
23
+ raise ArgumentError.new("Security::Data::SecurityScheme#name= - name is nil") if @type == 'apiKey' && !new_name
24
+
25
+ @name = new_name
26
+ end
27
+
28
+ def in=(new_in)
29
+ if @type == 'apiKey'
30
+ raise ArgumentError.new("Security::Data::SecurityScheme#in= - in is nil") if !new_in
31
+ raise ArgumentError.new("Security::Data::SecurityScheme#in= - unrecognized in #{new_in}") unless %w(query header).include?(new_in)
32
+ end
33
+
34
+ @in = new_in
35
+ end
36
+
37
+ def flow=(new_flow)
38
+ if @type == 'oauth2'
39
+ raise ArgumentError.new("Security::Data::SecurityScheme#flow= - flow is nil") if !new_flow
40
+ raise ArgumentError.new("Security::Data::SecurityScheme#flow= - unrecognized flow #{new_flow}") unless %w(implicit password application accessCode).include?(new_flow)
41
+ end
42
+
43
+ @flow = new_flow
44
+ end
45
+
46
+ def authorizationUrl=(new_authorizationUrl)
47
+ raise ArgumentError.new("Security::Data::SecurityScheme#authorizationUrl= - authorizationUrl is nil") if @type == 'oauth2' && (@flow == 'implicit' || @flow == 'accessCode') && !new_authorizationUrl
48
+
49
+ @authorizationUrl = new_authorizationUrl
50
+ end
51
+
52
+ def tokenUrl=(new_tokenUrl)
53
+ raise ArgumentError.new("Security::Data::SecurityScheme#tokenUrl= - tokenUrl is nil") if @type == 'oauth2' && (@flow == 'password' || @flow == 'application' || @flow == 'accessCode') && !new_tokenUrl
54
+
55
+ @tokenUrl = new_tokenUrl
56
+ end
57
+
58
+ def scopes=(new_scopes)
59
+ raise ArgumentError.new("Security::Data::SecurityScheme#scopes= - scopes is nil") if @type == 'oauth2' && !new_scopes
60
+
61
+ new_scopes = Swagger::Data::Scopes.parse(new_scopes) if(!new_scopes.is_a?(Swagger::Data::Scopes))
62
+
63
+ @scopes = new_scopes
64
+ end
65
+
66
+ end
67
+ end
@@ -0,0 +1,24 @@
1
+ require 'ruby-swagger/object'
2
+ require 'ruby-swagger/data/external_documentation'
3
+
4
+ module Swagger::Data
5
+ class Tag < Swagger::Object #https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#tag-object
6
+
7
+ attr_swagger :name, :description, :externalDocs
8
+
9
+ def self.parse(xml_object)
10
+ return nil unless xml_object
11
+
12
+ Swagger::Data::Tag.new.bulk_set(xml_object)
13
+ end
14
+
15
+ def externalDocs=(newDoc)
16
+ return nil unless newDoc
17
+
18
+ newDoc = Swagger::Data::ExternalDocumentation.parse(newDoc) unless newDoc.is_a?(Swagger::Data::ExternalDocumentation)
19
+
20
+ @externalDocs=newDoc
21
+ end
22
+
23
+ end
24
+ end