api_canon 0.4.6 → 0.4.7
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/lib/api_canon.rb +1 -1
- data/lib/api_canon/documented_action.rb +3 -2
- data/lib/api_canon/documented_param.rb +3 -0
- data/lib/api_canon/routes.rb +6 -2
- data/lib/api_canon/swagger/api_declaration.rb +1 -1
- data/lib/api_canon/version.rb +1 -1
- data/spec/lib/api_canon/documented_action_spec.rb +1 -1
- data/spec/lib/api_canon/documented_param_spec.rb +6 -0
- data/spec/lib/api_canon/swagger_spec/api_declaration_spec.rb +1 -1
- metadata +78 -58
- checksums.yaml +0 -7
data/lib/api_canon.rb
CHANGED
@@ -84,7 +84,7 @@ module ApiCanon
|
|
84
84
|
# @see ApiCanon::DocumentedAction#response_code
|
85
85
|
def document_method(method_name, &block)
|
86
86
|
document do |document|
|
87
|
-
documented_action = ApiCanon::DocumentedAction.new method_name, controller_name
|
87
|
+
documented_action = ApiCanon::DocumentedAction.new method_name, controller_path, controller_name
|
88
88
|
documented_action.instance_eval &block if block_given?
|
89
89
|
document.add_action documented_action
|
90
90
|
end
|
@@ -2,9 +2,10 @@ module ApiCanon
|
|
2
2
|
class DocumentedAction
|
3
3
|
include ActiveModel::Serialization
|
4
4
|
attr_reader :params, :response_codes, :response_model_name, :description, :action_name,
|
5
|
-
:controller_name, :http_method
|
6
|
-
def initialize(action_name, controller_name)
|
5
|
+
:controller_name, :controller_path, :http_method
|
6
|
+
def initialize(action_name, controller_path, controller_name)
|
7
7
|
@action_name = action_name
|
8
|
+
@controller_path = controller_path
|
8
9
|
@controller_name = controller_name
|
9
10
|
@params={}
|
10
11
|
# TODO: This should check routes to see if params[:format] is expected
|
@@ -22,6 +22,9 @@ module ApiCanon
|
|
22
22
|
def to_field(f, doco_prefix)
|
23
23
|
# TODO: This doco_prefix thing sucks. Get rid of it.
|
24
24
|
if type == :array
|
25
|
+
if form_values.nil?
|
26
|
+
raise ArgumentError.new(':values or :example_values must be supplied for :array type params')
|
27
|
+
end
|
25
28
|
f.select name, form_values, {:selected => default, :include_blank => true}, {:multiple => multiple?, :class => 'input-block-level', :id => "#{doco_prefix}_#{name}"}
|
26
29
|
elsif type == :boolean
|
27
30
|
f.select name, [true,false], {:selected => default, :include_blank => true}, :class => 'input-block-level', :id => "#{doco_prefix}_#{name}"
|
data/lib/api_canon/routes.rb
CHANGED
@@ -11,7 +11,11 @@ module ApiCanon
|
|
11
11
|
end
|
12
12
|
|
13
13
|
# TODO: make :path => 'swagger-doc' customisable
|
14
|
-
map.resources :path => 'swagger-doc',
|
14
|
+
map.resources :path => 'swagger-doc',
|
15
|
+
:controller => 'api_canon/swagger',
|
16
|
+
:only => [:index, :show],
|
17
|
+
:constraints => { :id => /.+/ },
|
18
|
+
:as => :api_canon_swagger_doc
|
15
19
|
end
|
16
20
|
end
|
17
|
-
end
|
21
|
+
end
|
data/lib/api_canon/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
describe ApiCanon::DocumentedAction do
|
3
3
|
|
4
|
-
let(:document) {ApiCanon::DocumentedAction.new :index, 'controller_name'}
|
4
|
+
let(:document) {ApiCanon::DocumentedAction.new :index, 'controller_path', 'controller_name'}
|
5
5
|
let(:description) {'ID is the unique identifier of the object'}
|
6
6
|
subject { document }
|
7
7
|
its(:action_name) { should == :index }
|
@@ -26,6 +26,12 @@ describe ApiCanon::DocumentedParam do
|
|
26
26
|
fake_form.should_receive(:select).with :format, [:json, :xml], hash_including({:include_blank => true}), hash_including({:id => 'foo_format'})
|
27
27
|
documented_param.to_field fake_form, doco_prefix
|
28
28
|
end
|
29
|
+
context 'when form_values returns nil' do
|
30
|
+
it 'raises an ArgumentError' do
|
31
|
+
subject.stub(:form_values => nil)
|
32
|
+
expect { documented_param.to_field fake_form, doco_prefix }.to raise_exception(ArgumentError)
|
33
|
+
end
|
34
|
+
end
|
29
35
|
end
|
30
36
|
context "boolean-type params" do
|
31
37
|
before(:each) {documented_param.type = :boolean}
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
describe ApiCanon::Swagger::ApiDeclaration do
|
3
3
|
|
4
4
|
let(:documented_action) {
|
5
|
-
documented_action = ApiCanon::DocumentedAction.new('action_name', 'controller_name')
|
5
|
+
documented_action = ApiCanon::DocumentedAction.new('action_name', 'controller_path', 'controller_name')
|
6
6
|
documented_action.describe 'description'
|
7
7
|
documented_action.response_class 'Thing'
|
8
8
|
documented_action.response_code '404', 'reason'
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api_canon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.7
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Cameron Walsh
|
@@ -10,39 +11,44 @@ authors:
|
|
10
11
|
autorequire:
|
11
12
|
bindir: bin
|
12
13
|
cert_chain: []
|
13
|
-
date: 2013-
|
14
|
+
date: 2013-09-11 00:00:00.000000000 Z
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
16
17
|
name: rails
|
17
18
|
requirement: !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
18
20
|
requirements:
|
19
|
-
- - '>='
|
21
|
+
- - ! '>='
|
20
22
|
- !ruby/object:Gem::Version
|
21
23
|
version: 2.3.17
|
22
24
|
type: :runtime
|
23
25
|
prerelease: false
|
24
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
|
+
none: false
|
25
28
|
requirements:
|
26
|
-
- - '>='
|
29
|
+
- - ! '>='
|
27
30
|
- !ruby/object:Gem::Version
|
28
31
|
version: 2.3.17
|
29
32
|
- !ruby/object:Gem::Dependency
|
30
33
|
name: active_model_serializers
|
31
34
|
requirement: !ruby/object:Gem::Requirement
|
35
|
+
none: false
|
32
36
|
requirements:
|
33
|
-
- - '>='
|
37
|
+
- - ! '>='
|
34
38
|
- !ruby/object:Gem::Version
|
35
39
|
version: '0'
|
36
40
|
type: :runtime
|
37
41
|
prerelease: false
|
38
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
39
44
|
requirements:
|
40
|
-
- - '>='
|
45
|
+
- - ! '>='
|
41
46
|
- !ruby/object:Gem::Version
|
42
47
|
version: '0'
|
43
48
|
- !ruby/object:Gem::Dependency
|
44
49
|
name: rspec
|
45
50
|
requirement: !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
46
52
|
requirements:
|
47
53
|
- - ~>
|
48
54
|
- !ruby/object:Gem::Version
|
@@ -50,6 +56,7 @@ dependencies:
|
|
50
56
|
type: :development
|
51
57
|
prerelease: false
|
52
58
|
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
53
60
|
requirements:
|
54
61
|
- - ~>
|
55
62
|
- !ruby/object:Gem::Version
|
@@ -57,173 +64,186 @@ dependencies:
|
|
57
64
|
- !ruby/object:Gem::Dependency
|
58
65
|
name: rspec-rails
|
59
66
|
requirement: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
60
68
|
requirements:
|
61
|
-
- - '>='
|
69
|
+
- - ! '>='
|
62
70
|
- !ruby/object:Gem::Version
|
63
71
|
version: '0'
|
64
72
|
type: :development
|
65
73
|
prerelease: false
|
66
74
|
version_requirements: !ruby/object:Gem::Requirement
|
75
|
+
none: false
|
67
76
|
requirements:
|
68
|
-
- - '>='
|
77
|
+
- - ! '>='
|
69
78
|
- !ruby/object:Gem::Version
|
70
79
|
version: '0'
|
71
80
|
- !ruby/object:Gem::Dependency
|
72
81
|
name: json_spec
|
73
82
|
requirement: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
74
84
|
requirements:
|
75
|
-
- - '>='
|
85
|
+
- - ! '>='
|
76
86
|
- !ruby/object:Gem::Version
|
77
87
|
version: '0'
|
78
88
|
type: :development
|
79
89
|
prerelease: false
|
80
90
|
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
none: false
|
81
92
|
requirements:
|
82
|
-
- - '>='
|
93
|
+
- - ! '>='
|
83
94
|
- !ruby/object:Gem::Version
|
84
95
|
version: '0'
|
85
96
|
- !ruby/object:Gem::Dependency
|
86
97
|
name: rake
|
87
98
|
requirement: !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
88
100
|
requirements:
|
89
|
-
- - '>='
|
101
|
+
- - ! '>='
|
90
102
|
- !ruby/object:Gem::Version
|
91
103
|
version: '0'
|
92
104
|
type: :development
|
93
105
|
prerelease: false
|
94
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
none: false
|
95
108
|
requirements:
|
96
|
-
- - '>='
|
109
|
+
- - ! '>='
|
97
110
|
- !ruby/object:Gem::Version
|
98
111
|
version: '0'
|
99
112
|
- !ruby/object:Gem::Dependency
|
100
113
|
name: yard
|
101
114
|
requirement: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
102
116
|
requirements:
|
103
|
-
- - '>='
|
117
|
+
- - ! '>='
|
104
118
|
- !ruby/object:Gem::Version
|
105
119
|
version: '0'
|
106
120
|
type: :development
|
107
121
|
prerelease: false
|
108
122
|
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
109
124
|
requirements:
|
110
|
-
- - '>='
|
125
|
+
- - ! '>='
|
111
126
|
- !ruby/object:Gem::Version
|
112
127
|
version: '0'
|
113
128
|
- !ruby/object:Gem::Dependency
|
114
129
|
name: pry
|
115
130
|
requirement: !ruby/object:Gem::Requirement
|
131
|
+
none: false
|
116
132
|
requirements:
|
117
|
-
- - '>='
|
133
|
+
- - ! '>='
|
118
134
|
- !ruby/object:Gem::Version
|
119
135
|
version: '0'
|
120
136
|
type: :development
|
121
137
|
prerelease: false
|
122
138
|
version_requirements: !ruby/object:Gem::Requirement
|
139
|
+
none: false
|
123
140
|
requirements:
|
124
|
-
- - '>='
|
141
|
+
- - ! '>='
|
125
142
|
- !ruby/object:Gem::Version
|
126
143
|
version: '0'
|
127
144
|
- !ruby/object:Gem::Dependency
|
128
145
|
name: combustion
|
129
146
|
requirement: !ruby/object:Gem::Requirement
|
147
|
+
none: false
|
130
148
|
requirements:
|
131
|
-
- - '>='
|
149
|
+
- - ! '>='
|
132
150
|
- !ruby/object:Gem::Version
|
133
151
|
version: '0'
|
134
152
|
type: :development
|
135
153
|
prerelease: false
|
136
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
137
156
|
requirements:
|
138
|
-
- - '>='
|
157
|
+
- - ! '>='
|
139
158
|
- !ruby/object:Gem::Version
|
140
159
|
version: '0'
|
141
|
-
description:
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
handles the rest for you.
|
160
|
+
description: ! "api_canon is a declarative documentation generator\n for
|
161
|
+
APIs. Declare the parameters and response codes,\n describe
|
162
|
+
them, and give some example values. api_canon\n handles the
|
163
|
+
rest for you."
|
146
164
|
email:
|
147
165
|
- cameron.walsh@gmail.com
|
148
166
|
- leon@leondewey.com
|
149
167
|
- ben.tillman@gmail.com
|
168
|
+
- doperations@au.westfield.com
|
150
169
|
executables: []
|
151
170
|
extensions: []
|
152
171
|
extra_rdoc_files: []
|
153
172
|
files:
|
154
|
-
- app/
|
155
|
-
- app/
|
173
|
+
- app/controllers/api_canon_controller.rb
|
174
|
+
- app/controllers/swagger_controller.rb
|
175
|
+
- app/helpers/api_canon/api_canon_view_helper.rb
|
156
176
|
- app/views/api_canon/_api_canon.html.erb
|
177
|
+
- app/views/api_canon/_form.html.erb
|
157
178
|
- app/views/api_canon/_rails_2_form.html.erb
|
179
|
+
- app/views/api_canon/api_canon.html.erb
|
158
180
|
- app/views/application/index.html.erb
|
159
181
|
- app/views/layouts/api_canon.html.erb
|
160
|
-
- app/controllers/swagger_controller.rb
|
161
|
-
- app/controllers/api_canon_controller.rb
|
162
|
-
- app/helpers/api_canon/api_canon_view_helper.rb
|
163
|
-
- lib/api_canon/documented_param.rb
|
164
|
-
- lib/api_canon/documented_model.rb
|
165
|
-
- lib/api_canon/version.rb
|
166
|
-
- lib/api_canon/documented_action.rb
|
167
|
-
- lib/api_canon/documentation_store.rb
|
168
182
|
- lib/api_canon/app.rb
|
169
|
-
- lib/api_canon/swagger/base.rb
|
170
|
-
- lib/api_canon/swagger/api_declaration.rb
|
171
|
-
- lib/api_canon/swagger/resource_listing.rb
|
172
183
|
- lib/api_canon/document.rb
|
184
|
+
- lib/api_canon/documentation_store.rb
|
185
|
+
- lib/api_canon/documented_action.rb
|
186
|
+
- lib/api_canon/documented_model.rb
|
187
|
+
- lib/api_canon/documented_param.rb
|
173
188
|
- lib/api_canon/routes.rb
|
174
|
-
- lib/
|
189
|
+
- lib/api_canon/swagger/api_declaration.rb
|
190
|
+
- lib/api_canon/swagger/base.rb
|
191
|
+
- lib/api_canon/swagger/resource_listing.rb
|
192
|
+
- lib/api_canon/version.rb
|
175
193
|
- lib/api_canon.rb
|
194
|
+
- lib/tasks/api_canon_tasks.rake
|
176
195
|
- MIT-LICENSE
|
177
196
|
- Rakefile
|
178
197
|
- README.md
|
179
|
-
- spec/
|
180
|
-
- spec/
|
198
|
+
- spec/internal/config/database.yml
|
199
|
+
- spec/internal/config/routes.rb
|
200
|
+
- spec/internal/db/schema.rb
|
201
|
+
- spec/internal/log/test.log
|
202
|
+
- spec/internal/public/favicon.ico
|
203
|
+
- spec/lib/api_canon/documented_action_spec.rb
|
181
204
|
- spec/lib/api_canon/documented_model_spec.rb
|
205
|
+
- spec/lib/api_canon/documented_param_spec.rb
|
182
206
|
- spec/lib/api_canon/swagger_spec/api_declaration_spec.rb
|
183
207
|
- spec/lib/api_canon/swagger_spec/resource_listing_spec.rb
|
184
|
-
- spec/lib/api_canon/documented_action_spec.rb
|
185
208
|
- spec/lib/api_canon_spec.rb
|
186
|
-
- spec/
|
187
|
-
- spec/internal/db/schema.rb
|
188
|
-
- spec/internal/config/database.yml
|
189
|
-
- spec/internal/config/routes.rb
|
190
|
-
- spec/internal/log/test.log
|
209
|
+
- spec/spec_helper.rb
|
191
210
|
homepage: http://github.com/westfield/api_canon
|
192
211
|
licenses:
|
193
212
|
- MIT
|
194
|
-
metadata: {}
|
195
213
|
post_install_message:
|
196
214
|
rdoc_options: []
|
197
215
|
require_paths:
|
198
216
|
- app
|
199
217
|
- lib
|
200
218
|
required_ruby_version: !ruby/object:Gem::Requirement
|
219
|
+
none: false
|
201
220
|
requirements:
|
202
|
-
- - '>='
|
221
|
+
- - ! '>='
|
203
222
|
- !ruby/object:Gem::Version
|
204
223
|
version: '0'
|
205
224
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
225
|
+
none: false
|
206
226
|
requirements:
|
207
|
-
- - '>='
|
227
|
+
- - ! '>='
|
208
228
|
- !ruby/object:Gem::Version
|
209
229
|
version: '0'
|
210
230
|
requirements: []
|
211
231
|
rubyforge_project:
|
212
|
-
rubygems_version:
|
232
|
+
rubygems_version: 1.8.25
|
213
233
|
signing_key:
|
214
|
-
specification_version:
|
234
|
+
specification_version: 3
|
215
235
|
summary: Declarative documentation generator for APIs.
|
216
236
|
test_files:
|
217
|
-
- spec/
|
218
|
-
- spec/
|
237
|
+
- spec/internal/config/database.yml
|
238
|
+
- spec/internal/config/routes.rb
|
239
|
+
- spec/internal/db/schema.rb
|
240
|
+
- spec/internal/log/test.log
|
241
|
+
- spec/internal/public/favicon.ico
|
242
|
+
- spec/lib/api_canon/documented_action_spec.rb
|
219
243
|
- spec/lib/api_canon/documented_model_spec.rb
|
244
|
+
- spec/lib/api_canon/documented_param_spec.rb
|
220
245
|
- spec/lib/api_canon/swagger_spec/api_declaration_spec.rb
|
221
246
|
- spec/lib/api_canon/swagger_spec/resource_listing_spec.rb
|
222
|
-
- spec/lib/api_canon/documented_action_spec.rb
|
223
247
|
- spec/lib/api_canon_spec.rb
|
224
|
-
- spec/
|
225
|
-
- spec/internal/db/schema.rb
|
226
|
-
- spec/internal/config/database.yml
|
227
|
-
- spec/internal/config/routes.rb
|
228
|
-
- spec/internal/log/test.log
|
248
|
+
- spec/spec_helper.rb
|
229
249
|
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 47daa06eee0e9801cdd6d0476a52006585b96e87
|
4
|
-
data.tar.gz: d424093588fe923332278cbd7d8f2515abdcf704
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 0826027c44ce02123906d4f9c42cf1fade9c6908043ae9fe428bd562eae832202b515932035882fe9017844721d9808bf07036cd03d1dc119d02952a31e64dfd
|
7
|
-
data.tar.gz: 54c41a3748d0443521fea10d78c9b11545fcb9899510c0022b9df100f8062d37971a0f7de4f62a7222bcdfbe4a5ec463c0b646f6c0449c94055999b5f450ddda
|