phocoder-rb 0.1.3 → 0.1.6

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,2 @@
1
- 0.1.3
1
+ 0.1.6
2
+
data/lib/phocoder/base.rb CHANGED
@@ -28,15 +28,19 @@ module Phocoder
28
28
  end
29
29
 
30
30
  def self.decode(content, format=nil)
31
- if content.is_a?(String)
32
- if format.to_s == 'xml'
33
- Hash.from_xml(content)
31
+ begin
32
+ if content.is_a?(String)
33
+ if format.to_s == 'xml'
34
+ Hash.from_xml(content)
35
+ else
36
+ ActiveSupport::JSON.decode(content)
37
+ end
34
38
  else
35
- ActiveSupport::JSON.decode(content)
39
+ content
36
40
  end
37
- else
41
+ rescue Exception => e
38
42
  content
39
- end
43
+ end
40
44
  end
41
45
 
42
46
  def decode(content, format=nil)
data/lib/phocoder/job.rb CHANGED
@@ -1,9 +1,13 @@
1
1
  module Phocoder
2
2
  class Job < Base
3
+
4
+ def self.pick_format(options)
5
+ options[:format] || "json"
6
+ end
3
7
 
4
8
  def self.create(params={}, options={})
5
9
  params = apply_api_key(params, options[:format])
6
- HTTP.post("#{options[:base_url] || base_url}/jobs",
10
+ HTTP.post("#{options[:base_url] || base_url}/jobs.#{pick_format options}",
7
11
  encode(params, options[:format]),
8
12
  options)
9
13
  end
@@ -14,27 +18,27 @@ module Phocoder
14
18
  :per_page => options.delete(:per_page) || 50,
15
19
  :state => options.delete(:state) }
16
20
 
17
- HTTP.get("#{options[:base_url] || base_url}/jobs", merge_params(options, params))
21
+ HTTP.get("#{options[:base_url] || base_url}/jobs.#{pick_format options}", merge_params(options, params))
18
22
  end
19
23
 
20
24
  def self.details(job_id, options={})
21
25
  params = {:api_key => options.delete(:api_key) || api_key}
22
- HTTP.get("#{options[:base_url] || base_url}/jobs/#{job_id}", merge_params(options, params))
26
+ HTTP.get("#{options[:base_url] || base_url}/jobs/#{job_id}.#{pick_format options}", merge_params(options, params))
23
27
  end
24
28
 
25
29
  def self.resubmit(job_id, options={})
26
30
  params = {:api_key => options.delete(:api_key) || api_key}
27
- HTTP.get("#{options[:base_url] || base_url}/jobs/#{job_id}/resubmit", merge_params(options, params))
31
+ HTTP.get("#{options[:base_url] || base_url}/jobs/#{job_id}/resubmit.#{pick_format options}", merge_params(options, params))
28
32
  end
29
33
 
30
34
  def self.cancel(job_id, options={})
31
35
  params = {:api_key => options.delete(:api_key) || api_key}
32
- HTTP.get("#{options[:base_url] || base_url}/jobs/#{job_id}/cancel", merge_params(options, params))
36
+ HTTP.get("#{options[:base_url] || base_url}/jobs/#{job_id}/cancel.#{pick_format options}", merge_params(options, params))
33
37
  end
34
38
 
35
39
  def self.delete(job_id, options={})
36
40
  params = {:api_key => options.delete(:api_key) || api_key}
37
- HTTP.delete("#{options[:base_url] || base_url}/jobs/#{job_id}", merge_params(options, params))
41
+ HTTP.delete("#{options[:base_url] || base_url}/jobs/#{job_id}.#{pick_format options}", merge_params(options, params))
38
42
  end
39
43
 
40
44
 
data/phocoder-rb.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{phocoder-rb}
8
- s.version = "0.1.3"
8
+ s.version = "0.1.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Jeremy Green"]
12
- s.date = %q{2011-02-10}
11
+ s.authors = [%q{Jeremy Green}]
12
+ s.date = %q{2011-12-23}
13
13
  s.description = %q{The ruby client for the phocoder.com API.}
14
14
  s.email = %q{jagthedrummer@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -20,7 +20,6 @@ Gem::Specification.new do |s|
20
20
  ".document",
21
21
  ".rspec",
22
22
  "Gemfile",
23
- "Gemfile.lock",
24
23
  "LICENSE.txt",
25
24
  "README.rdoc",
26
25
  "Rakefile",
@@ -45,9 +44,9 @@ Gem::Specification.new do |s|
45
44
  "spec/spec_helper.rb"
46
45
  ]
47
46
  s.homepage = %q{http://github.com/jagthedrummer/phocoder-rb}
48
- s.licenses = ["MIT"]
49
- s.require_paths = ["lib"]
50
- s.rubygems_version = %q{1.3.7}
47
+ s.licenses = [%q{MIT}]
48
+ s.require_paths = [%q{lib}]
49
+ s.rubygems_version = %q{1.8.7}
51
50
  s.summary = %q{The ruby client for the phocoder.com API.}
52
51
  s.test_files = [
53
52
  "spec/phocoder/http/net_http_spec.rb",
@@ -60,7 +59,6 @@ Gem::Specification.new do |s|
60
59
  ]
61
60
 
62
61
  if s.respond_to? :specification_version then
63
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
64
62
  s.specification_version = 3
65
63
 
66
64
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -63,7 +63,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
63
63
 
64
64
  describe ".post" do
65
65
  it "should POST to specified body to the specified path" do
66
- Phocoder::HTTP.http_backend.expects(:post).
66
+ Phocoder::HTTP::NetHTTP.expects(:post).
67
67
  with('https://example.com',:body => '{}').
68
68
  returns(Phocoder::Response.new)
69
69
  Phocoder::HTTP::NetHTTP.post('https://example.com',:body => '{}').should_not be_nil
@@ -72,7 +72,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
72
72
 
73
73
  describe ".put" do
74
74
  it "should PUT to specified body to the specified path" do
75
- Phocoder::HTTP.http_backend.expects(:put).
75
+ Phocoder::HTTP::NetHTTP.expects(:put).
76
76
  with('https://example.com',:body => '{}').
77
77
  returns(Phocoder::Response.new)
78
78
  Phocoder::HTTP::NetHTTP.put('https://example.com', :body => '{}')
@@ -81,7 +81,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
81
81
 
82
82
  describe ".get" do
83
83
  it "should GET to specified body to the specified path" do
84
- Phocoder::HTTP.http_backend.expects(:get).
84
+ Phocoder::HTTP::NetHTTP.expects(:get).
85
85
  with('https://example.com').
86
86
  returns(Phocoder::Response.new)
87
87
  Phocoder::HTTP::NetHTTP.get('https://example.com')
@@ -90,7 +90,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
90
90
 
91
91
  describe ".delete" do
92
92
  it "should DELETE to specified body to the specified path" do
93
- Phocoder::HTTP.http_backend.expects(:delete).
93
+ Phocoder::HTTP::NetHTTP.expects(:delete).
94
94
  with('https://example.com').
95
95
  returns(Phocoder::Response.new)
96
96
  Phocoder::HTTP::NetHTTP.delete('https://example.com')
@@ -15,14 +15,14 @@ describe "Phocoder::Job" do
15
15
  end
16
16
 
17
17
  it "should POST to the correct url and return a response" do
18
- Phocoder::HTTP.expects(:post).with(@url, @params_as_json, {}).returns(Phocoder::Response.new)
18
+ Phocoder::HTTP.expects(:post).with(@url + ".json", @params_as_json, {}).returns(Phocoder::Response.new)
19
19
  r = Phocoder::Job.create(@params)
20
20
  r.class.should == Phocoder::Response
21
21
  end
22
22
 
23
23
  it "should apply the global API key when JSON and no api_key is passed" do
24
24
  Phocoder.api_key = 'asdfasdf'
25
- Phocoder::HTTP.expects(:post).with(@url,@params_as_json,{}) do |url, params, options|
25
+ Phocoder::HTTP.expects(:post).with(@url + ".json",@params_as_json,{}) do |url, params, options|
26
26
  Phocoder::Base.decode(params)['api_key'].should == Phocoder.api_key
27
27
  end.returns(Phocoder::Response.new)
28
28
  Phocoder::Job.create(:input => @params[:input])
@@ -31,7 +31,7 @@ describe "Phocoder::Job" do
31
31
 
32
32
  it "should apply the global API key when XML and no api_key is passed" do
33
33
  Phocoder.api_key = 'asdfasdf'
34
- Phocoder::HTTP.expects(:post).with(@url,@params_as_xml,{}) do |url, params, options|
34
+ Phocoder::HTTP.expects(:post).with(@url + ".xml",@params_as_xml,{}) do |url, params, options|
35
35
  Phocoder::Base.decode(params, :xml)['api_request']['api_key'].should == Phocoder.api_key
36
36
  end.returns(Phocoder::Response.new)
37
37
  Phocoder::Job.create({:api_request => {:input => @params[:input]}}, {:format => :xml})
@@ -40,7 +40,7 @@ describe "Phocoder::Job" do
40
40
 
41
41
  it "should apply the global API key when an XML string is passed and no api_key is passed" do
42
42
  Phocoder.api_key = 'asdfasdf'
43
- Phocoder::HTTP.expects(:post).with(@url,@params_as_xml,{}) do |url, params, options|
43
+ Phocoder::HTTP.expects(:post).with(@url + ".json",@params_as_xml,{}) do |url, params, options|
44
44
  Phocoder::Base.decode(params, :xml)['api_request']['api_key'] == Phocoder.api_key
45
45
  end.returns(Phocoder::Response.new)
46
46
  Phocoder::Job.create({:input => @params[:input]}.to_xml(:root => :api_request), {:format => :xml})
@@ -56,7 +56,7 @@ describe "Phocoder::Job" do
56
56
  end
57
57
 
58
58
  it "should GET the correct url and return a response" do
59
- Phocoder::HTTP.stubs(:get).with(@url, {:params => {:api_key => @api_key,
59
+ Phocoder::HTTP.stubs(:get).with(@url + ".json", {:params => {:api_key => @api_key,
60
60
  :page => 1,
61
61
  :per_page => 50,
62
62
  :state => nil}}).returns(Phocoder::Response.new)
@@ -64,7 +64,7 @@ describe "Phocoder::Job" do
64
64
  end
65
65
 
66
66
  it "should merge params well" do
67
- Phocoder::HTTP.stubs(:get).with(@url, {:params => {:api_key => @api_key,
67
+ Phocoder::HTTP.stubs(:get).with(@url + ".json", {:params => {:api_key => @api_key,
68
68
  :page => 1,
69
69
  :per_page => 50,
70
70
  :some => 'param',
@@ -80,7 +80,7 @@ describe "Phocoder::Job" do
80
80
  end
81
81
 
82
82
  it "should GET the correct url and return a response" do
83
- Phocoder::HTTP.stubs(:get).with(@url, {:params => {:api_key => @api_key}}).returns(Phocoder::Response.new)
83
+ Phocoder::HTTP.stubs(:get).with(@url + ".json", {:params => {:api_key => @api_key}}).returns(Phocoder::Response.new)
84
84
  Phocoder::Response.should == Phocoder::Job.details(1, :api_key => @api_key).class
85
85
  end
86
86
  end
@@ -92,7 +92,7 @@ describe "Phocoder::Job" do
92
92
  end
93
93
 
94
94
  it "should GET the correct url and return a response" do
95
- Phocoder::HTTP.stubs(:get).with(@url, {:params => {:api_key => @api_key}}).returns(Phocoder::Response.new)
95
+ Phocoder::HTTP.stubs(:get).with(@url + ".json", {:params => {:api_key => @api_key}}).returns(Phocoder::Response.new)
96
96
  Phocoder::Response.should == Phocoder::Job.resubmit(1, :api_key => @api_key).class
97
97
  end
98
98
  end
@@ -104,7 +104,7 @@ describe "Phocoder::Job" do
104
104
  end
105
105
 
106
106
  it "should GET the correct url and return a response" do
107
- Phocoder::HTTP.stubs(:get).with(@url, {:params => {:api_key => @api_key}}).returns(Phocoder::Response.new)
107
+ Phocoder::HTTP.stubs(:get).with(@url + ".json", {:params => {:api_key => @api_key}}).returns(Phocoder::Response.new)
108
108
  Phocoder::Response.should == Phocoder::Job.cancel(1, :api_key => @api_key).class
109
109
  end
110
110
  end
@@ -116,7 +116,7 @@ describe "Phocoder::Job" do
116
116
  end
117
117
 
118
118
  it "should DELETE the correct url and return a response" do
119
- Phocoder::HTTP.stubs(:delete).with(@url, {:params => {:api_key => @api_key}}).returns(Phocoder::Response.new)
119
+ Phocoder::HTTP.stubs(:delete).with(@url + ".json", {:params => {:api_key => @api_key}}).returns(Phocoder::Response.new)
120
120
  Phocoder::Response.should == Phocoder::Job.delete(1, :api_key => @api_key).class
121
121
  end
122
122
  end
metadata CHANGED
@@ -1,173 +1,126 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: phocoder-rb
3
- version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 1
9
- - 3
10
- version: 0.1.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.6
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Jeremy Green
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-02-10 00:00:00 -06:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- prerelease: false
12
+ date: 2011-12-23 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
23
15
  name: activesupport
24
- version_requirements: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &74393930 !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
18
+ requirements:
27
19
  - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 7
30
- segments:
31
- - 3
32
- - 0
33
- - 0
20
+ - !ruby/object:Gem::Version
34
21
  version: 3.0.0
35
- requirement: *id001
36
22
  type: :runtime
37
- - !ruby/object:Gem::Dependency
38
23
  prerelease: false
24
+ version_requirements: *74393930
25
+ - !ruby/object:Gem::Dependency
39
26
  name: i18n
40
- version_requirements: &id002 !ruby/object:Gem::Requirement
27
+ requirement: &74393690 !ruby/object:Gem::Requirement
41
28
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- version: "0"
49
- requirement: *id002
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
50
33
  type: :runtime
51
- - !ruby/object:Gem::Dependency
52
34
  prerelease: false
35
+ version_requirements: *74393690
36
+ - !ruby/object:Gem::Dependency
53
37
  name: builder
54
- version_requirements: &id003 !ruby/object:Gem::Requirement
38
+ requirement: &74393450 !ruby/object:Gem::Requirement
55
39
  none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 0
62
- version: "0"
63
- requirement: *id003
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
64
44
  type: :runtime
65
- - !ruby/object:Gem::Dependency
66
45
  prerelease: false
46
+ version_requirements: *74393450
47
+ - !ruby/object:Gem::Dependency
67
48
  name: rspec
68
- version_requirements: &id004 !ruby/object:Gem::Requirement
49
+ requirement: &74393210 !ruby/object:Gem::Requirement
69
50
  none: false
70
- requirements:
51
+ requirements:
71
52
  - - ~>
72
- - !ruby/object:Gem::Version
73
- hash: 11
74
- segments:
75
- - 2
76
- - 1
77
- - 0
53
+ - !ruby/object:Gem::Version
78
54
  version: 2.1.0
79
- requirement: *id004
80
55
  type: :development
81
- - !ruby/object:Gem::Dependency
82
56
  prerelease: false
57
+ version_requirements: *74393210
58
+ - !ruby/object:Gem::Dependency
83
59
  name: bundler
84
- version_requirements: &id005 !ruby/object:Gem::Requirement
60
+ requirement: &74392970 !ruby/object:Gem::Requirement
85
61
  none: false
86
- requirements:
62
+ requirements:
87
63
  - - ~>
88
- - !ruby/object:Gem::Version
89
- hash: 23
90
- segments:
91
- - 1
92
- - 0
93
- - 0
64
+ - !ruby/object:Gem::Version
94
65
  version: 1.0.0
95
- requirement: *id005
96
66
  type: :development
97
- - !ruby/object:Gem::Dependency
98
67
  prerelease: false
68
+ version_requirements: *74392970
69
+ - !ruby/object:Gem::Dependency
99
70
  name: jeweler
100
- version_requirements: &id006 !ruby/object:Gem::Requirement
71
+ requirement: &74392730 !ruby/object:Gem::Requirement
101
72
  none: false
102
- requirements:
73
+ requirements:
103
74
  - - ~>
104
- - !ruby/object:Gem::Version
105
- hash: 1
106
- segments:
107
- - 1
108
- - 5
109
- - 1
75
+ - !ruby/object:Gem::Version
110
76
  version: 1.5.1
111
- requirement: *id006
112
77
  type: :development
113
- - !ruby/object:Gem::Dependency
114
78
  prerelease: false
79
+ version_requirements: *74392730
80
+ - !ruby/object:Gem::Dependency
115
81
  name: rcov
116
- version_requirements: &id007 !ruby/object:Gem::Requirement
82
+ requirement: &74392490 !ruby/object:Gem::Requirement
117
83
  none: false
118
- requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- hash: 3
122
- segments:
123
- - 0
124
- version: "0"
125
- requirement: *id007
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
126
88
  type: :development
127
- - !ruby/object:Gem::Dependency
128
89
  prerelease: false
90
+ version_requirements: *74392490
91
+ - !ruby/object:Gem::Dependency
129
92
  name: mocha
130
- version_requirements: &id008 !ruby/object:Gem::Requirement
93
+ requirement: &74392250 !ruby/object:Gem::Requirement
131
94
  none: false
132
- requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- hash: 3
136
- segments:
137
- - 0
138
- version: "0"
139
- requirement: *id008
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
140
99
  type: :development
141
- - !ruby/object:Gem::Dependency
142
100
  prerelease: false
101
+ version_requirements: *74392250
102
+ - !ruby/object:Gem::Dependency
143
103
  name: webmock
144
- version_requirements: &id009 !ruby/object:Gem::Requirement
104
+ requirement: &74392010 !ruby/object:Gem::Requirement
145
105
  none: false
146
- requirements:
106
+ requirements:
147
107
  - - ~>
148
- - !ruby/object:Gem::Version
149
- hash: 15
150
- segments:
151
- - 1
152
- - 6
153
- - 0
108
+ - !ruby/object:Gem::Version
154
109
  version: 1.6.0
155
- requirement: *id009
156
110
  type: :development
111
+ prerelease: false
112
+ version_requirements: *74392010
157
113
  description: The ruby client for the phocoder.com API.
158
114
  email: jagthedrummer@gmail.com
159
115
  executables: []
160
-
161
116
  extensions: []
162
-
163
- extra_rdoc_files:
117
+ extra_rdoc_files:
164
118
  - LICENSE.txt
165
119
  - README.rdoc
166
- files:
120
+ files:
167
121
  - .document
168
122
  - .rspec
169
123
  - Gemfile
170
- - Gemfile.lock
171
124
  - LICENSE.txt
172
125
  - README.rdoc
173
126
  - Rakefile
@@ -190,41 +143,35 @@ files:
190
143
  - spec/phocoder/phocoder_spec.rb
191
144
  - spec/phocoder/response_spec.rb
192
145
  - spec/spec_helper.rb
193
- has_rdoc: true
194
146
  homepage: http://github.com/jagthedrummer/phocoder-rb
195
- licenses:
147
+ licenses:
196
148
  - MIT
197
149
  post_install_message:
198
150
  rdoc_options: []
199
-
200
- require_paths:
151
+ require_paths:
201
152
  - lib
202
- required_ruby_version: !ruby/object:Gem::Requirement
153
+ required_ruby_version: !ruby/object:Gem::Requirement
203
154
  none: false
204
- requirements:
205
- - - ">="
206
- - !ruby/object:Gem::Version
207
- hash: 3
208
- segments:
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ segments:
209
160
  - 0
210
- version: "0"
211
- required_rubygems_version: !ruby/object:Gem::Requirement
161
+ hash: 536810611
162
+ required_rubygems_version: !ruby/object:Gem::Requirement
212
163
  none: false
213
- requirements:
214
- - - ">="
215
- - !ruby/object:Gem::Version
216
- hash: 3
217
- segments:
218
- - 0
219
- version: "0"
164
+ requirements:
165
+ - - ! '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
220
168
  requirements: []
221
-
222
169
  rubyforge_project:
223
- rubygems_version: 1.3.7
170
+ rubygems_version: 1.8.7
224
171
  signing_key:
225
172
  specification_version: 3
226
173
  summary: The ruby client for the phocoder.com API.
227
- test_files:
174
+ test_files:
228
175
  - spec/phocoder/http/net_http_spec.rb
229
176
  - spec/phocoder/http/typhoeus_spec.rb
230
177
  - spec/phocoder/http_spec.rb
data/Gemfile.lock DELETED
@@ -1,47 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- activesupport (3.0.0)
5
- addressable (2.2.2)
6
- autotest (4.4.4)
7
- builder (2.1.2)
8
- crack (0.1.8)
9
- diff-lcs (1.1.2)
10
- git (1.2.5)
11
- i18n (0.5.0)
12
- jeweler (1.5.1)
13
- bundler (~> 1.0.0)
14
- git (>= 1.2.5)
15
- rake
16
- mocha (0.9.10)
17
- rake
18
- rake (0.8.7)
19
- rcov (0.9.9)
20
- redgreen (1.2.2)
21
- rspec (2.1.0)
22
- rspec-core (~> 2.1.0)
23
- rspec-expectations (~> 2.1.0)
24
- rspec-mocks (~> 2.1.0)
25
- rspec-core (2.1.0)
26
- rspec-expectations (2.1.0)
27
- diff-lcs (~> 1.1.2)
28
- rspec-mocks (2.1.0)
29
- webmock (1.6.1)
30
- addressable (>= 2.2.2)
31
- crack (>= 0.1.7)
32
-
33
- PLATFORMS
34
- ruby
35
-
36
- DEPENDENCIES
37
- activesupport (~> 3.0.0)
38
- autotest (= 4.4.4)
39
- builder
40
- bundler (~> 1.0.0)
41
- i18n
42
- jeweler (~> 1.5.1)
43
- mocha
44
- rcov
45
- redgreen (= 1.2.2)
46
- rspec (~> 2.1.0)
47
- webmock (~> 1.6.0)