gems 0.2.0 → 0.3.0

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/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