apipie-rails 0.0.9 → 0.0.10

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/.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: