gemfury 0.5.0.beta1 → 0.5.0.beta3
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.
- checksums.yaml +8 -8
- data/lib/gemfury.rb +3 -3
- data/lib/gemfury/client.rb +11 -5
- data/lib/gemfury/command/app.rb +21 -12
- data/lib/gemfury/command/authorization.rb +14 -9
- data/lib/gemfury/configuration.rb +9 -4
- data/lib/gemfury/error.rb +3 -0
- data/lib/gemfury/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
Mzg2MzBkYmE1NzI0OGIwMjY1NWZhNTMzYjk2MDIxNDk2NWI5Nzc3MA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YTllNGYyM2EzMDFiMjg0OGU4YzI5ZjU0YzFhNDFjMDY2MjJmYjkwOQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NjY2Mzc1OTc0ZjQ1MWIzYjJhMGQ2ZDkxMmE2ODkyYjQyMmIwZjc0ZjZiMDMz
|
10
|
+
NzdlNzQ1OGE3M2E1ZjJiYjJmNTJkN2E4ODM2NTlmNjdlYjRiMDQ2ZDgyYzdk
|
11
|
+
MWU1ODY1OTdiMTM0YTIzMTdhOGI4YWMxM2RlNmI1ZGNhNTMxMTY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjUwNDQyMjA1ZTVlZjcwNjc4NzY0NGY4NzEzM2UwYmM4ODY0MTE0MzIzYjZh
|
14
|
+
MzdhMWFiZjVhY2Q5YTc1MDM2ZDg3ZjE4NTBhZWRmYWM4YWM5ZmJmZWUxNWU2
|
15
|
+
YjUyMjc3YTA5M2U0ZDQ1ZDgwOWM5ZTA5N2M0OWM2ZjliN2RkZmQ=
|
data/lib/gemfury.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
gem "
|
2
|
-
gem "multi_json", "~> 1.0"
|
1
|
+
gem "multi_json", "~> 1.10"
|
3
2
|
gem "faraday", ">= 0.9.0", "< 0.10.0.pre"
|
3
|
+
gem "netrc", "~> 0.10.0"
|
4
4
|
|
5
5
|
require 'cgi'
|
6
6
|
require 'uri'
|
@@ -29,7 +29,7 @@ module Gemfury
|
|
29
29
|
Gemfury::Client.new(options)
|
30
30
|
end
|
31
31
|
|
32
|
-
# Delegate to
|
32
|
+
# Delegate to Gemfury::Client
|
33
33
|
def method_missing(method, *args, &block)
|
34
34
|
return super unless new.respond_to?(method)
|
35
35
|
new.send(method, *args, &block)
|
data/lib/gemfury/client.rb
CHANGED
@@ -23,8 +23,7 @@ module Gemfury
|
|
23
23
|
ensure_ready!(:authorization)
|
24
24
|
|
25
25
|
# Generate upload link
|
26
|
-
|
27
|
-
api2 = connection(:headers => headers)
|
26
|
+
api2 = connection(:api_version => 2)
|
28
27
|
response = api2.post('uploads')
|
29
28
|
checked_response_body(response)
|
30
29
|
|
@@ -123,14 +122,20 @@ module Gemfury
|
|
123
122
|
end
|
124
123
|
|
125
124
|
def connection(options = {})
|
125
|
+
# The 'Accept' HTTP header for API versioning
|
126
|
+
http_accept = begin
|
127
|
+
v = options.delete(:api_version) || self.api_version
|
128
|
+
"application/vnd.fury.v#{v.to_i}+json"
|
129
|
+
end
|
130
|
+
|
131
|
+
# Faraday client options
|
126
132
|
options = {
|
127
133
|
:url => self.endpoint,
|
128
|
-
:ssl => { :verify => false },
|
129
134
|
:params => {},
|
130
135
|
:headers => {
|
131
|
-
:
|
136
|
+
:accept => http_accept,
|
137
|
+
:user_agent => self.user_agent,
|
132
138
|
:x_gem_version => Gemfury::VERSION,
|
133
|
-
:accept => self.http_accept || 'application/json',
|
134
139
|
}.merge(options.delete(:headers) || {})
|
135
140
|
}.merge(options)
|
136
141
|
|
@@ -161,6 +166,7 @@ module Gemfury
|
|
161
166
|
when 401 then Gemfury::Unauthorized
|
162
167
|
when 403 then Gemfury::Forbidden
|
163
168
|
when 404 then Gemfury::NotFound
|
169
|
+
when 409 then Gemfury::Conflict
|
164
170
|
when 503 then Gemfury::TimeoutError
|
165
171
|
when 400
|
166
172
|
case error['type']
|
data/lib/gemfury/command/app.rb
CHANGED
@@ -4,6 +4,7 @@ class Gemfury::Command::App < Thor
|
|
4
4
|
|
5
5
|
# Impersonation
|
6
6
|
class_option :as, :desc => 'Access an account other than your own'
|
7
|
+
class_option :api_token, :desc => 'API token to use for commands'
|
7
8
|
|
8
9
|
map "-v" => :version
|
9
10
|
desc "version", "Show Gemfury version", :hide => true
|
@@ -11,18 +12,7 @@ class Gemfury::Command::App < Thor
|
|
11
12
|
shell.say Gemfury::VERSION
|
12
13
|
end
|
13
14
|
|
14
|
-
|
15
|
-
def whoami
|
16
|
-
if !has_credentials?
|
17
|
-
shell.say %Q(You are not logged in), :green
|
18
|
-
else
|
19
|
-
with_checks_and_rescues do
|
20
|
-
me = client.account_info['username']
|
21
|
-
shell.say %Q(You are logged in as "#{me}"), :green
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
15
|
+
### PACKAGE MANAGEMENT ###
|
26
16
|
desc "push FILE", "Upload a new version of a package"
|
27
17
|
def push(*gems)
|
28
18
|
with_checks_and_rescues do
|
@@ -64,6 +54,7 @@ class Gemfury::Command::App < Thor
|
|
64
54
|
end
|
65
55
|
end
|
66
56
|
|
57
|
+
### AUTHENTICATION ###
|
67
58
|
desc "logout", "Remove Gemfury credentials"
|
68
59
|
def logout
|
69
60
|
if !has_credentials?
|
@@ -74,6 +65,21 @@ class Gemfury::Command::App < Thor
|
|
74
65
|
end
|
75
66
|
end
|
76
67
|
|
68
|
+
desc "login", "Populate Gemfury credentials"
|
69
|
+
def login
|
70
|
+
with_checks_and_rescues do
|
71
|
+
me = client.account_info['name']
|
72
|
+
shell.say %Q(You are logged in as "#{me}"), :green
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
desc "whoami", "Show current user"
|
77
|
+
def whoami
|
78
|
+
has_credentials? ? self.login : begin
|
79
|
+
shell.say %Q(You are not logged in), :green
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
77
83
|
### COLLABORATION MANAGEMENT ###
|
78
84
|
map "sharing:add" => 'sharing_add'
|
79
85
|
map "sharing:remove" => 'sharing_remove'
|
@@ -167,6 +173,7 @@ private
|
|
167
173
|
end
|
168
174
|
|
169
175
|
def with_checks_and_rescues(&block)
|
176
|
+
@user_api_key = options[:api_token] if options[:api_token]
|
170
177
|
with_authorization(&block)
|
171
178
|
rescue Gemfury::InvalidGemVersion => e
|
172
179
|
shell.say "You have a deprecated Gemfury client", :red
|
@@ -175,6 +182,8 @@ private
|
|
175
182
|
else
|
176
183
|
shell.say %q(No problem. You can also run "gem update gemfury")
|
177
184
|
end
|
185
|
+
rescue Gemfury::Conflict => e
|
186
|
+
die!("Oops! Locked for another user. Try again later.", e)
|
178
187
|
rescue Gemfury::Forbidden => e
|
179
188
|
die!("Oops! You're not allowed to access this", e)
|
180
189
|
rescue Gemfury::NotFound => e
|
@@ -3,19 +3,19 @@ module Gemfury::Command::Authorization
|
|
3
3
|
|
4
4
|
def wipe_credentials!
|
5
5
|
FileUtils.rm(config_path, :force => true) # never raises exception
|
6
|
-
netrc_conf.delete(
|
6
|
+
each_netrc_host { |h| netrc_conf.delete(h) }
|
7
7
|
netrc_conf.save
|
8
8
|
end
|
9
9
|
|
10
10
|
def has_credentials?
|
11
|
-
!!netrc_conf[
|
11
|
+
!!netrc_conf[netrc_api_host] ||
|
12
12
|
read_config_file.key?(:gemfury_api_key)
|
13
13
|
end
|
14
14
|
|
15
15
|
private
|
16
16
|
def with_authorization(&block)
|
17
|
-
# Load up the credentials
|
18
|
-
load_credentials!
|
17
|
+
# Load up the credentials if user_api_key is not already set
|
18
|
+
load_credentials! if @user_api_key.nil?
|
19
19
|
|
20
20
|
# Attempt the operation and prompt user in case of
|
21
21
|
# lack of authorization or a 401 response from the server
|
@@ -49,14 +49,13 @@ private
|
|
49
49
|
|
50
50
|
def load_credentials!
|
51
51
|
# Get credentials from ~/.netrc
|
52
|
-
email, @user_api_key = netrc_conf[
|
52
|
+
email, @user_api_key = netrc_conf[netrc_api_host]
|
53
53
|
# Legacy loading from ~/.gem/gemfury
|
54
|
-
|
55
|
-
@user_api_key = conf[:gemfury_api_key] if conf[:gemfury_api_key]
|
54
|
+
@user_api_key ||= read_config_file[:gemfury_api_key]
|
56
55
|
end
|
57
56
|
|
58
57
|
def write_credentials!(email)
|
59
|
-
netrc_conf[
|
58
|
+
each_netrc_host { |h| netrc_conf[h] = email, @user_api_key }
|
60
59
|
netrc_conf.save
|
61
60
|
end
|
62
61
|
|
@@ -68,7 +67,13 @@ private
|
|
68
67
|
@netrc ||= Netrc.read
|
69
68
|
end
|
70
69
|
|
71
|
-
def
|
70
|
+
def netrc_api_host
|
72
71
|
URI.parse(client.endpoint).host
|
73
72
|
end
|
73
|
+
|
74
|
+
def each_netrc_host
|
75
|
+
[:endpoint, :gitpoint].each do |c|
|
76
|
+
yield(URI.parse(client.send(c)).host)
|
77
|
+
end
|
78
|
+
end
|
74
79
|
end
|
@@ -6,8 +6,9 @@ module Gemfury
|
|
6
6
|
:user_api_key,
|
7
7
|
:adapter,
|
8
8
|
:endpoint,
|
9
|
+
:gitpoint,
|
9
10
|
:user_agent,
|
10
|
-
:
|
11
|
+
:api_version,
|
11
12
|
:account].freeze
|
12
13
|
|
13
14
|
# The adapter that will be used to connect if none is set
|
@@ -16,11 +17,14 @@ module Gemfury
|
|
16
17
|
# The endpoint that will be used to connect if none is set
|
17
18
|
DEFAULT_ENDPOINT = 'https://api.fury.io/'.freeze
|
18
19
|
|
20
|
+
# The HTTP endpoint for git repo (used for .netrc credentials)
|
21
|
+
DEFAULT_GITPOINT = 'https://git.fury.io/'.freeze
|
22
|
+
|
19
23
|
# The value sent in the 'User-Agent' header if none is set
|
20
24
|
DEFAULT_USER_AGENT = "Gemfury RubyGem #{Gemfury::VERSION}".freeze
|
21
25
|
|
22
|
-
#
|
23
|
-
|
26
|
+
# Default API version
|
27
|
+
DEFAULT_API_VERSION = 1
|
24
28
|
|
25
29
|
# Default user API key
|
26
30
|
DEFAULT_API_KEY = nil
|
@@ -53,8 +57,9 @@ module Gemfury
|
|
53
57
|
self.user_api_key = DEFAULT_API_KEY
|
54
58
|
self.adapter = DEFAULT_ADAPTER
|
55
59
|
self.endpoint = DEFAULT_ENDPOINT
|
60
|
+
self.gitpoint = DEFAULT_GITPOINT
|
56
61
|
self.user_agent = DEFAULT_USER_AGENT
|
57
|
-
self.
|
62
|
+
self.api_version = DEFAULT_API_VERSION
|
58
63
|
self.account = DEFAULT_ACCOUNT
|
59
64
|
self
|
60
65
|
end
|
data/lib/gemfury/error.rb
CHANGED
data/lib/gemfury/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemfury
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.0.
|
4
|
+
version: 0.5.0.beta3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Rykov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.10.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.10.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: multi_json
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1.
|
47
|
+
version: '1.10'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1.
|
54
|
+
version: '1.10'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: thor
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
146
|
version: 1.3.1
|
147
147
|
requirements: []
|
148
148
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.4.
|
149
|
+
rubygems_version: 2.4.6
|
150
150
|
signing_key:
|
151
151
|
specification_version: 4
|
152
152
|
summary: Cloud Gem Server for your private RubyGems
|