gems 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -28,11 +28,11 @@ Usage Examples
28
28
  # Returns an array of version details for coulda.
29
29
  puts Gems.versions 'coulda'
30
30
 
31
- # Returns the number of downloads by day for a particular gem version for the past 90 days.
31
+ # Returns the number of downloads by day for coulda 0.6.3 for the past 90 days.
32
32
  # Defaults to the latest version if no version is specified.
33
33
  puts Gems.downloads 'coulda', '0.6.3'
34
34
 
35
- # Returns the number of downloads by day for a particular gem version for the past year.
35
+ # Returns the number of downloads by day for coulda 0.6.3 for the past year.
36
36
  puts Gems.downloads 'coulda', '0.6.3', Date.today - 365, Date.today
37
37
 
38
38
  # Returns an array of gem dependency details for all versions of all the given gems.
@@ -43,7 +43,7 @@ Usage Examples
43
43
  config.username = 'nick@gemcutter.org'
44
44
  config.password = 'schwwwwing'
45
45
  end
46
- Gems.api_key
46
+ puts Gems.api_key
47
47
 
48
48
  # The following methods require authentication.
49
49
  # By default, we load your API key from ~/.gem/credentails
data/gems.gemspec CHANGED
@@ -9,10 +9,7 @@ Gem::Specification.new do |gem|
9
9
  gem.add_development_dependency 'simplecov', '~> 0.4'
10
10
  gem.add_development_dependency 'webmock', '~> 1.6'
11
11
  gem.add_development_dependency 'yard', '~> 0.7'
12
- gem.add_runtime_dependency 'faraday', '~> 0.6.1'
13
- gem.add_runtime_dependency 'faraday_middleware', '~> 0.6.5'
14
12
  gem.add_runtime_dependency 'multi_json', '~> 1.0.3'
15
- gem.add_runtime_dependency 'multi_xml', '~> 0.2.2'
16
13
 
17
14
  gem.authors = ["Erik Michaels-Ober"]
18
15
  gem.email = ['sferik@gmail.com']
data/lib/gems/client.rb CHANGED
@@ -1,11 +1,11 @@
1
1
  require 'date'
2
2
  require 'gems/configuration'
3
- require 'gems/connection'
4
3
  require 'gems/request'
4
+ require 'multi_json'
5
+ require 'yaml'
5
6
 
6
7
  module Gems
7
8
  class Client
8
- include Gems::Connection
9
9
  include Gems::Request
10
10
  attr_accessor *Configuration::VALID_OPTIONS_KEYS
11
11
 
@@ -19,33 +19,34 @@ module Gems
19
19
  # Returns some basic information about the given gem
20
20
  #
21
21
  # @param gem_name [String] The name of a gem.
22
- # @return [Hashie::Mash]
22
+ # @return [Hash]
23
23
  # @example
24
24
  # Gems.info 'rails'
25
25
  def info(gem_name)
26
- response = get("/api/v1/gems/#{gem_name}")
27
- format.to_s.downcase == 'xml' ? response['rubygem'] : response
26
+ response = get("/api/v1/gems/#{gem_name}.json")
27
+ MultiJson.decode(response)
28
28
  end
29
29
 
30
30
  # Returns an array of active gems that match the query
31
31
  #
32
32
  # @param query [String] A term to search for.
33
- # @return [Array<Hashie::Mash>]
33
+ # @return [Array<Hash>]
34
34
  # @example
35
35
  # Gems.search 'cucumber'
36
36
  def search(query)
37
- response = get("/api/v1/search", {:query => query})
38
- format.to_s.downcase == 'xml' ? response['rubygems'] : response
37
+ response = get("/api/v1/search.json", {:query => query})
38
+ MultiJson.decode(response)
39
39
  end
40
40
 
41
41
  # Returns an array of gem version details
42
42
  #
43
43
  # @param gem_name [String] The name of a gem.
44
- # @return [Hashie::Mash]
44
+ # @return [Hash]
45
45
  # @example
46
46
  # Gems.versions 'coulda'
47
47
  def versions(gem_name)
48
- get("/api/v1/versions/#{gem_name}", {}, :json)
48
+ response = get("/api/v1/versions/#{gem_name}.json")
49
+ MultiJson.decode(response)
49
50
  end
50
51
 
51
52
  # Returns the number of downloads by day for a particular gem version
@@ -54,16 +55,17 @@ module Gems
54
55
  # @param gem_version [String] The version of a gem.
55
56
  # @param from [Date] Search start date.
56
57
  # @param to [Date] Search end date.
57
- # @return [Hashie::Mash]
58
+ # @return [Hash]
58
59
  # @example
59
60
  # Gems.downloads 'coulda', '0.6.3', Date.today - 30, Date.today
60
61
  def downloads(gem_name, gem_version=nil, from=nil, to=Date.today)
61
62
  gem_version ||= info(gem_name)['version']
62
- if from
63
- get("/api/v1/versions/#{gem_name}-#{gem_version}/downloads/search", {:from => from.to_s, :to => to.to_s}, :json)
63
+ response = if from
64
+ get("/api/v1/versions/#{gem_name}-#{gem_version}/downloads/search.json", {:from => from.to_s, :to => to.to_s})
64
65
  else
65
- get("/api/v1/versions/#{gem_name}-#{gem_version}/downloads", {}, :json)
66
+ get("/api/v1/versions/#{gem_name}-#{gem_version}/downloads.json")
66
67
  end
68
+ MultiJson.decode(response)
67
69
  end
68
70
 
69
71
  # Returns an array of hashes for all versions of given gems
@@ -73,7 +75,8 @@ module Gems
73
75
  # @example
74
76
  # Gems.dependencies 'rails', 'thor'
75
77
  def dependencies(*gems)
76
- get('/api/v1/dependencies', {:gems => gems.join(',')}, :marshal)
78
+ response = get('/api/v1/dependencies', {:gems => gems.join(',')})
79
+ Marshal.load(response)
77
80
  end
78
81
 
79
82
  # Retrieve your API key using HTTP basic auth
@@ -86,7 +89,7 @@ module Gems
86
89
  # end
87
90
  # Gems.api_key
88
91
  def api_key
89
- get('/api/v1/api_key', {}, :raw)
92
+ get('/api/v1/api_key')
90
93
  end
91
94
 
92
95
  # List all gems that you own
@@ -95,8 +98,8 @@ module Gems
95
98
  # @example
96
99
  # Gems.gems
97
100
  def gems
98
- response = get("/api/v1/gems")
99
- format.to_s.downcase == 'xml' ? response['rubygems'] : response
101
+ response = get("/api/v1/gems.json")
102
+ MultiJson.decode(response)
100
103
  end
101
104
 
102
105
  # View all owners of a gem that you own
@@ -104,9 +107,10 @@ module Gems
104
107
  # @param gem_name [String] The name of a gem.
105
108
  # @return [Array]
106
109
  # @example
107
- # Gems.owners('gemcutter')
110
+ # Gems.owners 'gemcutter'
108
111
  def owners(gem_name)
109
- get("/api/v1/gems/#{gem_name}/owners")
112
+ response = get("/api/v1/gems/#{gem_name}/owners.yaml")
113
+ YAML.load(response)
110
114
  end
111
115
 
112
116
  # Add an owner to a RubyGem you own, giving that user permission to manage it
@@ -115,9 +119,9 @@ module Gems
115
119
  # @param owner [String] The email address of the user you want to add.
116
120
  # @return [String]
117
121
  # @example
118
- # Gems.add_owner("gemcutter", "josh@technicalpickles.com")
122
+ # Gems.add_owner 'gemcutter', 'josh@technicalpickles.com'
119
123
  def add_owner(gem_name, owner)
120
- post("/api/v1/gems/#{gem_name}/owners", {:email => owner}, :raw)
124
+ post("/api/v1/gems/#{gem_name}/owners", {:email => owner})
121
125
  end
122
126
 
123
127
  # Remove a user's permission to manage a RubyGem you own
@@ -126,18 +130,19 @@ module Gems
126
130
  # @param owner [String] The email address of the user you want to remove.
127
131
  # @return [String]
128
132
  # @example
129
- # Gems.remove_owner("gemcutter", "josh@technicalpickles.com")
133
+ # Gems.remove_owner 'gemcutter', 'josh@technicalpickles.com'
130
134
  def remove_owner(gem_name, owner)
131
- delete("/api/v1/gems/#{gem_name}/owners", {:email => owner}, :raw)
135
+ delete("/api/v1/gems/#{gem_name}/owners", {:email => owner})
132
136
  end
133
137
 
134
138
  # List the webhooks registered under your account
135
139
  #
136
- # @return [Hashie::Mash]
140
+ # @return [Hash]
137
141
  # @example
138
142
  # Gems.web_hooks
139
143
  def web_hooks
140
- get("/api/v1/web_hooks", {}, :json)
144
+ response = get("/api/v1/web_hooks.json")
145
+ MultiJson.decode(response)
141
146
  end
142
147
 
143
148
  # Create a webhook
@@ -146,9 +151,9 @@ module Gems
146
151
  # @param url [String] The URL of the web hook.
147
152
  # @return [String]
148
153
  # @example
149
- # Gems.add_web_hook("rails", "http://example.com")
154
+ # Gems.add_web_hook 'rails', 'http://example.com'
150
155
  def add_web_hook(gem_name, url)
151
- post("/api/v1/web_hooks", {:gem_name => gem_name, :url => url}, :raw)
156
+ post("/api/v1/web_hooks", {:gem_name => gem_name, :url => url})
152
157
  end
153
158
 
154
159
  # Remove a webhook
@@ -157,9 +162,9 @@ module Gems
157
162
  # @param url [String] The URL of the web hook.
158
163
  # @return [String]
159
164
  # @example
160
- # Gems.remove_web_hook("rails", "http://example.com")
165
+ # Gems.remove_web_hook 'rails', 'http://example.com'
161
166
  def remove_web_hook(gem_name, url)
162
- delete("/api/v1/web_hooks/remove", {:gem_name => gem_name, :url => url}, :raw)
167
+ delete("/api/v1/web_hooks/remove", {:gem_name => gem_name, :url => url})
163
168
  end
164
169
 
165
170
  # Test fire a webhook
@@ -168,9 +173,9 @@ module Gems
168
173
  # @param url [String] The URL of the web hook.
169
174
  # @return [String]
170
175
  # @example
171
- # Gems.fire_web_hook("rails", "http://example.com")
176
+ # Gems.fire_web_hook 'rails', 'http://example.com'
172
177
  def fire_web_hook(gem_name, url)
173
- post("/api/v1/web_hooks/fire", {:gem_name => gem_name, :url => url}, :raw)
178
+ post("/api/v1/web_hooks/fire", {:gem_name => gem_name, :url => url})
174
179
  end
175
180
 
176
181
  # Submit a gem to RubyGems.org
@@ -178,9 +183,9 @@ module Gems
178
183
  # @param gem [File] A built gem.
179
184
  # @return [String]
180
185
  # @example
181
- # Gems.push(File.new("pkg/gemcutter-0.2.1.gem"))
186
+ # Gems.push File.new 'pkg/gemcutter-0.2.1.gem'
182
187
  def push(gem)
183
- post("/api/v1/gems", gem.read, :raw, 'application/octet-stream')
188
+ post("/api/v1/gems", gem.read, 'application/octet-stream')
184
189
  end
185
190
 
186
191
  # Remove a gem from RubyGems.org's index
@@ -191,10 +196,10 @@ module Gems
191
196
  # @option options [String] :platform
192
197
  # @return [String]
193
198
  # @example
194
- # Gems.yank("gemcutter", "0.2.1", {:platform => "x86-darwin-10"})
199
+ # Gems.yank "gemcutter", "0.2.1", {:platform => "x86-darwin-10"}
195
200
  def yank(gem_name, gem_version=nil, options={})
196
201
  gem_version ||= info(gem_name)['version']
197
- delete("/api/v1/gems/yank", options.merge(:gem_name => gem_name, :version => gem_version), :raw)
202
+ delete("/api/v1/gems/yank", options.merge(:gem_name => gem_name, :version => gem_version))
198
203
  end
199
204
 
200
205
  # Update a previously yanked gem back into RubyGems.org's index
@@ -205,10 +210,10 @@ module Gems
205
210
  # @option options [String] :platform
206
211
  # @return [String]
207
212
  # @example
208
- # Gems.unyank("gemcutter", "0.2.1", {:platform => "x86-darwin-10"})
213
+ # Gems.unyank "gemcutter", "0.2.1", {:platform => "x86-darwin-10"}
209
214
  def unyank(gem_name, gem_version=nil, options={})
210
215
  gem_version ||= info(gem_name)['version']
211
- put("/api/v1/gems/unyank", options.merge(:gem_name => gem_name, :version => gem_version), :raw)
216
+ put("/api/v1/gems/unyank", options.merge(:gem_name => gem_name, :version => gem_version))
212
217
  end
213
218
  end
214
219
  end
@@ -6,7 +6,6 @@ module Gems
6
6
  module Configuration
7
7
  # An array of valid keys in the options hash when configuring a {Gems::Client}
8
8
  VALID_OPTIONS_KEYS = [
9
- :format,
10
9
  :host,
11
10
  :key,
12
11
  :password,
@@ -14,13 +13,8 @@ module Gems
14
13
  :username,
15
14
  ]
16
15
 
17
- # Set the default response format appended to the path
18
- #
19
- # @note JSON is preferred over XML because it is more concise and faster to parse.
20
- DEFAULT_FORMAT = :json.freeze
21
-
22
16
  # Set the default API endpoint
23
- DEFAULT_HOST = ENV['RUBYGEMS_HOST'] ? ENV['RUBYGEMS_HOST'].freeze : 'https://rubygems.org'.freeze
17
+ DEFAULT_HOST = ENV['RUBYGEMS_HOST'] ? ENV['RUBYGEMS_HOST'].freeze : Gem.host.freeze
24
18
 
25
19
  # Set the default credentials
26
20
  DEFAULT_KEY = Gem.configuration.rubygems_api_key.freeze
@@ -49,7 +43,6 @@ module Gems
49
43
 
50
44
  # Reset all configuration options to defaults
51
45
  def reset
52
- self.format = DEFAULT_FORMAT
53
46
  self.host = DEFAULT_HOST
54
47
  self.key = DEFAULT_KEY
55
48
  self.password = nil
data/lib/gems/request.rb CHANGED
@@ -1,48 +1,60 @@
1
+ require 'net/http'
1
2
  require 'rubygems'
3
+ require 'uri'
2
4
 
3
5
  module Gems
4
6
  module Request
5
- def delete(path, options={}, format=format, content_type=nil)
6
- request(:delete, path, options, format, content_type)
7
+ def delete(path, data={}, content_type='application/x-www-form-urlencoded')
8
+ request(:delete, path, data, content_type)
7
9
  end
8
10
 
9
- def get(path, options={}, format=format, content_type=nil)
10
- request(:get, path, options, format, content_type)
11
+ def get(path, data={}, content_type='application/x-www-form-urlencoded')
12
+ request(:get, path, data, content_type)
11
13
  end
12
14
 
13
- def post(path, options={}, format=format, content_type=nil)
14
- request(:post, path, options, format, content_type)
15
+ def post(path, data={}, content_type='application/x-www-form-urlencoded')
16
+ request(:post, path, data, content_type)
15
17
  end
16
18
 
17
- def put(path, options={}, format=format, content_type=nil)
18
- request(:put, path, options, format, content_type)
19
+ def put(path, data={}, content_type='application/x-www-form-urlencoded')
20
+ request(:put, path, data, content_type)
19
21
  end
20
22
 
21
23
  private
22
24
 
23
- def request(method, path, options, format, content_type)
24
- content_length = case content_type
25
+ def request(method, path, data, content_type)
26
+ path = [path, hash_to_query_string(data)[/.+/]].compact.join('?') if [:delete, :get].include? method
27
+ uri = URI.parse [host, path].join
28
+ request_class = Net::HTTP.const_get method.to_s.capitalize
29
+ request = request_class.new uri.request_uri
30
+ request.add_field 'Authorization', key if key
31
+ request.add_field 'Connection', 'keep-alive'
32
+ request.add_field 'Keep-Alive', '30'
33
+ request.add_field 'User-Agent', user_agent
34
+ request.basic_auth username, password if username && password
35
+ request.content_type = content_type
36
+ case content_type
37
+ when 'application/x-www-form-urlencoded'
38
+ request.form_data = data if [:post, :put].include? method
25
39
  when 'application/octet-stream'
26
- options.size
40
+ request.body = data
41
+ request.content_length = data.size
27
42
  end
28
- response = connection(content_length, content_type, format).send(method) do |request|
29
- case method
30
- when :delete, :get
31
- request.url(formatted_path(path, format), options)
32
- when :post, :put
33
- request.path = formatted_path(path, format)
34
- request.body = options unless options == {}
35
- end
43
+ connection = Net::HTTP.new uri.host, uri.port
44
+ if uri.scheme == 'https'
45
+ require 'net/https'
46
+ connection.use_ssl = true
47
+ connection.verify_mode = OpenSSL::SSL::VERIFY_NONE
36
48
  end
49
+ connection.start
50
+ response = connection.request request
37
51
  response.body
38
52
  end
39
53
 
40
- def formatted_path(path, format)
41
- case format.to_s.downcase
42
- when 'json', 'xml', 'yaml'
43
- [path, format].compact.join('.')
44
- when 'marshal', 'raw'
45
- path
54
+ def hash_to_query_string(hash)
55
+ hash.keys.inject('') do |query_string, key|
56
+ query_string << '&' unless key == hash.keys.first
57
+ query_string << "#{URI.encode(key.to_s)}=#{URI.encode(hash[key])}"
46
58
  end
47
59
  end
48
60
  end
data/lib/gems/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Gems
2
- VERSION = "0.2.0" unless defined? ::Gems::VERSION
2
+ VERSION = "0.3.0" unless defined? ::Gems::VERSION
3
3
  end
@@ -6,42 +6,32 @@ describe Gems::Client do
6
6
  end
7
7
 
8
8
  describe ".info" do
9
- %w(json xml).each do |format|
10
- context "with format #{format}" do
11
- before do
12
- Gems.format = format
13
- stub_get("/api/v1/gems/rails.#{format}").
14
- to_return(:body => fixture("rails.#{format}"))
15
- end
16
-
17
- it "should return some basic information about the given gem" do
18
- info = Gems.info 'rails'
19
- a_get("/api/v1/gems/rails.#{format}").
20
- should have_been_made
21
- info['name'].should == 'rails'
22
- end
23
- end
9
+ before do
10
+ stub_get("/api/v1/gems/rails.json").
11
+ to_return(:body => fixture("rails.json"))
12
+ end
13
+
14
+ it "should return some basic information about the given gem" do
15
+ info = Gems.info 'rails'
16
+ a_get("/api/v1/gems/rails.json").
17
+ should have_been_made
18
+ info['name'].should == 'rails'
24
19
  end
25
20
  end
26
21
 
27
22
  describe ".search" do
28
- %w(json xml).each do |format|
29
- context "with format #{format}" do
30
- before do
31
- Gems.format = format
32
- stub_get("/api/v1/search.#{format}").
33
- with(:query => {"query" => "cucumber"}).
34
- to_return(:body => fixture("search.#{format}"))
35
- end
36
-
37
- it "should return an array of active gems that match the query" do
38
- search = Gems.search 'cucumber'
39
- a_get("/api/v1/search.#{format}").
40
- with(:query => {"query" => "cucumber"}).
41
- should have_been_made
42
- search.first['name'].should == 'cucumber'
43
- end
44
- end
23
+ before do
24
+ stub_get("/api/v1/search.json").
25
+ with(:query => {"query" => "cucumber"}).
26
+ to_return(:body => fixture("search.json"))
27
+ end
28
+
29
+ it "should return an array of active gems that match the query" do
30
+ search = Gems.search 'cucumber'
31
+ a_get("/api/v1/search.json").
32
+ with(:query => {"query" => "cucumber"}).
33
+ should have_been_made
34
+ search.first['name'].should == 'cucumber'
45
35
  end
46
36
  end
47
37
 
@@ -158,40 +148,30 @@ describe Gems::Client do
158
148
  end
159
149
 
160
150
  describe ".gems" do
161
- %w(json xml).each do |format|
162
- context "with format #{format}" do
163
- before do
164
- Gems.format = format
165
- stub_get("/api/v1/gems.#{format}").
166
- to_return(:body => fixture("gems.#{format}"))
167
- end
168
-
169
- it "should list all gems that you own" do
170
- gems = Gems.gems
171
- a_get("/api/v1/gems.#{format}").
172
- should have_been_made
173
- gems.first['name'].should == "congress"
174
- end
175
- end
151
+ before do
152
+ stub_get("/api/v1/gems.json").
153
+ to_return(:body => fixture("gems.json"))
154
+ end
155
+
156
+ it "should list all gems that you own" do
157
+ gems = Gems.gems
158
+ a_get("/api/v1/gems.json").
159
+ should have_been_made
160
+ gems.first['name'].should == "congress"
176
161
  end
177
162
  end
178
163
 
179
164
  describe ".owners" do
180
- %w(json yaml).each do |format|
181
- context "with format #{format}" do
182
- before do
183
- Gems.format = format
184
- stub_get("/api/v1/gems/gems/owners.#{format}").
185
- to_return(:body => fixture("owners.#{format}"))
186
- end
187
-
188
- it "should list all owners of a gem" do
189
- owners = Gems.owners("gems")
190
- a_get("/api/v1/gems/gems/owners.#{format}").
191
- should have_been_made
192
- owners.first['email'].should == "sferik@gmail.com"
193
- end
194
- end
165
+ before do
166
+ stub_get("/api/v1/gems/gems/owners.yaml").
167
+ to_return(:body => fixture("owners.yaml"))
168
+ end
169
+
170
+ it "should list all owners of a gem" do
171
+ owners = Gems.owners("gems")
172
+ a_get("/api/v1/gems/gems/owners.yaml").
173
+ should have_been_made
174
+ owners.first['email'].should == "sferik@gmail.com"
195
175
  end
196
176
  end
197
177
 
data/spec/gems_spec.rb CHANGED
@@ -30,16 +30,16 @@ describe Gems do
30
30
  end
31
31
  end
32
32
 
33
- describe ".format" do
34
- it "should return the default format" do
35
- Gems.format.should == Gems::Configuration::DEFAULT_FORMAT
33
+ describe ".host" do
34
+ it "should return the default host" do
35
+ Gems.host.should == Gems::Configuration::DEFAULT_HOST
36
36
  end
37
37
  end
38
38
 
39
- describe ".format=" do
40
- it "should set the format" do
41
- Gems.format = 'xml'
42
- Gems.format.should == 'xml'
39
+ describe ".host=" do
40
+ it "should set the host" do
41
+ Gems.host = 'http://localhost:3000'
42
+ Gems.host.should == 'http://localhost:3000'
43
43
  end
44
44
  end
45
45
 
@@ -50,7 +50,7 @@ describe Gems do
50
50
  end
51
51
 
52
52
  describe ".user_agent=" do
53
- it "should set the user_agent" do
53
+ it "should set the user agent" do
54
54
  Gems.user_agent = 'Custom User Agent'
55
55
  Gems.user_agent.should == 'Custom User Agent'
56
56
  end
metadata CHANGED
@@ -1,241 +1,200 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: gems
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
4
5
  prerelease:
5
- version: 0.2.0
6
6
  platform: ruby
7
- authors:
8
- - Erik Michaels-Ober
7
+ authors:
8
+ - Erik Michaels-Ober
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-07-02 00:00:00 -07:00
12
+ date: 2011-07-18 00:00:00.000000000 -07:00
14
13
  default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: ZenTest
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
20
- none: false
21
- requirements:
22
- - - ~>
23
- - !ruby/object:Gem::Version
24
- version: "4.5"
25
- type: :development
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: maruku
29
- prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
31
- none: false
32
- requirements:
33
- - - ~>
34
- - !ruby/object:Gem::Version
35
- version: "0.6"
36
- type: :development
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: rake
40
- prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ~>
45
- - !ruby/object:Gem::Version
46
- version: "0.9"
47
- type: :development
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: rspec
51
- prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
53
- none: false
54
- requirements:
55
- - - ~>
56
- - !ruby/object:Gem::Version
57
- version: "2.6"
58
- type: :development
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: simplecov
62
- prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
66
- - - ~>
67
- - !ruby/object:Gem::Version
68
- version: "0.4"
69
- type: :development
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
72
- name: webmock
73
- prerelease: false
74
- requirement: &id006 !ruby/object:Gem::Requirement
75
- none: false
76
- requirements:
77
- - - ~>
78
- - !ruby/object:Gem::Version
79
- version: "1.6"
80
- type: :development
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
83
- name: yard
84
- prerelease: false
85
- requirement: &id007 !ruby/object:Gem::Requirement
86
- none: false
87
- requirements:
88
- - - ~>
89
- - !ruby/object:Gem::Version
90
- version: "0.7"
91
- type: :development
92
- version_requirements: *id007
93
- - !ruby/object:Gem::Dependency
94
- name: faraday
95
- prerelease: false
96
- requirement: &id008 !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ~>
100
- - !ruby/object:Gem::Version
101
- version: 0.6.1
102
- type: :runtime
103
- version_requirements: *id008
104
- - !ruby/object:Gem::Dependency
105
- name: faraday_middleware
106
- prerelease: false
107
- requirement: &id009 !ruby/object:Gem::Requirement
108
- none: false
109
- requirements:
110
- - - ~>
111
- - !ruby/object:Gem::Version
112
- version: 0.6.5
113
- type: :runtime
114
- version_requirements: *id009
115
- - !ruby/object:Gem::Dependency
116
- name: multi_json
117
- prerelease: false
118
- requirement: &id010 !ruby/object:Gem::Requirement
119
- none: false
120
- requirements:
121
- - - ~>
122
- - !ruby/object:Gem::Version
123
- version: 1.0.3
124
- type: :runtime
125
- version_requirements: *id010
126
- - !ruby/object:Gem::Dependency
127
- name: multi_xml
128
- prerelease: false
129
- requirement: &id011 !ruby/object:Gem::Requirement
130
- none: false
131
- requirements:
132
- - - ~>
133
- - !ruby/object:Gem::Version
134
- version: 0.2.2
135
- type: :runtime
136
- version_requirements: *id011
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ZenTest
17
+ requirement: &70168231492860 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '4.5'
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: *70168231492860
26
+ - !ruby/object:Gem::Dependency
27
+ name: maruku
28
+ requirement: &70168231492000 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0.6'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *70168231492000
37
+ - !ruby/object:Gem::Dependency
38
+ name: rake
39
+ requirement: &70168231491100 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ version: '0.9'
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *70168231491100
48
+ - !ruby/object:Gem::Dependency
49
+ name: rspec
50
+ requirement: &70168231510480 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: '2.6'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *70168231510480
59
+ - !ruby/object:Gem::Dependency
60
+ name: simplecov
61
+ requirement: &70168231509760 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: '0.4'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *70168231509760
70
+ - !ruby/object:Gem::Dependency
71
+ name: webmock
72
+ requirement: &70168231509140 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '1.6'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *70168231509140
81
+ - !ruby/object:Gem::Dependency
82
+ name: yard
83
+ requirement: &70168231508480 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ version: '0.7'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: *70168231508480
92
+ - !ruby/object:Gem::Dependency
93
+ name: multi_json
94
+ requirement: &70168231507720 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ~>
98
+ - !ruby/object:Gem::Version
99
+ version: 1.0.3
100
+ type: :runtime
101
+ prerelease: false
102
+ version_requirements: *70168231507720
137
103
  description: Ruby wrapper for the RubyGems.org API
138
- email:
139
- - sferik@gmail.com
104
+ email:
105
+ - sferik@gmail.com
140
106
  executables: []
141
-
142
107
  extensions: []
143
-
144
108
  extra_rdoc_files: []
145
-
146
- files:
147
- - .gemtest
148
- - .gitignore
149
- - .rspec
150
- - .travis.yml
151
- - .yardopts
152
- - Gemfile
153
- - LICENSE.md
154
- - README.md
155
- - Rakefile
156
- - gems.gemspec
157
- - lib/gems.rb
158
- - lib/gems/client.rb
159
- - lib/gems/configuration.rb
160
- - lib/gems/connection.rb
161
- - lib/gems/request.rb
162
- - lib/gems/version.rb
163
- - spec/fixtures/add_owner.json
164
- - spec/fixtures/add_web_hook
165
- - spec/fixtures/api_key
166
- - spec/fixtures/coulda.json
167
- - spec/fixtures/dependencies
168
- - spec/fixtures/downloads.json
169
- - spec/fixtures/fire_web_hook
170
- - spec/fixtures/gems-0.0.8.gem
171
- - spec/fixtures/gems.json
172
- - spec/fixtures/gems.xml
173
- - spec/fixtures/owners.json
174
- - spec/fixtures/owners.yaml
175
- - spec/fixtures/push
176
- - spec/fixtures/rails.json
177
- - spec/fixtures/rails.xml
178
- - spec/fixtures/remove_owner.json
179
- - spec/fixtures/remove_web_hook
180
- - spec/fixtures/search.json
181
- - spec/fixtures/search.xml
182
- - spec/fixtures/unyank
183
- - spec/fixtures/web_hooks.json
184
- - spec/fixtures/yank
185
- - spec/gems/client_spec.rb
186
- - spec/gems_spec.rb
187
- - spec/helper.rb
109
+ files:
110
+ - .gemtest
111
+ - .gitignore
112
+ - .rspec
113
+ - .travis.yml
114
+ - .yardopts
115
+ - Gemfile
116
+ - LICENSE.md
117
+ - README.md
118
+ - Rakefile
119
+ - gems.gemspec
120
+ - lib/gems.rb
121
+ - lib/gems/client.rb
122
+ - lib/gems/configuration.rb
123
+ - lib/gems/request.rb
124
+ - lib/gems/version.rb
125
+ - spec/fixtures/add_owner.json
126
+ - spec/fixtures/add_web_hook
127
+ - spec/fixtures/api_key
128
+ - spec/fixtures/coulda.json
129
+ - spec/fixtures/dependencies
130
+ - spec/fixtures/downloads.json
131
+ - spec/fixtures/fire_web_hook
132
+ - spec/fixtures/gems-0.0.8.gem
133
+ - spec/fixtures/gems.json
134
+ - spec/fixtures/gems.xml
135
+ - spec/fixtures/owners.json
136
+ - spec/fixtures/owners.yaml
137
+ - spec/fixtures/push
138
+ - spec/fixtures/rails.json
139
+ - spec/fixtures/rails.xml
140
+ - spec/fixtures/remove_owner.json
141
+ - spec/fixtures/remove_web_hook
142
+ - spec/fixtures/search.json
143
+ - spec/fixtures/search.xml
144
+ - spec/fixtures/unyank
145
+ - spec/fixtures/web_hooks.json
146
+ - spec/fixtures/yank
147
+ - spec/gems/client_spec.rb
148
+ - spec/gems_spec.rb
149
+ - spec/helper.rb
188
150
  has_rdoc: true
189
151
  homepage: https://github.com/sferik/gems
190
152
  licenses: []
191
-
192
153
  post_install_message:
193
154
  rdoc_options: []
194
-
195
- require_paths:
196
- - lib
197
- required_ruby_version: !ruby/object:Gem::Requirement
155
+ require_paths:
156
+ - lib
157
+ required_ruby_version: !ruby/object:Gem::Requirement
198
158
  none: false
199
- requirements:
200
- - - ">="
201
- - !ruby/object:Gem::Version
202
- version: "0"
203
- required_rubygems_version: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ! '>='
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
204
164
  none: false
205
- requirements:
206
- - - ">="
207
- - !ruby/object:Gem::Version
208
- version: "0"
165
+ requirements:
166
+ - - ! '>='
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
209
169
  requirements: []
210
-
211
170
  rubyforge_project:
212
- rubygems_version: 1.5.1
171
+ rubygems_version: 1.6.2
213
172
  signing_key:
214
173
  specification_version: 3
215
174
  summary: Ruby wrapper for the RubyGems.org API
216
- test_files:
217
- - spec/fixtures/add_owner.json
218
- - spec/fixtures/add_web_hook
219
- - spec/fixtures/api_key
220
- - spec/fixtures/coulda.json
221
- - spec/fixtures/dependencies
222
- - spec/fixtures/downloads.json
223
- - spec/fixtures/fire_web_hook
224
- - spec/fixtures/gems-0.0.8.gem
225
- - spec/fixtures/gems.json
226
- - spec/fixtures/gems.xml
227
- - spec/fixtures/owners.json
228
- - spec/fixtures/owners.yaml
229
- - spec/fixtures/push
230
- - spec/fixtures/rails.json
231
- - spec/fixtures/rails.xml
232
- - spec/fixtures/remove_owner.json
233
- - spec/fixtures/remove_web_hook
234
- - spec/fixtures/search.json
235
- - spec/fixtures/search.xml
236
- - spec/fixtures/unyank
237
- - spec/fixtures/web_hooks.json
238
- - spec/fixtures/yank
239
- - spec/gems/client_spec.rb
240
- - spec/gems_spec.rb
241
- - spec/helper.rb
175
+ test_files:
176
+ - spec/fixtures/add_owner.json
177
+ - spec/fixtures/add_web_hook
178
+ - spec/fixtures/api_key
179
+ - spec/fixtures/coulda.json
180
+ - spec/fixtures/dependencies
181
+ - spec/fixtures/downloads.json
182
+ - spec/fixtures/fire_web_hook
183
+ - spec/fixtures/gems-0.0.8.gem
184
+ - spec/fixtures/gems.json
185
+ - spec/fixtures/gems.xml
186
+ - spec/fixtures/owners.json
187
+ - spec/fixtures/owners.yaml
188
+ - spec/fixtures/push
189
+ - spec/fixtures/rails.json
190
+ - spec/fixtures/rails.xml
191
+ - spec/fixtures/remove_owner.json
192
+ - spec/fixtures/remove_web_hook
193
+ - spec/fixtures/search.json
194
+ - spec/fixtures/search.xml
195
+ - spec/fixtures/unyank
196
+ - spec/fixtures/web_hooks.json
197
+ - spec/fixtures/yank
198
+ - spec/gems/client_spec.rb
199
+ - spec/gems_spec.rb
200
+ - spec/helper.rb
@@ -1,37 +0,0 @@
1
- require 'faraday_middleware'
2
-
3
- module Gems
4
- module Connection
5
- def connection(content_length=nil, content_type=nil, format=foramt)
6
- options = {
7
- :headers => {
8
- :user_agent => user_agent,
9
- },
10
- :ssl => {:verify => false},
11
- :url => host,
12
- }
13
-
14
- options[:headers].merge!({:content_length => content_length}) if content_length
15
- options[:headers].merge!({:content_type => content_type}) if content_type
16
- options[:headers].merge!({:authorization => key}) if key
17
-
18
- connection = Faraday.new(options) do |connection|
19
- connection.use Faraday::Request::UrlEncoded unless content_type
20
- case format.to_s.downcase
21
- when 'json'
22
- connection.use Faraday::Response::ParseJson
23
- when 'marshal'
24
- connection.use Faraday::Response::ParseMarshal
25
- when 'xml'
26
- connection.use Faraday::Response::ParseXml
27
- when 'yaml'
28
- connection.use Faraday::Response::ParseYaml
29
- end
30
- connection.use Faraday::Response::RaiseError
31
- connection.adapter Faraday.default_adapter
32
- end
33
- connection.basic_auth username, password if username && password
34
- connection
35
- end
36
- end
37
- end