packagecloud-ruby 0.2.17 → 0.2.19
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +33 -8
- data/lib/packagecloud/client.rb +31 -1
- data/lib/packagecloud/credentials.rb +8 -1
- data/lib/packagecloud/version.rb +1 -1
- data/spec/packagecloud_spec.rb +12 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d5b9cfbb4fa58fd4513b51b77128a5f79b09cec
|
4
|
+
data.tar.gz: 79c30b70c7404f03a2162def26a4c7de879e5ba0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed77f5de56f89489e43296cfbf581bcb9abb713d4020403494a5db9f4931b01e96d7650b14ebb44bdafb7c9ff4051f7b659694a55905c7dfbf07a6da7dfc433a
|
7
|
+
data.tar.gz: 759d2175cb37074adf17231af1cfd198f6af203420a57fcdb25771a894e39d2073dff0dbc0a295366354c4a71c2c187305d24b3ea5bb6a51066695491256359c
|
data/README.md
CHANGED
@@ -22,13 +22,22 @@ Ruby library for communicating with the [packagecloud.io](https://packagecloud.i
|
|
22
22
|
gem install packagecloud-ruby
|
23
23
|
```
|
24
24
|
|
25
|
+
## Getting your API token
|
26
|
+
|
27
|
+
Login to [packagecloud.io](https://packagecloud.io) and
|
28
|
+
go to your [Account Settings](https://packagecloud.io/api_token) to see your API token.
|
29
|
+
|
25
30
|
## Creating a Client
|
26
31
|
|
32
|
+
Note that you should not use the email address associated with your
|
33
|
+
[packagecloud.io](https://packagecloud.io) account when accessing the API.
|
34
|
+
Please use your username on the site.
|
35
|
+
|
27
36
|
```ruby
|
28
37
|
require 'packagecloud'
|
29
38
|
|
30
|
-
# Create a client
|
31
|
-
credentials = Packagecloud::Credentials.new("joedamato", "
|
39
|
+
# Create a client using your username and API token
|
40
|
+
credentials = Packagecloud::Credentials.new("joedamato", "my_api_token")
|
32
41
|
@client = Packagecloud::Client.new(credentials)
|
33
42
|
|
34
43
|
```
|
@@ -54,12 +63,14 @@ Ruby library for communicating with the [packagecloud.io](https://packagecloud.i
|
|
54
63
|
|
55
64
|
### Distributions
|
56
65
|
|
66
|
+
This is the list of currently [supported distributions](https://packagecloud.io/docs#os_distro_version).
|
67
|
+
|
57
68
|
```ruby
|
58
69
|
# Get all distributions
|
59
70
|
distros = @client.distributions
|
60
71
|
|
61
72
|
# Looking up a distribution id by name
|
62
|
-
id = @client.find_distribution_id("
|
73
|
+
id = @client.find_distribution_id("el/6") # returns 27
|
63
74
|
```
|
64
75
|
|
65
76
|
### Repositories
|
@@ -76,17 +87,31 @@ Ruby library for communicating with the [packagecloud.io](https://packagecloud.i
|
|
76
87
|
|
77
88
|
```
|
78
89
|
|
90
|
+
When specifiying your repository name, you should use just the name and not
|
91
|
+
the fully qualified name (fqname).
|
92
|
+
|
93
|
+
For example:
|
94
|
+
|
95
|
+
```ruby
|
96
|
+
# INCORRECT: this should just be "my_repo"
|
97
|
+
repo = @client.repository("user/my_repo")
|
98
|
+
```
|
99
|
+
|
79
100
|
### Packages
|
80
101
|
|
81
102
|
```ruby
|
82
|
-
# Create Packages (takes IO object for file)
|
83
|
-
|
84
|
-
rpm_package = Package.new(open("libcurl-0.1.2.rpm"),
|
103
|
+
# Create RPM Packages (takes IO object for file)
|
104
|
+
distro_id = @client.find_distribution_id("el/6")
|
105
|
+
rpm_package = Packagecloud::Package.new(open("libcurl-0.1.2.rpm"), distro_id)
|
106
|
+
|
107
|
+
# Creating gem Packages (no distribution required)
|
108
|
+
gem_package = Packagecloud::Package.new(open("rails-4.0.0.gem"))
|
85
109
|
|
86
110
|
# Creating source Packages
|
111
|
+
distro_id = @client.find_distribution_id("ubuntu/trusty")
|
87
112
|
source_files = { "jake_1.0.orig.tar.bz2" => open("/path/jake_1.0.orig.tar.bz2"),
|
88
113
|
"jake_1.0-7.debian.tar.gz" => open("/path/jake_1.0-7.debian.tar.gz") }
|
89
|
-
dsc_package = Package.new("jake_1.0-7.dsc",
|
114
|
+
dsc_package = Packagecloud::Package.new("jake_1.0-7.dsc", distro_id, source_files)
|
90
115
|
|
91
116
|
# Upload Packages
|
92
117
|
@client.put_package("test_repo", gem_package)
|
@@ -96,6 +121,6 @@ Ruby library for communicating with the [packagecloud.io](https://packagecloud.i
|
|
96
121
|
|
97
122
|
## Copyright
|
98
123
|
|
99
|
-
Copyright (c) 2014 Computology, LLC
|
124
|
+
Copyright (c) 2014-2015 Computology, LLC
|
100
125
|
|
101
126
|
See LICENSE.txt for details.
|
data/lib/packagecloud/client.rb
CHANGED
@@ -24,6 +24,22 @@ module Packagecloud
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
+
class InvalidRepoNameException < StandardError
|
28
|
+
attr_reader :object
|
29
|
+
|
30
|
+
def initialize(object = nil)
|
31
|
+
@object = object
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class InvalidUsernameException < StandardError
|
36
|
+
attr_reader :object
|
37
|
+
|
38
|
+
def initialize(object = nil)
|
39
|
+
@object = object
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
27
43
|
class Client
|
28
44
|
attr_reader :connection
|
29
45
|
attr_reader :credentials
|
@@ -54,6 +70,7 @@ module Packagecloud
|
|
54
70
|
end
|
55
71
|
|
56
72
|
def repository(repo)
|
73
|
+
assert_valid_repo_name(repo)
|
57
74
|
response = get("/api/v1/repos/#{username}/#{repo}.json")
|
58
75
|
parsed_json_result(response)
|
59
76
|
end
|
@@ -64,6 +81,7 @@ module Packagecloud
|
|
64
81
|
end
|
65
82
|
|
66
83
|
def create_repository(repo, private=false)
|
84
|
+
assert_valid_repo_name(repo)
|
67
85
|
privacy = private ? 1 : 0
|
68
86
|
body = { "repository" => { "name" => repo, "private" => privacy.to_s } }
|
69
87
|
response = post("/api/v1/repos.json", body.to_json)
|
@@ -71,6 +89,7 @@ module Packagecloud
|
|
71
89
|
end
|
72
90
|
|
73
91
|
def package_contents(repo, package)
|
92
|
+
assert_valid_repo_name(repo)
|
74
93
|
url = "/api/v1/repos/#{username}/#{repo}/packages/contents.json"
|
75
94
|
|
76
95
|
mixed_msg = MIME::Multipart::FormData.new
|
@@ -85,6 +104,8 @@ module Packagecloud
|
|
85
104
|
end
|
86
105
|
|
87
106
|
def put_package(repo, package)
|
107
|
+
assert_valid_repo_name(repo)
|
108
|
+
|
88
109
|
url = "/api/v1/repos/#{username}/#{repo}/packages.json"
|
89
110
|
|
90
111
|
mixed_msg = MIME::Multipart::FormData.new
|
@@ -127,6 +148,15 @@ module Packagecloud
|
|
127
148
|
end
|
128
149
|
|
129
150
|
private
|
151
|
+
def assert_valid_repo_name(repo)
|
152
|
+
if repo.include?("/")
|
153
|
+
raise InvalidRepoNameException.new("The repo name: #{repo} is " \
|
154
|
+
"invalid. It looks like you are " \
|
155
|
+
"using the fully qualified name " \
|
156
|
+
"(fqname) instead of just the " \
|
157
|
+
"repo name. Please try again.")
|
158
|
+
end
|
159
|
+
end
|
130
160
|
|
131
161
|
def assert_compatible_version
|
132
162
|
result = gem_version
|
@@ -216,4 +246,4 @@ module Packagecloud
|
|
216
246
|
end
|
217
247
|
|
218
248
|
end
|
219
|
-
end
|
249
|
+
end
|
@@ -6,6 +6,13 @@ module Packagecloud
|
|
6
6
|
def initialize(username, token)
|
7
7
|
@username = username
|
8
8
|
@token = token
|
9
|
+
if @username.include?("@")
|
10
|
+
raise InvalidUsernameException.new("Sorry, looks like you may have " \
|
11
|
+
"tried to use an email address " \
|
12
|
+
"instead of your packagecloud.io " \
|
13
|
+
"username. Please use your " \
|
14
|
+
"username instead!")
|
15
|
+
end
|
9
16
|
end
|
10
17
|
end
|
11
|
-
end
|
18
|
+
end
|
data/lib/packagecloud/version.rb
CHANGED
data/spec/packagecloud_spec.rb
CHANGED
@@ -133,6 +133,12 @@ describe Packagecloud do
|
|
133
133
|
expect(result.response["name"]).to eq("test_repo")
|
134
134
|
end
|
135
135
|
|
136
|
+
it "should raise if the repo name is invalid" do
|
137
|
+
expect do
|
138
|
+
result = @client.repository("hi/test_repo")
|
139
|
+
end.to raise_error(InvalidRepoNameException)
|
140
|
+
end
|
141
|
+
|
136
142
|
it "GET /api/v1/repos/joedamato/invalid_repo.json (invalid repo)" do
|
137
143
|
result = @client.repository("invalid_repo")
|
138
144
|
expect(result.succeeded).to be_falsey
|
@@ -143,6 +149,12 @@ describe Packagecloud do
|
|
143
149
|
expect($request["User-Agent"]).to eq("packagecloud-ruby #{Packagecloud::VERSION}/test_client")
|
144
150
|
end
|
145
151
|
|
152
|
+
it "should raise if the username has an @ in it" do
|
153
|
+
expect do
|
154
|
+
credentials = Credentials.new("hi@test.com", "test_token")
|
155
|
+
end.to raise_error(InvalidUsernameException)
|
156
|
+
end
|
157
|
+
|
146
158
|
it "should raise if api has advanced too far" do
|
147
159
|
current = Packagecloud::MINOR_VERSION
|
148
160
|
Packagecloud::MINOR_VERSION = "1"
|
@@ -177,7 +189,6 @@ describe Packagecloud do
|
|
177
189
|
end
|
178
190
|
|
179
191
|
describe "find_distribution_id" do
|
180
|
-
|
181
192
|
it "should find ubuntu/breezy" do
|
182
193
|
id = @client.find_distribution_id("ubuntu/breezy")
|
183
194
|
expect(id).to be(3)
|
@@ -199,6 +210,4 @@ describe Packagecloud do
|
|
199
210
|
}.to raise_error
|
200
211
|
end
|
201
212
|
end
|
202
|
-
|
203
|
-
|
204
213
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packagecloud-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Damato
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: excon
|
@@ -186,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
186
186
|
version: '0'
|
187
187
|
requirements: []
|
188
188
|
rubyforge_project:
|
189
|
-
rubygems_version: 2.4.
|
189
|
+
rubygems_version: 2.4.4
|
190
190
|
signing_key:
|
191
191
|
specification_version: 4
|
192
192
|
summary: library for interacting with packagecloud.io
|