apipie-rails 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ pkg/
4
4
  spec/dummy/db/*.sqlite3
5
5
  spec/dummy/log/*.log
6
6
  spec/dummy/tmp/
7
+ .idea
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- apipie-rails (0.0.8)
4
+ apipie-rails (0.0.10)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -49,6 +49,7 @@ GEM
49
49
  mime-types (1.19)
50
50
  minitest (3.2.0)
51
51
  multi_json (1.3.6)
52
+ oauth (0.4.6)
52
53
  polyglot (0.3.3)
53
54
  rack (1.4.1)
54
55
  rack-cache (1.2)
@@ -76,6 +77,8 @@ GEM
76
77
  rdoc (3.12)
77
78
  json (~> 1.4)
78
79
  redcarpet (2.1.1)
80
+ rest-client (1.6.7)
81
+ mime-types (>= 1.16)
79
82
  rspec (2.11.0)
80
83
  rspec-core (~> 2.11.0)
81
84
  rspec-expectations (~> 2.11.0)
@@ -108,8 +111,10 @@ DEPENDENCIES
108
111
  RedCloth
109
112
  apipie-rails!
110
113
  minitest
114
+ oauth
111
115
  rails (>= 3.0.10)
112
116
  rake
113
117
  redcarpet
118
+ rest-client
114
119
  rspec-rails
115
120
  sqlite3
@@ -23,4 +23,6 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency "redcarpet"
24
24
  s.add_development_dependency "RedCloth"
25
25
  s.add_development_dependency "rake"
26
+ s.add_development_dependency "rest-client"
27
+ s.add_development_dependency "oauth"
26
28
  end
@@ -102,6 +102,7 @@ module Apipie
102
102
  def client_args(method)
103
103
  client_args = params_in_path(method).dup
104
104
  client_args << "params = {}" if method[:params].any?
105
+ client_args << 'headers = {}'
105
106
  client_args
106
107
  end
107
108
 
@@ -7,32 +7,28 @@ module <%= class_base %><%= class_suffix %>
7
7
  class Base
8
8
  attr_reader :client
9
9
 
10
- def initialize(config = <%= class_base %><%= class_suffix %>.client_config)
11
- @client = RestClient::Resource.new(config[:base_url],
10
+ def initialize(config = <%= class_base %><%= class_suffix %>.client_config, options = { })
11
+ @client = RestClient::Resource.new config[:base_url],
12
12
  :user => config[:username],
13
13
  :password => config[:password],
14
14
  :oauth => config[:oauth],
15
15
  :headers => { :content_type => 'application/json',
16
- :accept => 'application/json' })
16
+ :accept => 'application/json' }
17
17
  end
18
18
 
19
- def call(method, path, payload = nil)
20
- if payload && (method == :post || method == :put)
21
- # TODO: is this neccessary? RestClient converts it automaticaly for me.
22
- payload = payload.to_json
23
- end
24
- ret = client[path].send(*([method, payload].compact))
25
- data = begin
26
- JSON.parse(ret.body)
27
- rescue JSON::ParserError
28
- ret.body
29
- end
30
- return data, ret
19
+ def call(method, path, options = { })
20
+ payload, headers, params = options.values_at :payload, :headers, :params
21
+ headers[:params] = params if params
22
+
23
+ args = [method]
24
+ args << payload.to_json if [:post, :put].include?(method)
25
+ args << headers if headers
26
+ process_data client[path].send(*args)
31
27
  end
32
28
 
33
29
  def validate_params!(options, valid_keys)
34
30
  return unless options.is_a?(Hash)
35
- invalid_keys = options.keys - (valid_keys.is_a?(Hash) ? valid_keys.keys : valid_keys)
31
+ invalid_keys = options.keys.map(&:to_s) - (valid_keys.is_a?(Hash) ? valid_keys.keys : valid_keys)
36
32
  raise ArgumentError, "Invalid keys: #{invalid_keys.join(", ")}" unless invalid_keys.empty?
37
33
 
38
34
  if valid_keys.is_a? Hash
@@ -44,5 +40,16 @@ module <%= class_base %><%= class_suffix %>
44
40
  end
45
41
  end
46
42
 
43
+ protected
44
+
45
+ def process_data(response)
46
+ data = begin
47
+ JSON.parse(response.body)
48
+ rescue JSON::ParserError
49
+ response.body
50
+ end
51
+ return data, response
52
+ end
53
+
47
54
  end
48
55
  end
@@ -7,8 +7,10 @@ module <%= class_base %><%= class_suffix %>
7
7
  <% if method[:params].any? -%>
8
8
  validate_params!(params, <%= validation_hash(method).inspect.html_safe %>)
9
9
  <% end -%>
10
- call(:<%= api(method)[:http_method].downcase %>, "<%= substituted_url(method) %>"<%=
11
- (api(method)[:http_method].downcase == 'get' ? ", :params => params" : ", params") if method[:params].any? %>)
10
+ <% http_method = api(method)[:http_method].downcase -%>
11
+ call(:<%= http_method %>, "<%= substituted_url(method) %>"<%=
12
+ (http_method == 'get' ? ", :params => params" : ", :payload => params") if method[:params].any?
13
+ %>, :headers => headers)
12
14
  end
13
15
  <% end -%>
14
16
 
@@ -1,3 +1,3 @@
1
1
  module Apipie
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
  end
metadata CHANGED
@@ -1,137 +1,162 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: apipie-rails
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.9
3
+ version: !ruby/object:Gem::Version
4
+ hash: 11
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 10
10
+ version: 0.0.10
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
- date: 2012-07-31 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
18
+
19
+ date: 2012-08-14 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ prerelease: false
16
23
  name: rspec-rails
17
- requirement: !ruby/object:Gem::Requirement
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
18
25
  none: false
19
- requirements:
20
- - - ! '>='
21
- - !ruby/object:Gem::Version
22
- version: '0'
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ requirement: *id001
23
34
  type: :development
35
+ - !ruby/object:Gem::Dependency
24
36
  prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ! '>='
29
- - !ruby/object:Gem::Version
30
- version: '0'
31
- - !ruby/object:Gem::Dependency
32
37
  name: rails
33
- requirement: !ruby/object:Gem::Requirement
38
+ version_requirements: &id002 !ruby/object:Gem::Requirement
34
39
  none: false
35
- requirements:
36
- - - ! '>='
37
- - !ruby/object:Gem::Version
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 19
44
+ segments:
45
+ - 3
46
+ - 0
47
+ - 10
38
48
  version: 3.0.10
49
+ requirement: *id002
39
50
  type: :development
51
+ - !ruby/object:Gem::Dependency
40
52
  prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ! '>='
45
- - !ruby/object:Gem::Version
46
- version: 3.0.10
47
- - !ruby/object:Gem::Dependency
48
53
  name: sqlite3
49
- requirement: !ruby/object:Gem::Requirement
54
+ version_requirements: &id003 !ruby/object:Gem::Requirement
50
55
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 0
62
+ version: "0"
63
+ requirement: *id003
55
64
  type: :development
65
+ - !ruby/object:Gem::Dependency
56
66
  prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
60
- - - ! '>='
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- - !ruby/object:Gem::Dependency
64
67
  name: minitest
65
- requirement: !ruby/object:Gem::Requirement
68
+ version_requirements: &id004 !ruby/object:Gem::Requirement
66
69
  none: false
67
- requirements:
68
- - - ! '>='
69
- - !ruby/object:Gem::Version
70
- version: '0'
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
76
+ version: "0"
77
+ requirement: *id004
71
78
  type: :development
79
+ - !ruby/object:Gem::Dependency
72
80
  prerelease: false
73
- version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ! '>='
77
- - !ruby/object:Gem::Version
78
- version: '0'
79
- - !ruby/object:Gem::Dependency
80
81
  name: redcarpet
81
- requirement: !ruby/object:Gem::Requirement
82
+ version_requirements: &id005 !ruby/object:Gem::Requirement
82
83
  none: false
83
- requirements:
84
- - - ! '>='
85
- - !ruby/object:Gem::Version
86
- version: '0'
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 0
90
+ version: "0"
91
+ requirement: *id005
87
92
  type: :development
93
+ - !ruby/object:Gem::Dependency
88
94
  prerelease: false
89
- version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
- requirements:
92
- - - ! '>='
93
- - !ruby/object:Gem::Version
94
- version: '0'
95
- - !ruby/object:Gem::Dependency
96
95
  name: RedCloth
97
- requirement: !ruby/object:Gem::Requirement
96
+ version_requirements: &id006 !ruby/object:Gem::Requirement
98
97
  none: false
99
- requirements:
100
- - - ! '>='
101
- - !ruby/object:Gem::Version
102
- version: '0'
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
105
+ requirement: *id006
103
106
  type: :development
107
+ - !ruby/object:Gem::Dependency
104
108
  prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
109
  name: rake
113
- requirement: !ruby/object:Gem::Requirement
110
+ version_requirements: &id007 !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ hash: 3
116
+ segments:
117
+ - 0
118
+ version: "0"
119
+ requirement: *id007
120
+ type: :development
121
+ - !ruby/object:Gem::Dependency
122
+ prerelease: false
123
+ name: rest-client
124
+ version_requirements: &id008 !ruby/object:Gem::Requirement
114
125
  none: false
115
- requirements:
116
- - - ! '>='
117
- - !ruby/object:Gem::Version
118
- version: '0'
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ hash: 3
130
+ segments:
131
+ - 0
132
+ version: "0"
133
+ requirement: *id008
119
134
  type: :development
135
+ - !ruby/object:Gem::Dependency
120
136
  prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
137
+ name: oauth
138
+ version_requirements: &id009 !ruby/object:Gem::Requirement
122
139
  none: false
123
- requirements:
124
- - - ! '>='
125
- - !ruby/object:Gem::Version
126
- version: '0'
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ hash: 3
144
+ segments:
145
+ - 0
146
+ version: "0"
147
+ requirement: *id009
148
+ type: :development
127
149
  description: Maintain your API documentation up to date!
128
- email:
150
+ email:
129
151
  - pajkycz@gmail.com
130
152
  - inecas@redhat.com
131
153
  executables: []
154
+
132
155
  extensions: []
156
+
133
157
  extra_rdoc_files: []
134
- files:
158
+
159
+ files:
135
160
  - .gitignore
136
161
  - .rspec
137
162
  - .rvmrc
@@ -239,29 +264,38 @@ files:
239
264
  - spec/spec_helper.rb
240
265
  homepage: http://github.com/Pajk/apipie-rails
241
266
  licenses: []
267
+
242
268
  post_install_message:
243
269
  rdoc_options: []
244
- require_paths:
270
+
271
+ require_paths:
245
272
  - lib
246
- required_ruby_version: !ruby/object:Gem::Requirement
273
+ required_ruby_version: !ruby/object:Gem::Requirement
247
274
  none: false
248
- requirements:
249
- - - ! '>='
250
- - !ruby/object:Gem::Version
251
- version: '0'
252
- required_rubygems_version: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - ">="
277
+ - !ruby/object:Gem::Version
278
+ hash: 3
279
+ segments:
280
+ - 0
281
+ version: "0"
282
+ required_rubygems_version: !ruby/object:Gem::Requirement
253
283
  none: false
254
- requirements:
255
- - - ! '>='
256
- - !ruby/object:Gem::Version
257
- version: '0'
284
+ requirements:
285
+ - - ">="
286
+ - !ruby/object:Gem::Version
287
+ hash: 3
288
+ segments:
289
+ - 0
290
+ version: "0"
258
291
  requirements: []
292
+
259
293
  rubyforge_project:
260
294
  rubygems_version: 1.8.24
261
295
  signing_key:
262
296
  specification_version: 3
263
297
  summary: Rails REST API documentation tool
264
- test_files:
298
+ test_files:
265
299
  - spec/controllers/apipies_controller_spec.rb
266
300
  - spec/controllers/users_controller_spec.rb
267
301
  - spec/dummy/Rakefile
@@ -300,4 +334,3 @@ test_files:
300
334
  - spec/dummy/public/stylesheets/.gitkeep
301
335
  - spec/dummy/script/rails
302
336
  - spec/spec_helper.rb
303
- has_rdoc: