gems 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,10 +10,10 @@ Gem::Specification.new do |gem|
10
10
  gem.add_development_dependency 'webmock', '~> 1.6'
11
11
  gem.add_development_dependency 'yard', '~> 0.7'
12
12
  gem.add_runtime_dependency 'faraday', '~> 0.6.1'
13
- gem.add_runtime_dependency 'faraday_middleware', '~> 0.6.3'
13
+ gem.add_runtime_dependency 'faraday_middleware', '~> 0.6.5'
14
14
  gem.add_runtime_dependency 'hashie', '~> 1.0.0'
15
15
  gem.add_runtime_dependency 'multi_json', '~> 1.0.3'
16
- gem.add_runtime_dependency 'rash', '~> 0.3.0'
16
+ gem.add_runtime_dependency 'multi_xml', '~> 0.2.2'
17
17
 
18
18
  gem.authors = ["Erik Michaels-Ober"]
19
19
  gem.email = ['sferik@gmail.com']
@@ -50,5 +50,15 @@ module Gems
50
50
  def downloads(gem, version, options={})
51
51
  get("/api/v1/versions/#{gem}-#{version}/downloads.json", options)
52
52
  end
53
+
54
+ # Returns an array of hashes for all versions of given gems
55
+ #
56
+ # @param gems [Array] A list of gem names
57
+ # @return [Array]
58
+ # @example
59
+ # Gems.dependencies 'rails', 'thor'
60
+ def dependencies(*gems)
61
+ get("/api/v1/dependencies", {:gems => gems.join(',')}, :marshal)
62
+ end
53
63
  end
54
64
  end
@@ -4,9 +4,8 @@ module Gems
4
4
  module Connection
5
5
  private
6
6
 
7
- def connection
7
+ def connection(format=:json)
8
8
  options = {
9
- :headers => {'Accept' => 'application/json'},
10
9
  :ssl => {:verify => false},
11
10
  :url => 'https://rubygems.org',
12
11
  }
@@ -14,9 +13,11 @@ module Gems
14
13
  Faraday.new(options) do |connection|
15
14
  connection.use Faraday::Request::UrlEncoded
16
15
  connection.use Faraday::Response::RaiseError
17
- connection.use Faraday::Response::Rashify
18
- connection.use Faraday::Response::ParseJson
19
- connection.adapter(Faraday.default_adapter)
16
+ connection.use Faraday::Response::Mashify
17
+ connection.use Faraday::Response::ParseXml if :xml == format
18
+ connection.use Faraday::Response::ParseJson if :json == format
19
+ connection.use Faraday::Response::ParseMarshal if :marshal == format
20
+ connection.adapter Faraday.default_adapter
20
21
  end
21
22
  end
22
23
  end
@@ -1,13 +1,13 @@
1
1
  module Gems
2
2
  module Request
3
- def get(path, options={})
4
- request(:get, path, options)
3
+ def get(path, options={}, format=:json)
4
+ request(:get, path, options, format)
5
5
  end
6
6
 
7
7
  private
8
8
 
9
- def request(method, path, options)
10
- response = connection.send(method) do |request|
9
+ def request(method, path, options, format)
10
+ response = connection(format).send(method) do |request|
11
11
  request.url(path, options)
12
12
  end
13
13
  response.body
@@ -1,3 +1,3 @@
1
1
  module Gems
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -41,7 +41,7 @@ describe Gems::Client do
41
41
  end
42
42
  end
43
43
 
44
- describe "#dependencies" do
44
+ describe "#downloads" do
45
45
  before do
46
46
  stub_get("/api/v1/versions/coulda-0.6.3/downloads.json").to_return(:body => fixture("downloads.json"))
47
47
  end
@@ -52,4 +52,16 @@ describe Gems::Client do
52
52
  downloads["2011-11-01"].should == 0
53
53
  end
54
54
  end
55
+
56
+ describe "#dependencies" do
57
+ before do
58
+ stub_get("/api/v1/dependencies?gems=rails,thor").to_return(:body => fixture("dependencies.json"))
59
+ end
60
+
61
+ it "should return an array of hashes for all versions of given gems" do
62
+ dependencies = @client.dependencies 'rails', 'thor'
63
+ a_get("/api/v1/dependencies?gems=rails,thor").should have_been_made
64
+ dependencies.first.number.should == "3.0.9"
65
+ end
66
+ end
55
67
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: gems
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Erik Michaels-Ober
@@ -10,7 +10,8 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-30 00:00:00 Z
13
+ date: 2011-06-22 00:00:00 -07:00
14
+ default_executable:
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: ZenTest
@@ -108,7 +109,7 @@ dependencies:
108
109
  requirements:
109
110
  - - ~>
110
111
  - !ruby/object:Gem::Version
111
- version: 0.6.3
112
+ version: 0.6.5
112
113
  type: :runtime
113
114
  version_requirements: *id009
114
115
  - !ruby/object:Gem::Dependency
@@ -134,14 +135,14 @@ dependencies:
134
135
  type: :runtime
135
136
  version_requirements: *id011
136
137
  - !ruby/object:Gem::Dependency
137
- name: rash
138
+ name: multi_xml
138
139
  prerelease: false
139
140
  requirement: &id012 !ruby/object:Gem::Requirement
140
141
  none: false
141
142
  requirements:
142
143
  - - ~>
143
144
  - !ruby/object:Gem::Version
144
- version: 0.3.0
145
+ version: 0.2.2
145
146
  type: :runtime
146
147
  version_requirements: *id012
147
148
  description: Ruby wrapper for the RubyGems.org API
@@ -184,6 +185,7 @@ files:
184
185
  - spec/gems/client_spec.rb
185
186
  - spec/gems_spec.rb
186
187
  - spec/helper.rb
188
+ has_rdoc: true
187
189
  homepage: https://github.com/sferik/gems
188
190
  licenses: []
189
191
 
@@ -207,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
207
209
  requirements: []
208
210
 
209
211
  rubyforge_project:
210
- rubygems_version: 1.8.4
212
+ rubygems_version: 1.5.3
211
213
  signing_key:
212
214
  specification_version: 3
213
215
  summary: Ruby wrapper for the RubyGems.org API