octokit 1.6.1 → 1.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +1 -0
- data/lib/octokit/client/downloads.rb +48 -3
- data/lib/octokit/version.rb +1 -1
- data/spec/fixtures/v3/download_create.json +21 -0
- data/spec/octokit/client/downloads_spec.rb +32 -1
- metadata +28 -26
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
* [1.7.0 - June 18, 2012](https://github.com/pengwynn/octokit/compare/v1.6.1...v1.7.0)
|
3
4
|
* [1.6.1 - June 14, 2012](https://github.com/pengwynn/octokit/compare/v1.6.0...v1.6.1)
|
4
5
|
* [1.6.0 - June 14, 2012](https://github.com/pengwynn/octokit/compare/v1.5.0...v1.6.0)
|
5
6
|
* [1.5.0 - June 14, 2012](https://github.com/pengwynn/octokit/compare/v1.4.0...v1.5.0)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Octokit
|
2
2
|
class Client
|
3
|
-
module Downloads
|
3
|
+
module Downloads
|
4
4
|
|
5
5
|
# List available downloads for a repository
|
6
6
|
#
|
@@ -12,18 +12,63 @@ module Octokit
|
|
12
12
|
def downloads(repo, options={})
|
13
13
|
get("repos/#{Repository.new(repo)}/downloads", options, 3)
|
14
14
|
end
|
15
|
+
alias :list_downloads :downloads
|
15
16
|
|
16
17
|
# Get single download for a repository
|
17
18
|
#
|
18
19
|
# @param repo [String, Repository, Hash] A GitHub repository
|
19
|
-
# @param id [Integer] ID of the download
|
20
|
+
# @param id [Integer] ID of the download
|
20
21
|
# @return [Download] A single download from the repository
|
21
22
|
# @see http://developer.github.com/v3/repos/downloads/#get-a-single-download
|
22
|
-
# @example Get the "Robawt" download from Github/Hubot
|
23
|
+
# @example Get the "Robawt" download from Github/Hubot
|
23
24
|
# Octokit.download("github/hubot")
|
24
25
|
def download(repo, id, options={})
|
25
26
|
get("repos/#{Repository.new(repo)}/downloads/#{id}", options, 3)
|
26
27
|
end
|
28
|
+
|
29
|
+
|
30
|
+
def create_download(repo, name, options={})
|
31
|
+
options[:content_type] ||= 'text/plain'
|
32
|
+
file = Faraday::UploadIO.new(name, options[:content_type])
|
33
|
+
resource = create_download_resource(repo, file.original_filename, File.size(name), options)
|
34
|
+
|
35
|
+
resource_hash = {
|
36
|
+
'key' => resource.path,
|
37
|
+
'acl' => resource.acl,
|
38
|
+
'success_action_status' => 201,
|
39
|
+
'Filename' => resource.name,
|
40
|
+
'AWSAccessKeyId' => resource.accesskeyid,
|
41
|
+
'Policy' => resource.policy,
|
42
|
+
'Signature' => resource.signature,
|
43
|
+
'Content-Type' => resource.mime_type,
|
44
|
+
'file' => file
|
45
|
+
}
|
46
|
+
|
47
|
+
conn = Faraday.new(resource.s3_url) do |builder|
|
48
|
+
builder.request :multipart
|
49
|
+
builder.request :url_encoded
|
50
|
+
builder.adapter :net_http
|
51
|
+
end
|
52
|
+
|
53
|
+
response = conn.post '/', resource_hash
|
54
|
+
response.status == 201
|
55
|
+
end
|
56
|
+
|
57
|
+
# Delete a single download for a repository
|
58
|
+
#
|
59
|
+
# @param repo [String, Repository, Hash] A GitHub repository
|
60
|
+
# @param id [Integer] ID of the download
|
61
|
+
# @see http://developer.github.com/v3/repos/downloads/#delete-a-single-download
|
62
|
+
# @example Get the "Robawt" download from Github/Hubot
|
63
|
+
# Octokit.delete_download("github/hubot", 1234)
|
64
|
+
def delete_download(repo, id)
|
65
|
+
delete("repos/#{Repository.new(repo)}/downloads/#{id}", {}, 3, true, true, true)
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
def create_download_resource(repo, name, size, options={})
|
70
|
+
post("/repos/#{Repository.new(repo)}/downloads", options.merge({:name => name, :size => size}))
|
71
|
+
end
|
27
72
|
end
|
28
73
|
end
|
29
74
|
end
|
data/lib/octokit/version.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
{
|
2
|
+
"url": "https://api.github.com/repos/octocat/Hello-World/downloads/1",
|
3
|
+
"html_url": "https://github.com/repos/octocat/Hello-World/downloads/new_file.jpg",
|
4
|
+
"id": 1,
|
5
|
+
"name": "new_file.jpg",
|
6
|
+
"description": "Description of your download",
|
7
|
+
"size": 1024,
|
8
|
+
"download_count": 40,
|
9
|
+
"content_type": ".jpg",
|
10
|
+
"policy": "ewogICAg...",
|
11
|
+
"signature": "mwnFDC...",
|
12
|
+
"bucket": "github",
|
13
|
+
"accesskeyid": "1ABCDEFG...",
|
14
|
+
"path": "downloads/ocotocat/Hello-World/new_file.jpg",
|
15
|
+
"acl": "public-read",
|
16
|
+
"expirationdate": "2011-04-14T16:00:49Z",
|
17
|
+
"prefix": "downloads/octocat/Hello-World/",
|
18
|
+
"mime_type": "image/jpeg",
|
19
|
+
"redirect": false,
|
20
|
+
"s3_url": "https://github.s3.amazonaws.com/"
|
21
|
+
}
|
@@ -18,7 +18,7 @@ describe Octokit::Client::Downloads do
|
|
18
18
|
|
19
19
|
end
|
20
20
|
|
21
|
-
describe ".download" do
|
21
|
+
describe ".download" do
|
22
22
|
|
23
23
|
it "should get a single download" do
|
24
24
|
stub_get("/repos/github/hubot/downloads/165347").
|
@@ -30,4 +30,35 @@ describe Octokit::Client::Downloads do
|
|
30
30
|
|
31
31
|
end
|
32
32
|
|
33
|
+
describe ".create_download" do
|
34
|
+
before(:each) do
|
35
|
+
stub_post("/repos/octocat/Hello-World/downloads").
|
36
|
+
with(:body => {:name => "download_create.json", :size => 690,
|
37
|
+
:description => "Description of your download",
|
38
|
+
:content_type => "text/plain" }).
|
39
|
+
to_return(:body => fixture("v3/download_create.json"))
|
40
|
+
end
|
41
|
+
it "should create a download resource" do
|
42
|
+
resource = @client.send(:create_download_resource, "octocat/Hello-World", "download_create.json", 690, {:description => "Description of your download", :content_type => "text/plain"})
|
43
|
+
resource.s3_url.should == "https://github.s3.amazonaws.com/"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should post to a S3 url" do
|
47
|
+
stub_post("https://github.s3.amazonaws.com/").
|
48
|
+
to_return(:status => 201)
|
49
|
+
file_path = File.expand_path 'spec/fixtures/v3/download_create.json'
|
50
|
+
@client.create_download("octocat/Hello-World", file_path, {:description => "Description of your download", :content_type => "text/plain"}).should == true
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe ".delete_download" do
|
55
|
+
|
56
|
+
it "should delete a download" do
|
57
|
+
stub_request(:delete, "https://api.github.com/repos/octocat/Hellow-World/downloads/165347").
|
58
|
+
with(:headers => {'Accept'=>'*/*'}).
|
59
|
+
to_return(:status => 204, :body => "", :headers => {})
|
60
|
+
@client.delete_download('octocat/Hellow-World', 165347).status.should == 204
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
33
64
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: octokit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,11 +11,11 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2012-06-
|
14
|
+
date: 2012-06-18 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: addressable
|
18
|
-
requirement: &
|
18
|
+
requirement: &70266235724000 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ~>
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: '2.2'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *70266235724000
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: faraday
|
29
|
-
requirement: &
|
29
|
+
requirement: &70266235739020 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: '0.8'
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *70266235739020
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: faraday_middleware
|
40
|
-
requirement: &
|
40
|
+
requirement: &70266235738180 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: '0.8'
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *70266235738180
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: hashie
|
51
|
-
requirement: &
|
51
|
+
requirement: &70266235737060 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ~>
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: '1.2'
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *70266235737060
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: multi_json
|
62
|
-
requirement: &
|
62
|
+
requirement: &70266235735960 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ~>
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
version: '1.3'
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *70266235735960
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: json
|
73
|
-
requirement: &
|
73
|
+
requirement: &70266235735400 !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
76
|
- - ! '>='
|
@@ -78,10 +78,10 @@ dependencies:
|
|
78
78
|
version: '0'
|
79
79
|
type: :development
|
80
80
|
prerelease: false
|
81
|
-
version_requirements: *
|
81
|
+
version_requirements: *70266235735400
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: maruku
|
84
|
-
requirement: &
|
84
|
+
requirement: &70266235734700 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
87
87
|
- - ! '>='
|
@@ -89,10 +89,10 @@ dependencies:
|
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
|
-
version_requirements: *
|
92
|
+
version_requirements: *70266235734700
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: rake
|
95
|
-
requirement: &
|
95
|
+
requirement: &70266235733720 !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
97
97
|
requirements:
|
98
98
|
- - ! '>='
|
@@ -100,10 +100,10 @@ dependencies:
|
|
100
100
|
version: '0'
|
101
101
|
type: :development
|
102
102
|
prerelease: false
|
103
|
-
version_requirements: *
|
103
|
+
version_requirements: *70266235733720
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: rspec
|
106
|
-
requirement: &
|
106
|
+
requirement: &70266235732800 !ruby/object:Gem::Requirement
|
107
107
|
none: false
|
108
108
|
requirements:
|
109
109
|
- - ! '>='
|
@@ -111,10 +111,10 @@ dependencies:
|
|
111
111
|
version: '0'
|
112
112
|
type: :development
|
113
113
|
prerelease: false
|
114
|
-
version_requirements: *
|
114
|
+
version_requirements: *70266235732800
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: simplecov
|
117
|
-
requirement: &
|
117
|
+
requirement: &70266235748160 !ruby/object:Gem::Requirement
|
118
118
|
none: false
|
119
119
|
requirements:
|
120
120
|
- - ! '>='
|
@@ -122,10 +122,10 @@ dependencies:
|
|
122
122
|
version: '0'
|
123
123
|
type: :development
|
124
124
|
prerelease: false
|
125
|
-
version_requirements: *
|
125
|
+
version_requirements: *70266235748160
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
127
|
name: webmock
|
128
|
-
requirement: &
|
128
|
+
requirement: &70266235746260 !ruby/object:Gem::Requirement
|
129
129
|
none: false
|
130
130
|
requirements:
|
131
131
|
- - ! '>='
|
@@ -133,10 +133,10 @@ dependencies:
|
|
133
133
|
version: '0'
|
134
134
|
type: :development
|
135
135
|
prerelease: false
|
136
|
-
version_requirements: *
|
136
|
+
version_requirements: *70266235746260
|
137
137
|
- !ruby/object:Gem::Dependency
|
138
138
|
name: yard
|
139
|
-
requirement: &
|
139
|
+
requirement: &70266235745600 !ruby/object:Gem::Requirement
|
140
140
|
none: false
|
141
141
|
requirements:
|
142
142
|
- - ! '>='
|
@@ -144,7 +144,7 @@ dependencies:
|
|
144
144
|
version: '0'
|
145
145
|
type: :development
|
146
146
|
prerelease: false
|
147
|
-
version_requirements: *
|
147
|
+
version_requirements: *70266235745600
|
148
148
|
description: Simple wrapper for the GitHub v3 API
|
149
149
|
email:
|
150
150
|
- wynn.netherland@gmail.com
|
@@ -211,6 +211,7 @@ files:
|
|
211
211
|
- spec/fixtures/v3/commits.json
|
212
212
|
- spec/fixtures/v3/contributors.json
|
213
213
|
- spec/fixtures/v3/download.json
|
214
|
+
- spec/fixtures/v3/download_create.json
|
214
215
|
- spec/fixtures/v3/downloads.json
|
215
216
|
- spec/fixtures/v3/emails.json
|
216
217
|
- spec/fixtures/v3/followers.json
|
@@ -331,6 +332,7 @@ test_files:
|
|
331
332
|
- spec/fixtures/v3/commits.json
|
332
333
|
- spec/fixtures/v3/contributors.json
|
333
334
|
- spec/fixtures/v3/download.json
|
335
|
+
- spec/fixtures/v3/download_create.json
|
334
336
|
- spec/fixtures/v3/downloads.json
|
335
337
|
- spec/fixtures/v3/emails.json
|
336
338
|
- spec/fixtures/v3/followers.json
|