apipie-rails 0.2.4 → 0.2.5
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.
- data/.travis.yml +0 -7
- data/CHANGELOG.md +8 -0
- data/lib/apipie/dsl_definition.rb +15 -1
- data/lib/apipie/param_description.rb +8 -1
- data/lib/apipie/validator.rb +4 -0
- data/lib/apipie/version.rb +1 -1
- data/spec/dummy/app/controllers/overridden_concerns_controller.rb +31 -0
- data/spec/lib/param_group_spec.rb +15 -0
- metadata +143 -136
data/.travis.yml
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 1.8.7
|
4
3
|
- 1.9.3
|
5
4
|
- 2.0.0
|
6
5
|
- 2.1.1
|
@@ -8,9 +7,3 @@ gemfile:
|
|
8
7
|
- Gemfile.rails32
|
9
8
|
- Gemfile.rails40
|
10
9
|
- Gemfile.rails41
|
11
|
-
matrix:
|
12
|
-
exclude:
|
13
|
-
- rvm: 1.8.7
|
14
|
-
gemfile: Gemfile.rails40
|
15
|
-
- rvm: 1.8.7
|
16
|
-
gemfile: Gemfile.rails41
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,13 @@
|
|
2
2
|
Changelog
|
3
3
|
===========
|
4
4
|
|
5
|
+
v0.2.5
|
6
|
+
------
|
7
|
+
|
8
|
+
* Name substitution for referenced param_group defined in a concern
|
9
|
+
[#280](https://github.com/Apipie/apipie-rails/pull/280) [@tstrachota][]
|
10
|
+
* expected_type 'array' for ArrayValidator
|
11
|
+
[#276](https://github.com/Apipie/apipie-rails/pull/276) [@dustint-rh][]
|
5
12
|
|
6
13
|
THE FURTHER SUPPORT FOR RUBY 1.8.7 WILL NOT BE ENSURED IN THE MASTER
|
7
14
|
AND THE `>= 0.3.0` RELAEASES. We discourage anyone to keep using ruby
|
@@ -202,3 +209,4 @@ v0.0.15
|
|
202
209
|
[@exAspArk]: https://github.com/exAspArk
|
203
210
|
[@mourad-ifeelgoods]: https://github.com/mourad-ifeelgoods
|
204
211
|
[@domcleal]: https://github.com/domcleal
|
212
|
+
[@dustint-rh]: https://github.com/dustint-rh
|
@@ -264,7 +264,13 @@ module Apipie
|
|
264
264
|
scope = scope_or_options
|
265
265
|
end
|
266
266
|
scope ||= _default_param_group_scope
|
267
|
-
|
267
|
+
|
268
|
+
@_current_param_group = {
|
269
|
+
:scope => scope,
|
270
|
+
:name => name,
|
271
|
+
:options => options,
|
272
|
+
:from_concern => scope.apipie_concern?
|
273
|
+
}
|
268
274
|
self.instance_exec(&Apipie.get_param_group(scope, name))
|
269
275
|
ensure
|
270
276
|
@_current_param_group = nil
|
@@ -322,6 +328,10 @@ module Apipie
|
|
322
328
|
end
|
323
329
|
end
|
324
330
|
|
331
|
+
def apipie_concern?
|
332
|
+
false
|
333
|
+
end
|
334
|
+
|
325
335
|
# create method api and redefine newly added method
|
326
336
|
def method_added(method_name) #:doc:
|
327
337
|
super
|
@@ -363,6 +373,10 @@ module Apipie
|
|
363
373
|
@_apipie_concern_data ||= []
|
364
374
|
end
|
365
375
|
|
376
|
+
def apipie_concern?
|
377
|
+
true
|
378
|
+
end
|
379
|
+
|
366
380
|
# create method api and redefine newly added method
|
367
381
|
def method_added(method_name) #:doc:
|
368
382
|
super
|
@@ -35,6 +35,9 @@ module Apipie
|
|
35
35
|
|
36
36
|
# we save options to know what was passed in DSL
|
37
37
|
@options = options
|
38
|
+
if @options[:param_group]
|
39
|
+
@from_concern = @options[:param_group][:from_concern]
|
40
|
+
end
|
38
41
|
|
39
42
|
@method_description = method_description
|
40
43
|
@name = concern_subst(name)
|
@@ -66,6 +69,10 @@ module Apipie
|
|
66
69
|
end
|
67
70
|
end
|
68
71
|
|
72
|
+
def from_concern?
|
73
|
+
method_description.from_concern? || @from_concern
|
74
|
+
end
|
75
|
+
|
69
76
|
def validate(value)
|
70
77
|
return true if @allow_nil && value.nil?
|
71
78
|
if (!@allow_nil && value.nil?) || !@validator.valid?(value)
|
@@ -187,7 +194,7 @@ module Apipie
|
|
187
194
|
end
|
188
195
|
|
189
196
|
def concern_subst(string)
|
190
|
-
return string if string.nil? or !
|
197
|
+
return string if string.nil? or !from_concern?
|
191
198
|
|
192
199
|
original = string
|
193
200
|
string = ":#{original}" if original.is_a? Symbol
|
data/lib/apipie/validator.rb
CHANGED
@@ -175,6 +175,10 @@ module Apipie
|
|
175
175
|
"Must be an array of #{items}"
|
176
176
|
end
|
177
177
|
|
178
|
+
def expected_type
|
179
|
+
"array"
|
180
|
+
end
|
181
|
+
|
178
182
|
def self.build(param_description, argument, options, block)
|
179
183
|
if argument == Array && !block.is_a?(Proc)
|
180
184
|
self.new(param_description, argument, options)
|
data/lib/apipie/version.rb
CHANGED
@@ -0,0 +1,31 @@
|
|
1
|
+
class OverriddenConcernsController < ApplicationController
|
2
|
+
|
3
|
+
resource_description { resource_id 'overridden_concern_resources' }
|
4
|
+
|
5
|
+
apipie_concern_subst(:concern => 'user')
|
6
|
+
include ::Concerns::SampleController
|
7
|
+
|
8
|
+
def_param_group :concern do
|
9
|
+
param :concern, String
|
10
|
+
end
|
11
|
+
|
12
|
+
api :PUT, '/:resource_id/:id'
|
13
|
+
param :custom_parameter, String, "New parameter added by the overriding method"
|
14
|
+
param_group :concern, ::Concerns::SampleController
|
15
|
+
def update
|
16
|
+
super
|
17
|
+
end
|
18
|
+
|
19
|
+
api :POST, '/:resource_id', "Create a :concern"
|
20
|
+
param_group :concern
|
21
|
+
def create
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
api :GET, '/:resource_id/custom'
|
26
|
+
param :concern, String
|
27
|
+
def custom
|
28
|
+
render :text => "OK #{params.inspect}"
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -41,5 +41,20 @@ describe "param groups" do
|
|
41
41
|
|
42
42
|
arch_v1_params.sort_by(&:to_s).should == arch_v2_params.sort_by(&:to_s)
|
43
43
|
end
|
44
|
+
|
45
|
+
it "should replace parameter name in a group when it comes from concern" do
|
46
|
+
Apipie["overridden_concern_resources#update"].params.has_key?(:user).should == true
|
47
|
+
end
|
48
|
+
|
49
|
+
it "shouldn't replace parameter name in a group redefined in the controller" do
|
50
|
+
Apipie["overridden_concern_resources#create"].params.has_key?(:concern).should == true
|
51
|
+
Apipie["overridden_concern_resources#create"].params.has_key?(:user).should == false
|
52
|
+
end
|
53
|
+
|
54
|
+
it "shouldn't replace name of a parameter defined in the controller" do
|
55
|
+
Apipie["overridden_concern_resources#custom"].params.has_key?(:concern).should == true
|
56
|
+
Apipie["overridden_concern_resources#custom"].params.has_key?(:user).should == false
|
57
|
+
end
|
58
|
+
|
44
59
|
end
|
45
60
|
|
metadata
CHANGED
@@ -1,169 +1,165 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: apipie-rails
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
- 5
|
10
|
+
version: 0.2.5
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Pavel Pokorny
|
9
14
|
- Ivan Necas
|
10
15
|
autorequire:
|
11
16
|
bindir: bin
|
12
17
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
18
|
+
|
19
|
+
date: 2014-08-22 00:00:00 +02:00
|
20
|
+
default_executable:
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
16
23
|
name: rails
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
|
-
requirements:
|
20
|
-
- - ! '>='
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 3.0.10
|
23
|
-
type: :development
|
24
24
|
prerelease: false
|
25
|
-
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
26
|
none: false
|
27
|
-
requirements:
|
28
|
-
- -
|
29
|
-
- !ruby/object:Gem::Version
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 19
|
31
|
+
segments:
|
32
|
+
- 3
|
33
|
+
- 0
|
34
|
+
- 10
|
30
35
|
version: 3.0.10
|
31
|
-
|
36
|
+
type: :development
|
37
|
+
version_requirements: *id001
|
38
|
+
- !ruby/object:Gem::Dependency
|
32
39
|
name: json
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
|
-
requirements:
|
36
|
-
- - ! '>='
|
37
|
-
- !ruby/object:Gem::Version
|
38
|
-
version: '0'
|
39
|
-
type: :runtime
|
40
40
|
prerelease: false
|
41
|
-
|
41
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
|
47
|
-
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
hash: 3
|
47
|
+
segments:
|
48
|
+
- 0
|
49
|
+
version: "0"
|
50
|
+
type: :runtime
|
51
|
+
version_requirements: *id002
|
52
|
+
- !ruby/object:Gem::Dependency
|
48
53
|
name: rspec-rails
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
|
-
requirements:
|
52
|
-
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 2.14.2
|
55
|
-
type: :development
|
56
54
|
prerelease: false
|
57
|
-
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
58
56
|
none: false
|
59
|
-
requirements:
|
57
|
+
requirements:
|
60
58
|
- - ~>
|
61
|
-
- !ruby/object:Gem::Version
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 51
|
61
|
+
segments:
|
62
|
+
- 2
|
63
|
+
- 14
|
64
|
+
- 2
|
62
65
|
version: 2.14.2
|
63
|
-
- !ruby/object:Gem::Dependency
|
64
|
-
name: sqlite3
|
65
|
-
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
|
-
requirements:
|
68
|
-
- - ! '>='
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: '0'
|
71
66
|
type: :development
|
67
|
+
version_requirements: *id003
|
68
|
+
- !ruby/object:Gem::Dependency
|
69
|
+
name: sqlite3
|
72
70
|
prerelease: false
|
73
|
-
|
74
|
-
none: false
|
75
|
-
requirements:
|
76
|
-
- - ! '>='
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: '0'
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
name: minitest
|
81
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
82
72
|
none: false
|
83
|
-
requirements:
|
84
|
-
- -
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
hash: 3
|
77
|
+
segments:
|
78
|
+
- 0
|
79
|
+
version: "0"
|
87
80
|
type: :development
|
81
|
+
version_requirements: *id004
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: minitest
|
88
84
|
prerelease: false
|
89
|
-
|
90
|
-
none: false
|
91
|
-
requirements:
|
92
|
-
- - ! '>='
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: '0'
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: maruku
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
98
86
|
none: false
|
99
|
-
requirements:
|
100
|
-
- -
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
hash: 3
|
91
|
+
segments:
|
92
|
+
- 0
|
93
|
+
version: "0"
|
103
94
|
type: :development
|
95
|
+
version_requirements: *id005
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: maruku
|
104
98
|
prerelease: false
|
105
|
-
|
106
|
-
none: false
|
107
|
-
requirements:
|
108
|
-
- - ! '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: RedCloth
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
99
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
114
100
|
none: false
|
115
|
-
requirements:
|
116
|
-
- -
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 3
|
105
|
+
segments:
|
106
|
+
- 0
|
107
|
+
version: "0"
|
119
108
|
type: :development
|
109
|
+
version_requirements: *id006
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: RedCloth
|
120
112
|
prerelease: false
|
121
|
-
|
113
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
122
114
|
none: false
|
123
|
-
requirements:
|
124
|
-
- -
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
none: false
|
131
|
-
requirements:
|
132
|
-
- - ! '>='
|
133
|
-
- !ruby/object:Gem::Version
|
134
|
-
version: '0'
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
hash: 3
|
119
|
+
segments:
|
120
|
+
- 0
|
121
|
+
version: "0"
|
135
122
|
type: :development
|
123
|
+
version_requirements: *id007
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: rake
|
136
126
|
prerelease: false
|
137
|
-
|
127
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
138
128
|
none: false
|
139
|
-
requirements:
|
140
|
-
- -
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
none: false
|
147
|
-
requirements:
|
148
|
-
- - ! '>='
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: '0'
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
hash: 3
|
133
|
+
segments:
|
134
|
+
- 0
|
135
|
+
version: "0"
|
151
136
|
type: :development
|
137
|
+
version_requirements: *id008
|
138
|
+
- !ruby/object:Gem::Dependency
|
139
|
+
name: rdoc
|
152
140
|
prerelease: false
|
153
|
-
|
141
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
154
142
|
none: false
|
155
|
-
requirements:
|
156
|
-
- -
|
157
|
-
- !ruby/object:Gem::Version
|
158
|
-
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
hash: 3
|
147
|
+
segments:
|
148
|
+
- 0
|
149
|
+
version: "0"
|
150
|
+
type: :development
|
151
|
+
version_requirements: *id009
|
159
152
|
description: Rails REST API documentation tool
|
160
|
-
email:
|
153
|
+
email:
|
161
154
|
- pajkycz@gmail.com
|
162
155
|
- inecas@redhat.com
|
163
156
|
executables: []
|
157
|
+
|
164
158
|
extensions: []
|
159
|
+
|
165
160
|
extra_rdoc_files: []
|
166
|
-
|
161
|
+
|
162
|
+
files:
|
167
163
|
- .gitignore
|
168
164
|
- .rspec
|
169
165
|
- .travis.yml
|
@@ -254,6 +250,7 @@ files:
|
|
254
250
|
- spec/dummy/app/controllers/application_controller.rb
|
255
251
|
- spec/dummy/app/controllers/concerns/sample_controller.rb
|
256
252
|
- spec/dummy/app/controllers/concerns_controller.rb
|
253
|
+
- spec/dummy/app/controllers/overridden_concerns_controller.rb
|
257
254
|
- spec/dummy/app/controllers/twitter_example_controller.rb
|
258
255
|
- spec/dummy/app/controllers/users_controller.rb
|
259
256
|
- spec/dummy/app/views/layouts/application.html.erb
|
@@ -300,31 +297,41 @@ files:
|
|
300
297
|
- spec/lib/validators/array_validator_spec.rb
|
301
298
|
- spec/spec_helper.rb
|
302
299
|
- spec/support/rake.rb
|
300
|
+
has_rdoc: true
|
303
301
|
homepage: http://github.com/Pajk/apipie-rails
|
304
302
|
licenses: []
|
303
|
+
|
305
304
|
post_install_message:
|
306
305
|
rdoc_options: []
|
307
|
-
|
306
|
+
|
307
|
+
require_paths:
|
308
308
|
- lib
|
309
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
309
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
310
310
|
none: false
|
311
|
-
requirements:
|
312
|
-
- -
|
313
|
-
- !ruby/object:Gem::Version
|
314
|
-
|
315
|
-
|
311
|
+
requirements:
|
312
|
+
- - ">="
|
313
|
+
- !ruby/object:Gem::Version
|
314
|
+
hash: 3
|
315
|
+
segments:
|
316
|
+
- 0
|
317
|
+
version: "0"
|
318
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
316
319
|
none: false
|
317
|
-
requirements:
|
318
|
-
- -
|
319
|
-
- !ruby/object:Gem::Version
|
320
|
-
|
320
|
+
requirements:
|
321
|
+
- - ">="
|
322
|
+
- !ruby/object:Gem::Version
|
323
|
+
hash: 3
|
324
|
+
segments:
|
325
|
+
- 0
|
326
|
+
version: "0"
|
321
327
|
requirements: []
|
328
|
+
|
322
329
|
rubyforge_project:
|
323
|
-
rubygems_version: 1.
|
330
|
+
rubygems_version: 1.6.2
|
324
331
|
signing_key:
|
325
332
|
specification_version: 3
|
326
333
|
summary: Rails REST API documentation tool
|
327
|
-
test_files:
|
334
|
+
test_files:
|
328
335
|
- spec/controllers/api/v1/architectures_controller_spec.rb
|
329
336
|
- spec/controllers/api/v2/architectures_controller_spec.rb
|
330
337
|
- spec/controllers/api/v2/nested/resources_controller_spec.rb
|
@@ -342,6 +349,7 @@ test_files:
|
|
342
349
|
- spec/dummy/app/controllers/application_controller.rb
|
343
350
|
- spec/dummy/app/controllers/concerns/sample_controller.rb
|
344
351
|
- spec/dummy/app/controllers/concerns_controller.rb
|
352
|
+
- spec/dummy/app/controllers/overridden_concerns_controller.rb
|
345
353
|
- spec/dummy/app/controllers/twitter_example_controller.rb
|
346
354
|
- spec/dummy/app/controllers/users_controller.rb
|
347
355
|
- spec/dummy/app/views/layouts/application.html.erb
|
@@ -388,4 +396,3 @@ test_files:
|
|
388
396
|
- spec/lib/validators/array_validator_spec.rb
|
389
397
|
- spec/spec_helper.rb
|
390
398
|
- spec/support/rake.rb
|
391
|
-
has_rdoc:
|