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 +3 -3
- data/gems.gemspec +0 -3
- data/lib/gems/client.rb +43 -38
- data/lib/gems/configuration.rb +1 -8
- data/lib/gems/request.rb +37 -25
- data/lib/gems/version.rb +1 -1
- data/spec/gems/client_spec.rb +42 -62
- data/spec/gems_spec.rb +8 -8
- metadata +177 -218
- data/lib/gems/connection.rb +0 -37
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
|
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
|
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 [
|
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
|
-
|
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<
|
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
|
-
|
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 [
|
44
|
+
# @return [Hash]
|
45
45
|
# @example
|
46
46
|
# Gems.versions 'coulda'
|
47
47
|
def versions(gem_name)
|
48
|
-
get("/api/v1/versions/#{gem_name}"
|
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 [
|
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}
|
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"
|
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(',')}
|
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'
|
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
|
-
|
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
|
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
|
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}
|
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
|
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}
|
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 [
|
140
|
+
# @return [Hash]
|
137
141
|
# @example
|
138
142
|
# Gems.web_hooks
|
139
143
|
def web_hooks
|
140
|
-
get("/api/v1/web_hooks"
|
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
|
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}
|
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
|
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}
|
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
|
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}
|
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
|
186
|
+
# Gems.push File.new 'pkg/gemcutter-0.2.1.gem'
|
182
187
|
def push(gem)
|
183
|
-
post("/api/v1/gems", gem.read,
|
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
|
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)
|
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
|
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)
|
216
|
+
put("/api/v1/gems/unyank", options.merge(:gem_name => gem_name, :version => gem_version))
|
212
217
|
end
|
213
218
|
end
|
214
219
|
end
|
data/lib/gems/configuration.rb
CHANGED
@@ -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 :
|
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,
|
6
|
-
request(:delete, path,
|
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,
|
10
|
-
request(:get, path,
|
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,
|
14
|
-
request(:post, path,
|
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,
|
18
|
-
request(:put, path,
|
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,
|
24
|
-
|
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
|
-
|
40
|
+
request.body = data
|
41
|
+
request.content_length = data.size
|
27
42
|
end
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
41
|
-
|
42
|
-
|
43
|
-
|
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
data/spec/gems/client_spec.rb
CHANGED
@@ -6,42 +6,32 @@ describe Gems::Client do
|
|
6
6
|
end
|
7
7
|
|
8
8
|
describe ".info" do
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
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
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
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 ".
|
34
|
-
it "should return the default
|
35
|
-
Gems.
|
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 ".
|
40
|
-
it "should set the
|
41
|
-
Gems.
|
42
|
-
Gems.
|
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
|
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
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
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
|
-
|
104
|
+
email:
|
105
|
+
- sferik@gmail.com
|
140
106
|
executables: []
|
141
|
-
|
142
107
|
extensions: []
|
143
|
-
|
144
108
|
extra_rdoc_files: []
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
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
|
-
|
196
|
-
|
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
|
-
|
202
|
-
|
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
|
-
|
208
|
-
|
165
|
+
requirements:
|
166
|
+
- - ! '>='
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '0'
|
209
169
|
requirements: []
|
210
|
-
|
211
170
|
rubyforge_project:
|
212
|
-
rubygems_version: 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
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
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
|
data/lib/gems/connection.rb
DELETED
@@ -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
|