apify 0.5.2 → 0.5.3

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.2
1
+ 0.5.3
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{apify}
8
- s.version = "0.5.2"
8
+ s.version = "0.5.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Henning Koch"]
12
- s.date = %q{2011-01-24}
12
+ s.date = %q{2011-03-02}
13
13
  s.description = %q{Compact definition of JSON APIs for Rails applications. }
14
14
  s.email = %q{github@makandra.de}
15
15
  s.extra_rdoc_files = [
@@ -109,7 +109,7 @@ Gem::Specification.new do |s|
109
109
  s.homepage = %q{http://github.com/makandra/apify}
110
110
  s.rdoc_options = ["--charset=UTF-8"]
111
111
  s.require_paths = ["lib"]
112
- s.rubygems_version = %q{1.3.6}
112
+ s.rubygems_version = %q{1.3.7}
113
113
  s.summary = %q{Compact definition of JSON APIs for Rails applications.}
114
114
  s.test_files = [
115
115
  "spec/apify/action_spec.rb",
@@ -154,7 +154,7 @@ Gem::Specification.new do |s|
154
154
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
155
155
  s.specification_version = 3
156
156
 
157
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
157
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
158
158
  s.add_runtime_dependency(%q<json>, [">= 0"])
159
159
  s.add_runtime_dependency(%q<jsonschema>, [">= 0"])
160
160
  s.add_runtime_dependency(%q<rest-client>, [">= 1.6.1"])
@@ -3,6 +3,7 @@
3
3
  require 'json'
4
4
  require 'restclient'
5
5
  require 'apify/errors'
6
+ require 'cgi'
6
7
 
7
8
  module Apify
8
9
  class Client
@@ -34,9 +35,13 @@ module Apify
34
35
  private
35
36
 
36
37
  def request(method, path, args = nil)
37
- url = build_url(path)
38
38
  params = args ? { :args => args.to_json } : {}
39
- [:get, :head].include?(method) and params = { :params => params }
39
+ if [:get, :delete].include?(method)
40
+ url = build_url(path, params)
41
+ params = {}
42
+ else
43
+ url = build_url(path)
44
+ end
40
45
  json = RestClient.send(method, url, params)
41
46
  JSON.parse(json)
42
47
  rescue RestClient::Unauthorized => e
@@ -45,7 +50,7 @@ module Apify
45
50
  raise Apify::RequestFailed.new("API request failed with status #{e.http_code}", e.http_body)
46
51
  end
47
52
 
48
- def build_url(path)
53
+ def build_url(path, params = {})
49
54
  url = ""
50
55
  url << @protocol
51
56
  url << '://'
@@ -53,6 +58,11 @@ module Apify
53
58
  url << @host
54
59
  url << ":#{@port}" if @port
55
60
  url << path
61
+ unless params.empty?
62
+ url << '?'
63
+ url << params.collect { |k, v| "#{k}=#{CGI::escape(v.to_s)}" }.join('&')
64
+ end
65
+ url
56
66
  end
57
67
 
58
68
  end
@@ -35,7 +35,7 @@ describe Apify::Client do
35
35
  WebMock.should have_requested(:get, "http://host/api/ping")
36
36
  end
37
37
 
38
- it "should call GET actions correctly" do
38
+ it "should serialize params into the URL for GET requests" do
39
39
  client = Apify::Client.new(:host => 'host')
40
40
  args = { :name => 'Jack' }
41
41
  stub_request(:get, 'http://host/api/hello').with(:query => { :args => args.to_json }).to_return(:body => '{}')
@@ -43,6 +43,14 @@ describe Apify::Client do
43
43
  WebMock.should have_requested(:get, "http://host/api/hello").with(:query => { :args => args.to_json })
44
44
  end
45
45
 
46
+ it "should serialize params into the URL for DELETE requests" do
47
+ client = Apify::Client.new(:host => 'host')
48
+ args = { :name => 'Jack' }
49
+ stub_request(:delete, 'http://host/api/terminate').with(:query => { :args => args.to_json }).to_return(:body => '{}')
50
+ client.delete('/api/terminate', args)
51
+ WebMock.should have_requested(:delete, "http://host/api/terminate").with(:query => { :args => args.to_json })
52
+ end
53
+
46
54
  it "should connect using SSL" do
47
55
  client = Apify::Client.new(:host => 'host', :protocol => 'https')
48
56
  stub_request(:get, 'https://host/api/ping').to_return(:body => '{}')
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apify
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 13
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 5
8
- - 2
9
- version: 0.5.2
9
+ - 3
10
+ version: 0.5.3
10
11
  platform: ruby
11
12
  authors:
12
13
  - Henning Koch
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-01-24 00:00:00 +01:00
18
+ date: 2011-03-02 00:00:00 +01:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: json
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 3
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
@@ -33,9 +36,11 @@ dependencies:
33
36
  name: jsonschema
34
37
  prerelease: false
35
38
  requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
36
40
  requirements:
37
41
  - - ">="
38
42
  - !ruby/object:Gem::Version
43
+ hash: 3
39
44
  segments:
40
45
  - 0
41
46
  version: "0"
@@ -45,9 +50,11 @@ dependencies:
45
50
  name: rest-client
46
51
  prerelease: false
47
52
  requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
48
54
  requirements:
49
55
  - - ">="
50
56
  - !ruby/object:Gem::Version
57
+ hash: 13
51
58
  segments:
52
59
  - 1
53
60
  - 6
@@ -163,23 +170,27 @@ rdoc_options:
163
170
  require_paths:
164
171
  - lib
165
172
  required_ruby_version: !ruby/object:Gem::Requirement
173
+ none: false
166
174
  requirements:
167
175
  - - ">="
168
176
  - !ruby/object:Gem::Version
177
+ hash: 3
169
178
  segments:
170
179
  - 0
171
180
  version: "0"
172
181
  required_rubygems_version: !ruby/object:Gem::Requirement
182
+ none: false
173
183
  requirements:
174
184
  - - ">="
175
185
  - !ruby/object:Gem::Version
186
+ hash: 3
176
187
  segments:
177
188
  - 0
178
189
  version: "0"
179
190
  requirements: []
180
191
 
181
192
  rubyforge_project:
182
- rubygems_version: 1.3.6
193
+ rubygems_version: 1.3.7
183
194
  signing_key:
184
195
  specification_version: 3
185
196
  summary: Compact definition of JSON APIs for Rails applications.