gems 0.0.2 → 0.0.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.
@@ -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