rspec_api_documentation 4.4.0 → 4.5.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.
- checksums.yaml +4 -4
- data/lib/rspec_api_documentation.rb +1 -1
- data/lib/rspec_api_documentation/client_base.rb +12 -1
- data/lib/rspec_api_documentation/dsl/endpoint.rb +15 -7
- data/lib/rspec_api_documentation/dsl/resource.rb +6 -3
- data/lib/rspec_api_documentation/views/markup_example.rb +15 -0
- data/lib/rspec_api_documentation/writers/json_writer.rb +3 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8626bf0bd0d6df280166c00c348fa3223d989f74
|
4
|
+
data.tar.gz: d95564e9c4135d446e3652cc4186290aaef69473
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccb8359e19e031785d56aaa2022c75c1dc83678e4f0307b5c877bd3eb51767daf513e58ad02ea3422ab2929fe32f2ee1d1c348e49b80f476cd215f3935377ec3
|
7
|
+
data.tar.gz: 5ca2508704c946625a495a8875e56180cd337e9f4fa6bc5b28a67d46f9e776f55da68b5a6d1d7dfcfdcf243a77ad743f170e14d935e525944dafd3c2113f71f0
|
@@ -9,7 +9,7 @@ require 'json'
|
|
9
9
|
module RspecApiDocumentation
|
10
10
|
extend ActiveSupport::Autoload
|
11
11
|
|
12
|
-
require 'rspec_api_documentation/railtie' if defined?(Rails)
|
12
|
+
require 'rspec_api_documentation/railtie' if defined?(Rails::Railtie)
|
13
13
|
include ActiveSupport::JSON
|
14
14
|
|
15
15
|
eager_autoload do
|
@@ -68,7 +68,7 @@ module RspecApiDocumentation
|
|
68
68
|
request_metadata[:request_content_type] = request_content_type
|
69
69
|
request_metadata[:response_status] = status
|
70
70
|
request_metadata[:response_status_text] = Rack::Utils::HTTP_STATUS_CODES[status]
|
71
|
-
request_metadata[:response_body] =
|
71
|
+
request_metadata[:response_body] = record_response_body(response_content_type, response_body)
|
72
72
|
request_metadata[:response_headers] = response_headers
|
73
73
|
request_metadata[:response_content_type] = response_content_type
|
74
74
|
request_metadata[:curl] = Curl.new(method, path, request_body, request_headers)
|
@@ -85,6 +85,17 @@ module RspecApiDocumentation
|
|
85
85
|
request_headers || {}
|
86
86
|
end
|
87
87
|
|
88
|
+
def record_response_body(response_content_type, response_body)
|
89
|
+
return nil if response_body.empty?
|
90
|
+
if response_body.encoding == Encoding::ASCII_8BIT
|
91
|
+
"[binary data]"
|
92
|
+
elsif response_content_type =~ /application\/json/
|
93
|
+
JSON.pretty_generate(JSON.parse(response_body))
|
94
|
+
else
|
95
|
+
response_body
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
88
99
|
def clean_out_uploaded_data(params, request_body)
|
89
100
|
params.each do |_, value|
|
90
101
|
if value.is_a?(Hash)
|
@@ -148,16 +148,24 @@ module RspecApiDocumentation::DSL
|
|
148
148
|
|
149
149
|
def set_param(hash, param)
|
150
150
|
key = param[:name]
|
151
|
-
return hash if !respond_to?(key) || in_path?(key)
|
152
151
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
152
|
+
keys = [param[:scope], key].flatten.compact
|
153
|
+
method_name = keys.join('_')
|
154
|
+
|
155
|
+
return hash if in_path?(method_name)
|
156
|
+
|
157
|
+
unless respond_to?(method_name)
|
158
|
+
method_name = key
|
159
|
+
return hash unless respond_to?(method_name)
|
158
160
|
end
|
159
161
|
|
160
|
-
hash
|
162
|
+
hash.deep_merge(build_param_hash(keys, method_name))
|
161
163
|
end
|
164
|
+
|
165
|
+
def build_param_hash(keys, method_name)
|
166
|
+
value = keys[1] ? build_param_hash(keys[1..-1], method_name) : send(method_name)
|
167
|
+
{ keys[0].to_s => value }
|
168
|
+
end
|
169
|
+
|
162
170
|
end
|
163
171
|
end
|
@@ -6,7 +6,7 @@ module RspecApiDocumentation::DSL
|
|
6
6
|
module ClassMethods
|
7
7
|
def self.define_action(method)
|
8
8
|
define_method method do |*args, &block|
|
9
|
-
options =
|
9
|
+
options = args.extract_options!
|
10
10
|
options[:method] = method
|
11
11
|
options[:route] = args.first
|
12
12
|
options[:api_doc_dsl] = :endpoint
|
@@ -38,7 +38,10 @@ module RspecApiDocumentation::DSL
|
|
38
38
|
context(*args, &block)
|
39
39
|
end
|
40
40
|
|
41
|
-
def parameter(name,
|
41
|
+
def parameter(name, *args)
|
42
|
+
options = args.extract_options!
|
43
|
+
description = args.pop || "#{Array(options[:scope]).join(" ")} #{name}".humanize
|
44
|
+
|
42
45
|
parameters.push(options.merge(:name => name.to_s, :description => description))
|
43
46
|
end
|
44
47
|
|
@@ -89,7 +92,7 @@ module RspecApiDocumentation::DSL
|
|
89
92
|
requests = example.metadata[:requests]
|
90
93
|
example.metadata[:requests] = []
|
91
94
|
|
92
|
-
instance_eval
|
95
|
+
instance_eval(&block)
|
93
96
|
|
94
97
|
example.metadata[:requests] = requests
|
95
98
|
end
|
@@ -28,6 +28,21 @@ module RspecApiDocumentation
|
|
28
28
|
"#{basename}.#{extension}"
|
29
29
|
end
|
30
30
|
|
31
|
+
def parameters
|
32
|
+
super.each do |parameter|
|
33
|
+
if parameter.has_key?(:scope)
|
34
|
+
scope = Array(parameter[:scope]).each_with_index.map do |scope, index|
|
35
|
+
if index == 0
|
36
|
+
scope
|
37
|
+
else
|
38
|
+
"[#{scope}]"
|
39
|
+
end
|
40
|
+
end.join
|
41
|
+
parameter[:scope] = scope
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
31
46
|
def requests
|
32
47
|
super.map do |hash|
|
33
48
|
hash[:request_headers_text] = format_hash(hash[:request_headers])
|
@@ -51,7 +51,9 @@ module RspecApiDocumentation
|
|
51
51
|
{
|
52
52
|
:description => example.description,
|
53
53
|
:link => "#{example.dirname}/#{example.filename}",
|
54
|
-
:groups => example.metadata[:document]
|
54
|
+
:groups => example.metadata[:document],
|
55
|
+
:route => example.route,
|
56
|
+
:method => example.metadata[:method]
|
55
57
|
}
|
56
58
|
}
|
57
59
|
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec_api_documentation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Cahoon
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-10-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|