standardapi 6.0.0.15 → 6.0.0.24
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/standard_api/controller.rb +42 -6
- data/lib/standard_api/errors.rb +13 -0
- data/lib/standard_api/helpers.rb +5 -5
- data/lib/standard_api/includes.rb +22 -12
- data/lib/standard_api/orders.rb +4 -6
- data/lib/standard_api/railtie.rb +1 -1
- data/lib/standard_api/route_helpers.rb +4 -0
- data/lib/standard_api/test_case/calculate_tests.rb +3 -1
- data/lib/standard_api/version.rb +1 -1
- data/lib/standard_api/views/application/_record.json.jbuilder +11 -10
- data/lib/standard_api/views/application/_record.streamer +11 -10
- data/lib/standard_api/views/application/index.json.jbuilder +9 -16
- data/lib/standard_api/views/application/index.streamer +9 -16
- data/lib/standard_api/views/application/show.json.jbuilder +8 -1
- data/lib/standard_api/views/application/show.streamer +8 -1
- data/lib/standard_api.rb +1 -0
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5c4c41da6b869e919e53b048048c8b3c69aae01c1ce04ec3ebddf03d7e6217a
|
4
|
+
data.tar.gz: df1ab4c4111e74959f85cc0ba5a79cd580d419d97a90adcfb08dac70335fd74c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a035e59b5e886a620d9ccb95d316ca436a72c5b9ac4fb59b7cd85e4d484931d33c349a162ba0bd79bc6f09169ec8bb842902b984b356d83a9844f696dd643fde
|
7
|
+
data.tar.gz: 5e0e1df8b36ab9bfa6ef7c2043b32c36cc6df9e4b1b772e8b848034a18cadafddaaa9b561e54aad4d2c2e46512c6a1f0cd0b0b8ff8a52e2b2b4c82acc2d51bb1
|
@@ -5,6 +5,7 @@ module StandardAPI
|
|
5
5
|
klass.helper_method :includes, :orders, :model, :resource_limit,
|
6
6
|
:default_limit, :preloadables
|
7
7
|
klass.before_action :set_standardapi_headers
|
8
|
+
klass.rescue_from StandardAPI::UnpermittedParameters, with: :bad_request
|
8
9
|
klass.append_view_path(File.join(File.dirname(__FILE__), 'views'))
|
9
10
|
klass.extend(ClassMethods)
|
10
11
|
end
|
@@ -20,7 +21,8 @@ module StandardAPI
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def index
|
23
|
-
|
24
|
+
records = preloadables(resources.limit(limit).offset(params[:offset]).sort(orders), includes)
|
25
|
+
instance_variable_set("@#{model.model_name.plural}", records)
|
24
26
|
end
|
25
27
|
|
26
28
|
def calculate
|
@@ -37,7 +39,8 @@ module StandardAPI
|
|
37
39
|
end
|
38
40
|
|
39
41
|
def show
|
40
|
-
|
42
|
+
record = preloadables(resources, includes).find(params[:id])
|
43
|
+
instance_variable_set("@#{model.model_name.singular}", record)
|
41
44
|
end
|
42
45
|
|
43
46
|
def new
|
@@ -92,6 +95,33 @@ module StandardAPI
|
|
92
95
|
resources.find(params[:id]).destroy!
|
93
96
|
head :no_content
|
94
97
|
end
|
98
|
+
|
99
|
+
def remove_resource
|
100
|
+
resource = resources.find(params[:id])
|
101
|
+
subresource_class = resource.association(params[:relationship]).klass
|
102
|
+
subresource = subresource_class.find_by_id(params[:resource_id])
|
103
|
+
|
104
|
+
if(subresource)
|
105
|
+
result = resource.send(params[:relationship]).delete(subresource)
|
106
|
+
head result ? :no_content : :bad_request
|
107
|
+
else
|
108
|
+
head :not_found
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def add_resource
|
113
|
+
resource = resources.find(params[:id])
|
114
|
+
|
115
|
+
subresource_class = resource.association(params[:relationship]).klass
|
116
|
+
subresource = subresource_class.find_by_id(params[:resource_id])
|
117
|
+
if(subresource)
|
118
|
+
result = resource.send(params[:relationship]) << subresource
|
119
|
+
head result ? :created : :bad_request
|
120
|
+
else
|
121
|
+
head :not_found
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
95
125
|
|
96
126
|
# Override if you want to support masking
|
97
127
|
def current_mask
|
@@ -109,6 +139,10 @@ module StandardAPI
|
|
109
139
|
|
110
140
|
private
|
111
141
|
|
142
|
+
def bad_request(exception)
|
143
|
+
render body: exception.to_s, status: :bad_request
|
144
|
+
end
|
145
|
+
|
112
146
|
def set_standardapi_headers
|
113
147
|
headers['StandardAPI-Version'] = StandardAPI::VERSION
|
114
148
|
end
|
@@ -175,13 +209,13 @@ module StandardAPI
|
|
175
209
|
end
|
176
210
|
|
177
211
|
def includes
|
178
|
-
@includes ||= StandardAPI::Includes.
|
212
|
+
@includes ||= StandardAPI::Includes.sanitize(params[:include], model_includes)
|
179
213
|
end
|
180
214
|
|
181
|
-
def preloadables(record,
|
215
|
+
def preloadables(record, includes)
|
182
216
|
preloads = {}
|
183
217
|
|
184
|
-
|
218
|
+
includes.each do |key, value|
|
185
219
|
if reflection = record.klass.reflections[key]
|
186
220
|
case value
|
187
221
|
when true
|
@@ -307,7 +341,9 @@ module StandardAPI
|
|
307
341
|
|
308
342
|
column = column == '*' ? Arel.star : column.to_sym
|
309
343
|
if functions.include?(func.to_s.downcase)
|
310
|
-
|
344
|
+
node = (defined?(@model) ? @model : model).arel_table[column].send(func)
|
345
|
+
node.distinct = true if params[:distinct]
|
346
|
+
@selects << node
|
311
347
|
end
|
312
348
|
end
|
313
349
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module StandardAPI
|
2
|
+
class StandardAPIError < StandardError
|
3
|
+
end
|
4
|
+
|
5
|
+
class UnpermittedParameters < StandardAPIError
|
6
|
+
attr_reader :params
|
7
|
+
|
8
|
+
def initialize(params)
|
9
|
+
@params = params
|
10
|
+
super("found unpermitted parameter#{'s' if params.size > 1 }: #{params.map { |e| e.inspect }.join(", ")}")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/standard_api/helpers.rb
CHANGED
@@ -58,7 +58,7 @@ module StandardAPI
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def cached_at_columns_for_includes(includes)
|
61
|
-
includes.select { |k,v| !['when', 'where', 'limit', 'order', 'distinct'].include?(k) }.map do |k, v|
|
61
|
+
includes.select { |k,v| !['when', 'where', 'limit', 'order', 'distinct', 'distinct_on'].include?(k) }.map do |k, v|
|
62
62
|
["#{k}_cached_at"] + cached_at_columns_for_includes(v).map { |v2| "#{k}_#{v2}" }
|
63
63
|
end.flatten
|
64
64
|
end
|
@@ -103,8 +103,6 @@ module StandardAPI
|
|
103
103
|
|
104
104
|
def json_column_type(sql_type)
|
105
105
|
case sql_type
|
106
|
-
when /character varying(\(\d+\))?/
|
107
|
-
'string'
|
108
106
|
when 'timestamp without time zone'
|
109
107
|
'datetime'
|
110
108
|
when 'time without time zone'
|
@@ -133,10 +131,12 @@ module StandardAPI
|
|
133
131
|
'string'
|
134
132
|
when 'boolean'
|
135
133
|
'boolean'
|
136
|
-
when 'geometry'
|
137
|
-
'ewkb'
|
138
134
|
when 'uuid' # TODO: should be uuid
|
139
135
|
'string'
|
136
|
+
when /character varying(\(\d+\))?/
|
137
|
+
'string'
|
138
|
+
when /^geometry/
|
139
|
+
'ewkb'
|
140
140
|
end
|
141
141
|
end
|
142
142
|
|
@@ -17,17 +17,29 @@ module StandardAPI
|
|
17
17
|
includes.flatten.compact.each { |v| normalized.merge!(normalize(v)) }
|
18
18
|
when Hash, ActionController::Parameters
|
19
19
|
includes.each_pair do |k, v|
|
20
|
-
|
21
|
-
|
20
|
+
normalized[k] = case k.to_s
|
21
|
+
when 'when', 'where', 'order'
|
22
|
+
case v
|
22
23
|
when Hash then v.to_h
|
23
24
|
when ActionController::Parameters then v.to_unsafe_h
|
24
25
|
end
|
25
|
-
|
26
|
-
|
26
|
+
when 'limit'
|
27
|
+
case v
|
28
|
+
when String then v.to_i
|
29
|
+
when Integer then v
|
30
|
+
end
|
31
|
+
when 'distinct'
|
32
|
+
case v
|
33
|
+
when 'true' then true
|
34
|
+
when 'false' then false
|
35
|
+
end
|
36
|
+
when 'distinct_on'
|
37
|
+
case v
|
27
38
|
when String then v
|
39
|
+
when Array then v
|
28
40
|
end
|
29
41
|
else
|
30
|
-
|
42
|
+
normalize(v)
|
31
43
|
end
|
32
44
|
end
|
33
45
|
when nil
|
@@ -58,14 +70,12 @@ module StandardAPI
|
|
58
70
|
|
59
71
|
permit = normalize(permit.with_indifferent_access)
|
60
72
|
includes.each do |k, v|
|
61
|
-
if permit.has_key?(k)
|
62
|
-
|
73
|
+
permitted[k] = if permit.has_key?(k)
|
74
|
+
sanitize(v, permit[k] || {}, true)
|
75
|
+
elsif ['limit', 'when', 'where', 'order', 'distinct', 'distinct_on'].include?(k.to_s)
|
76
|
+
v
|
63
77
|
else
|
64
|
-
|
65
|
-
raise ActionController::UnpermittedParameters.new([k])
|
66
|
-
else
|
67
|
-
Rails.logger.try(:warn, "Invalid Include: #{k}")
|
68
|
-
end
|
78
|
+
raise StandardAPI::UnpermittedParameters.new([k])
|
69
79
|
end
|
70
80
|
end
|
71
81
|
|
data/lib/standard_api/orders.rb
CHANGED
@@ -15,11 +15,11 @@ module StandardAPI
|
|
15
15
|
key2, key3 = *key.to_s.split('.')
|
16
16
|
permitted << sanitize({key2.to_sym => { key3.to_sym => value } }, permit)
|
17
17
|
elsif permit.include?(key.to_s)
|
18
|
-
case value
|
18
|
+
value = case value
|
19
19
|
when Hash
|
20
20
|
value
|
21
21
|
when ActionController::Parameters
|
22
|
-
value.
|
22
|
+
value.permit([:asc, :desc]).to_h
|
23
23
|
else
|
24
24
|
value
|
25
25
|
end
|
@@ -29,7 +29,7 @@ module StandardAPI
|
|
29
29
|
sanitized_value = sanitize(value, subpermit)
|
30
30
|
permitted << { key.to_sym => sanitized_value }
|
31
31
|
else
|
32
|
-
raise(
|
32
|
+
raise(StandardAPI::UnpermittedParameters.new([orders]))
|
33
33
|
end
|
34
34
|
end
|
35
35
|
when Array
|
@@ -48,7 +48,7 @@ module StandardAPI
|
|
48
48
|
elsif permit.include?(orders.to_s)
|
49
49
|
permitted = orders
|
50
50
|
else
|
51
|
-
raise(
|
51
|
+
raise(StandardAPI::UnpermittedParameters.new([orders]))
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -57,8 +57,6 @@ module StandardAPI
|
|
57
57
|
else
|
58
58
|
permitted
|
59
59
|
end
|
60
|
-
|
61
|
-
# permitted
|
62
60
|
end
|
63
61
|
|
64
62
|
end
|
data/lib/standard_api/railtie.rb
CHANGED
@@ -24,6 +24,8 @@ module StandardAPI
|
|
24
24
|
resources(*resources, options) do
|
25
25
|
get :schema, on: :collection
|
26
26
|
get :calculate, on: :collection
|
27
|
+
delete ':relationship/:resource_id' => :remove_resource, on: :member
|
28
|
+
post ':relationship/:resource_id' => :add_resource, on: :member
|
27
29
|
block.call if block
|
28
30
|
end
|
29
31
|
end
|
@@ -51,6 +53,8 @@ module StandardAPI
|
|
51
53
|
resource(*resource, options) do
|
52
54
|
get :schema, on: :collection
|
53
55
|
get :calculate, on: :collection
|
56
|
+
delete ':relationship/:resource_id' => :remove_resource, on: :member
|
57
|
+
post ':relationship/:resource_id' => :add_resource, on: :member
|
54
58
|
block.call if block
|
55
59
|
end
|
56
60
|
end
|
@@ -24,7 +24,9 @@ module StandardAPI
|
|
24
24
|
get resource_path(:calculate, select: selects, format: :json)
|
25
25
|
assert_response :ok
|
26
26
|
calculations = @controller.instance_variable_get('@calculations')
|
27
|
-
|
27
|
+
expectations = selects.map { |s| model.send(s.keys.first, column.name) }
|
28
|
+
expectations = [expectations] if expectations.length > 1
|
29
|
+
assert_equal expectations,
|
28
30
|
calculations
|
29
31
|
end
|
30
32
|
|
data/lib/standard_api/version.rb
CHANGED
@@ -5,7 +5,7 @@ record.attributes.each do |name, value|
|
|
5
5
|
end
|
6
6
|
|
7
7
|
includes.each do |inc, subinc|
|
8
|
-
next if ["limit", "offset", "order", "when", "where"].include?(inc)
|
8
|
+
next if ["limit", "offset", "order", "when", "where", "distinct", "distinct_on"].include?(inc)
|
9
9
|
|
10
10
|
case association = record.class.reflect_on_association(inc)
|
11
11
|
when ActiveRecord::Reflection::HasManyReflection, ActiveRecord::Reflection::HasAndBelongsToManyReflection, ActiveRecord::Reflection::ThroughReflection
|
@@ -14,15 +14,16 @@ includes.each do |inc, subinc|
|
|
14
14
|
partial = model_partial(association.klass)
|
15
15
|
json.set! inc do
|
16
16
|
# TODO limit causes preloaded assocations to reload
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
sub_records = record.send(inc)
|
18
|
+
|
19
|
+
sub_records = sub_records.limit(subinc['limit']) if subinc['limit']
|
20
|
+
sub_records = sub_records.offset(subinc['offset']) if subinc['offset']
|
21
|
+
sub_records = sub_records.order(subinc['order']) if subinc['order']
|
22
|
+
sub_records = sub_records.filter(subinc['where']) if subinc['where']
|
23
|
+
sub_records = sub_records.distinct if subinc['distinct']
|
24
|
+
sub_records = sub_records.distinct_on(subinc['distinct_on']) if subinc['distinct_on']
|
25
|
+
|
26
|
+
json.array! sub_records, partial: partial, as: partial.split('/').last, locals: { includes: subinc }
|
26
27
|
end
|
27
28
|
end
|
28
29
|
when ActiveRecord::Reflection::BelongsToReflection, ActiveRecord::Reflection::HasOneReflection
|
@@ -7,7 +7,7 @@ json.object! do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
includes.each do |inc, subinc|
|
10
|
-
next if ["limit", "offset", "order", "when", "where"].include?(inc)
|
10
|
+
next if ["limit", "offset", "order", "when", "where", "distinct", "distinct_on"].include?(inc)
|
11
11
|
|
12
12
|
case association = record.class.reflect_on_association(inc)
|
13
13
|
when ActiveRecord::Reflection::HasManyReflection, ActiveRecord::Reflection::HasAndBelongsToManyReflection, ActiveRecord::Reflection::ThroughReflection
|
@@ -16,15 +16,16 @@ json.object! do
|
|
16
16
|
partial = model_partial(association.klass)
|
17
17
|
json.set! inc do
|
18
18
|
# TODO limit causes preloaded assocations to reload
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
19
|
+
sub_records = record.send(inc)
|
20
|
+
|
21
|
+
sub_records = sub_records.limit(subinc['limit']) if subinc['limit']
|
22
|
+
sub_records = sub_records.offset(subinc['offset']) if subinc['offset']
|
23
|
+
sub_records = sub_records.order(subinc['order']) if subinc['order']
|
24
|
+
sub_records = sub_records.filter(subinc['where']) if subinc['where']
|
25
|
+
sub_records = sub_records.distinct if subinc['distinct']
|
26
|
+
sub_records = sub_records.distinct_on(subinc['distinct_on']) if subinc['distinct_on']
|
27
|
+
|
28
|
+
json.array! sub_records, partial: partial, as: partial.split('/').last, locals: { includes: subinc }
|
28
29
|
end
|
29
30
|
end
|
30
31
|
when ActiveRecord::Reflection::BelongsToReflection, ActiveRecord::Reflection::HasOneReflection
|
@@ -1,19 +1,16 @@
|
|
1
|
-
if !
|
2
|
-
|
1
|
+
if !defined?(records)
|
2
|
+
records = instance_variable_get("@#{model.model_name.plural}")
|
3
3
|
end
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
record_name = partial.split('/').last.to_sym
|
5
|
+
partial = model_partial(model)
|
6
|
+
partial_record_name = partial.split('/').last.to_sym
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
json.partial!
|
8
|
+
if !includes.empty? && can_cache?(model, includes)
|
9
|
+
json.cache_collection! records, key: proc { |record| cache_key(record, includes) } do |record|
|
10
|
+
json.partial!(partial, includes: includes, partial_record_name => record)
|
12
11
|
end
|
13
12
|
else
|
14
|
-
|
15
|
-
record_name = partial.split('/').last.to_sym
|
16
|
-
json.array!(instance_variable_get("@#{model.model_name.plural}")) do |record|
|
13
|
+
json.array!(records) do |record|
|
17
14
|
sub_includes = includes.select do |key, value|
|
18
15
|
case value
|
19
16
|
when Hash, ActionController::Parameters
|
@@ -27,10 +24,6 @@ else
|
|
27
24
|
end
|
28
25
|
end
|
29
26
|
|
30
|
-
json.partial!
|
31
|
-
record: record,
|
32
|
-
record_name => record,
|
33
|
-
includes: sub_includes
|
34
|
-
}
|
27
|
+
json.partial!(partial, includes: sub_includes, partial_record_name => record)
|
35
28
|
end
|
36
29
|
end
|
@@ -1,20 +1,17 @@
|
|
1
|
-
if !
|
2
|
-
|
1
|
+
if !defined?(records)
|
2
|
+
records = instance_variable_get("@#{model.model_name.plural}")
|
3
3
|
end
|
4
4
|
|
5
|
+
partial = model_partial(model)
|
6
|
+
partial_record_name = partial.split('/').last.to_sym
|
7
|
+
|
5
8
|
if !includes.empty? && can_cache?(model, includes)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
json.cache_collection! instance_variable_get("@#{model.model_name.plural}"), key: proc {|record| cache_key(record, includes) } do |record|
|
10
|
-
locals = { record: record, record_name => record, :includes => includes }
|
11
|
-
json.partial! partial, locals
|
9
|
+
json.cache_collection! records, key: proc { |record| cache_key(record, includes) } do |record|
|
10
|
+
json.partial!(partial, includes: includes, partial_record_name => record)
|
12
11
|
end
|
13
12
|
else
|
14
|
-
partial = model_partial(model)
|
15
|
-
record_name = partial.split('/').last.to_sym
|
16
13
|
json.array! do
|
17
|
-
|
14
|
+
records.each do |record|
|
18
15
|
sub_includes = includes.select do |key, value|
|
19
16
|
case value
|
20
17
|
when Hash, ActionController::Parameters
|
@@ -28,11 +25,7 @@ else
|
|
28
25
|
end
|
29
26
|
end
|
30
27
|
|
31
|
-
json.partial!
|
32
|
-
record: record,
|
33
|
-
record_name => record,
|
34
|
-
includes: sub_includes
|
35
|
-
}
|
28
|
+
json.partial!(partial, includes: sub_includes, partial_record_name => record)
|
36
29
|
end
|
37
30
|
end
|
38
31
|
end
|
@@ -1 +1,8 @@
|
|
1
|
-
|
1
|
+
if !defined?(record)
|
2
|
+
record = instance_variable_get("@#{model.model_name.singular}")
|
3
|
+
end
|
4
|
+
|
5
|
+
partial = model_partial(model)
|
6
|
+
partial_record_name = partial.split('/').last.to_sym
|
7
|
+
|
8
|
+
json.partial!(partial, partial_record_name => record, includes: includes)
|
@@ -1 +1,8 @@
|
|
1
|
-
|
1
|
+
if !defined?(record)
|
2
|
+
record = instance_variable_get("@#{model.model_name.singular}")
|
3
|
+
end
|
4
|
+
|
5
|
+
partial = model_partial(model)
|
6
|
+
partial_record_name = partial.split('/').last.to_sym
|
7
|
+
|
8
|
+
json.partial!(partial, partial_record_name => record, includes: includes)
|
data/lib/standard_api.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: standardapi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.0.
|
4
|
+
version: 6.0.0.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Bracy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: simplecov
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
@@ -165,7 +165,7 @@ dependencies:
|
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
168
|
+
name: factory_bot_rails
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
171
|
- - ">="
|
@@ -179,7 +179,7 @@ dependencies:
|
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
182
|
+
name: faker
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - ">="
|
@@ -193,7 +193,7 @@ dependencies:
|
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
196
|
+
name: byebug
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
199
|
- - ">="
|
@@ -207,7 +207,7 @@ dependencies:
|
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: '0'
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
210
|
+
name: mocha
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
213
|
- - ">="
|
@@ -221,7 +221,7 @@ dependencies:
|
|
221
221
|
- !ruby/object:Gem::Version
|
222
222
|
version: '0'
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
224
|
+
name: benchmark-ips
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
226
226
|
requirements:
|
227
227
|
- - ">="
|
@@ -246,6 +246,7 @@ files:
|
|
246
246
|
- README.md
|
247
247
|
- lib/standard_api.rb
|
248
248
|
- lib/standard_api/controller.rb
|
249
|
+
- lib/standard_api/errors.rb
|
249
250
|
- lib/standard_api/helpers.rb
|
250
251
|
- lib/standard_api/includes.rb
|
251
252
|
- lib/standard_api/middleware/query_encoding.rb
|