dox 1.0.1 → 2.0.0.beta2

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.
@@ -3,7 +3,7 @@ module Dox
3
3
  class ResourcePrinter < BasePrinter
4
4
  def print(resource)
5
5
  self.resource = resource
6
- @output.puts resource_title
6
+ add_resources
7
7
 
8
8
  resource.actions.each do |_, action|
9
9
  action_printer.print(action)
@@ -14,16 +14,21 @@ module Dox
14
14
 
15
15
  attr_accessor :resource
16
16
 
17
- def resource_title
18
- <<-HEREDOC
17
+ def add_resources
18
+ add_to_tags
19
+ add_to_groups
20
+ end
21
+
22
+ def add_to_tags
23
+ spec['tags'] = spec['tags'].push(name: resource.name, description: format_desc(resource.desc)).uniq
24
+ end
19
25
 
20
- ## #{resource.name} [#{resource.endpoint}]
21
- #{print_desc(resource.desc)}
22
- HEREDOC
26
+ def add_to_groups
27
+ spec['x-tagGroups'].find { |group| group[:name] == resource.group }['tags'].push(resource.name)
23
28
  end
24
29
 
25
30
  def action_printer
26
- @action_printer ||= ActionPrinter.new(@output)
31
+ @action_printer ||= ActionPrinter.new(spec['paths'])
27
32
  end
28
33
  end
29
34
  end
@@ -2,6 +2,70 @@ module Dox
2
2
  module Util
3
3
  module Http
4
4
  VERB = ['POST', 'GET', 'PUT', 'PATCH', 'DELETE', 'HEAD'].freeze
5
+ HTTP_STATUS_CODES = {
6
+ 100 => 'Continue',
7
+ 101 => 'Switching Protocols',
8
+ 102 => 'Processing',
9
+ 103 => 'Early Hints',
10
+ 200 => 'OK',
11
+ 201 => 'Created',
12
+ 202 => 'Accepted',
13
+ 203 => 'Non-Authoritative Information',
14
+ 204 => 'No Content',
15
+ 205 => 'Reset Content',
16
+ 206 => 'Partial Content',
17
+ 207 => 'Multi-Status',
18
+ 208 => 'Already Reported',
19
+ 226 => 'IM Used',
20
+ 300 => 'Multiple Choices',
21
+ 301 => 'Moved Permanently',
22
+ 302 => 'Found',
23
+ 303 => 'See Other',
24
+ 304 => 'Not Modified',
25
+ 305 => 'Use Proxy',
26
+ 307 => 'Temporary Redirect',
27
+ 308 => 'Permanent Redirect',
28
+ 400 => 'Bad Request',
29
+ 401 => 'Unauthorized',
30
+ 402 => 'Payment Required',
31
+ 403 => 'Forbidden',
32
+ 404 => 'Not Found',
33
+ 405 => 'Method Not Allowed',
34
+ 406 => 'Not Acceptable',
35
+ 407 => 'Proxy Authentication Required',
36
+ 408 => 'Request Timeout',
37
+ 409 => 'Conflict',
38
+ 410 => 'Gone',
39
+ 411 => 'Length Required',
40
+ 412 => 'Precondition Failed',
41
+ 413 => 'Payload Too Large',
42
+ 414 => 'URI Too Long',
43
+ 415 => 'Unsupported Media Type',
44
+ 416 => 'Range Not Satisfiable',
45
+ 417 => 'Expectation Failed',
46
+ 421 => 'Misdirected Request',
47
+ 422 => 'Unprocessable Entity',
48
+ 423 => 'Locked',
49
+ 424 => 'Failed Dependency',
50
+ 425 => 'Too Early',
51
+ 426 => 'Upgrade Required',
52
+ 428 => 'Precondition Required',
53
+ 429 => 'Too Many Requests',
54
+ 431 => 'Request Header Fields Too Large',
55
+ 451 => 'Unavailable for Legal Reasons',
56
+ 500 => 'Internal Server Error',
57
+ 501 => 'Not Implemented',
58
+ 502 => 'Bad Gateway',
59
+ 503 => 'Service Unavailable',
60
+ 504 => 'Gateway Timeout',
61
+ 505 => 'HTTP Version Not Supported',
62
+ 506 => 'Variant Also Negotiates',
63
+ 507 => 'Insufficient Storage',
64
+ 508 => 'Loop Detected',
65
+ 509 => 'Bandwidth Limit Exceeded',
66
+ 510 => 'Not Extended',
67
+ 511 => 'Network Authentication Required'
68
+ }.freeze
5
69
 
6
70
  def self.verb?(value)
7
71
  VERB.include?(value.upcase)
@@ -1,3 +1,3 @@
1
1
  module Dox
2
- VERSION = '1.0.1'
2
+ VERSION = '2.0.0.beta2'.freeze
3
3
  end
metadata CHANGED
@@ -1,60 +1,60 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dox
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.0.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Melita Kokot
8
8
  - Vedran Hrnčić
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-06-10 00:00:00.000000000 Z
12
+ date: 2020-08-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '1.11'
20
+ version: '0'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '1.11'
27
+ version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: rake
29
+ name: codeclimate-test-reporter
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '10.0'
34
+ version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '10.0'
41
+ version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: rspec
43
+ name: json
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - "~>"
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '3.0'
48
+ version: '0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '3.0'
55
+ version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
- name: pry
57
+ name: pry-nav
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - ">="
@@ -68,7 +68,7 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
- name: simplecov
71
+ name: pry-rails
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - ">="
@@ -82,7 +82,7 @@ dependencies:
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
- name: codeclimate-test-reporter
85
+ name: pry-stack_explorer
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - ">="
@@ -96,34 +96,90 @@ dependencies:
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  - !ruby/object:Gem::Dependency
99
- name: rspec-core
99
+ name: rails
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - ">="
103
103
  - !ruby/object:Gem::Version
104
- version: '0'
104
+ version: '4.0'
105
105
  type: :runtime
106
106
  prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '4.0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rake
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '10.0'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '10.0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: rspec
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '3.0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '3.0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rubocop
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ type: :development
148
+ prerelease: false
107
149
  version_requirements: !ruby/object:Gem::Requirement
108
150
  requirements:
109
151
  - - ">="
110
152
  - !ruby/object:Gem::Version
111
153
  version: '0'
112
154
  - !ruby/object:Gem::Dependency
113
- name: rails
155
+ name: simplecov
114
156
  requirement: !ruby/object:Gem::Requirement
115
157
  requirements:
116
158
  - - ">="
117
159
  - !ruby/object:Gem::Version
118
- version: '4.0'
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
168
+ - !ruby/object:Gem::Dependency
169
+ name: rspec-core
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ version: '0'
119
175
  type: :runtime
120
176
  prerelease: false
121
177
  version_requirements: !ruby/object:Gem::Requirement
122
178
  requirements:
123
179
  - - ">="
124
180
  - !ruby/object:Gem::Version
125
- version: '4.0'
126
- description:
181
+ version: '0'
182
+ description:
127
183
  email:
128
184
  - melita.kokot@gmail.com
129
185
  - vrabac266@gmail.com
@@ -166,10 +222,16 @@ files:
166
222
  - lib/dox/errors/invalid_resource_error.rb
167
223
  - lib/dox/errors/invalid_resource_group_error.rb
168
224
  - lib/dox/formatter.rb
225
+ - lib/dox/formatters/base.rb
226
+ - lib/dox/formatters/json.rb
227
+ - lib/dox/formatters/multipart.rb
228
+ - lib/dox/formatters/plain.rb
229
+ - lib/dox/formatters/xml.rb
169
230
  - lib/dox/printers/action_printer.rb
170
231
  - lib/dox/printers/base_printer.rb
171
232
  - lib/dox/printers/document_printer.rb
172
- - lib/dox/printers/example_printer.rb
233
+ - lib/dox/printers/example_request_printer.rb
234
+ - lib/dox/printers/example_response_printer.rb
173
235
  - lib/dox/printers/resource_group_printer.rb
174
236
  - lib/dox/printers/resource_printer.rb
175
237
  - lib/dox/util/http.rb
@@ -179,7 +241,7 @@ licenses:
179
241
  - MIT
180
242
  metadata:
181
243
  allowed_push_host: https://rubygems.org
182
- post_install_message:
244
+ post_install_message:
183
245
  rdoc_options: []
184
246
  require_paths:
185
247
  - lib
@@ -187,16 +249,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
249
  requirements:
188
250
  - - ">="
189
251
  - !ruby/object:Gem::Version
190
- version: '0'
252
+ version: 2.0.0
191
253
  required_rubygems_version: !ruby/object:Gem::Requirement
192
254
  requirements:
193
- - - ">="
255
+ - - ">"
194
256
  - !ruby/object:Gem::Version
195
- version: '0'
257
+ version: 1.3.1
196
258
  requirements: []
197
- rubyforge_project:
198
- rubygems_version: 2.5.1
199
- signing_key:
259
+ rubygems_version: 3.0.3
260
+ signing_key:
200
261
  specification_version: 4
201
- summary: Generates API documentation for rspec in api blueprint format.
262
+ summary: Generates API documentation for rspec in OpenAPI format.
202
263
  test_files: []
@@ -1,110 +0,0 @@
1
- module Dox
2
- module Printers
3
- class ExamplePrinter < BasePrinter
4
- def print(example)
5
- self.example = example
6
- print_example_request
7
- print_example_response
8
- end
9
-
10
- private
11
-
12
- attr_accessor :example
13
-
14
- def print_example_request
15
- @output.puts example_request_title
16
- @output.puts example_request_headers
17
- return unless example.request_body.present?
18
-
19
- @output.puts example_request_body
20
- end
21
-
22
- def print_example_response
23
- @output.puts example_response_title
24
-
25
- if example.response_headers.present?
26
- @output.puts example_response_headers
27
- end
28
-
29
- return unless example.response_body.present?
30
- @output.puts example_response_body
31
- end
32
-
33
- def example_request_title
34
- <<-HEREDOC
35
-
36
- + Request #{example.request_identifier}
37
- **#{example.request_method.upcase}**&nbsp;&nbsp;`#{CGI.unescape(example.request_fullpath)}`
38
- HEREDOC
39
- end
40
-
41
- def example_request_headers
42
- <<-HEREDOC
43
-
44
- + Headers
45
-
46
- #{indent_lines(12, print_headers(example.request_headers))}
47
- HEREDOC
48
- end
49
-
50
- def example_request_body
51
- <<-HEREDOC
52
-
53
- + Body
54
-
55
- #{indent_lines(12, pretty_json(example.request_body))}
56
- HEREDOC
57
- end
58
-
59
- def example_response_title
60
- <<-HEREDOC
61
-
62
- + Response #{example.response_status}
63
- HEREDOC
64
- end
65
-
66
- def example_response_headers
67
- <<-HEREDOC
68
-
69
- + Headers
70
-
71
- #{indent_lines(12, print_headers(example.response_headers))}
72
- HEREDOC
73
- end
74
-
75
- def example_response_body
76
- <<-HEREDOC
77
-
78
- + Body
79
-
80
- #{indent_lines(12, pretty_json(safe_json_parse(example.response_body)))}
81
- HEREDOC
82
- end
83
-
84
- def safe_json_parse(json_string)
85
- json_string.length >= 2 ? JSON.parse(json_string) : nil
86
- end
87
-
88
- def pretty_json(json_string)
89
- if json_string.present?
90
- JSON.pretty_generate(json_string)
91
- else
92
- ''
93
- end
94
- end
95
-
96
- def print_headers(headers)
97
- headers.map do |key, value|
98
- "#{key}: #{value}"
99
- end.join("\n")
100
- end
101
-
102
- def indent_lines(number_of_spaces, string)
103
- string
104
- .split("\n")
105
- .map { |a| a.prepend(' ' * number_of_spaces) }
106
- .join("\n")
107
- end
108
- end
109
- end
110
- end