octokit 2.2.0 → 2.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.
@@ -0,0 +1,56 @@
1
+ # :stopdoc:
2
+
3
+ # Stolen from ruby core's uri/common.rb, with modifications to support 1.8.x
4
+ #
5
+ # https://github.com/ruby/ruby/blob/trunk/lib/uri/common.rb
6
+ #
7
+ #
8
+
9
+ module URI
10
+ TBLENCWWWCOMP_ = {} # :nodoc:
11
+ 256.times do |i|
12
+ TBLENCWWWCOMP_[i.chr] = '%%%02X' % i
13
+ end
14
+ TBLENCWWWCOMP_[' '] = '+'
15
+ TBLENCWWWCOMP_.freeze
16
+ TBLDECWWWCOMP_ = {} # :nodoc:
17
+ 256.times do |i|
18
+ h, l = i>>4, i&15
19
+ TBLDECWWWCOMP_['%%%X%X' % [h, l]] = i.chr
20
+ TBLDECWWWCOMP_['%%%x%X' % [h, l]] = i.chr
21
+ TBLDECWWWCOMP_['%%%X%x' % [h, l]] = i.chr
22
+ TBLDECWWWCOMP_['%%%x%x' % [h, l]] = i.chr
23
+ end
24
+ TBLDECWWWCOMP_['+'] = ' '
25
+ TBLDECWWWCOMP_.freeze
26
+
27
+ # Encode given +s+ to URL-encoded form data.
28
+ #
29
+ # This method doesn't convert *, -, ., 0-9, A-Z, _, a-z, but does convert SP
30
+ # (ASCII space) to + and converts others to %XX.
31
+ #
32
+ # This is an implementation of
33
+ # http://www.w3.org/TR/html5/forms.html#url-encoded-form-data
34
+ #
35
+ # See URI.decode_www_form_component, URI.encode_www_form
36
+ def self.encode_www_form_component(s)
37
+ str = s.to_s
38
+ if RUBY_VERSION < "1.9" && $KCODE =~ /u/i
39
+ str.gsub(/([^ a-zA-Z0-9_.-]+)/) do
40
+ '%' + $1.unpack('H2' * Rack::Utils.bytesize($1)).join('%').upcase
41
+ end.tr(' ', '+')
42
+ else
43
+ str.gsub(/[^*\-.0-9A-Z_a-z]/) {|m| TBLENCWWWCOMP_[m]}
44
+ end
45
+ end
46
+
47
+ # Decode given +str+ of URL-encoded form data.
48
+ #
49
+ # This decodes + to SP.
50
+ #
51
+ # See URI.encode_www_form_component, URI.decode_www_form
52
+ def self.decode_www_form_component(str, enc=nil)
53
+ raise ArgumentError, "invalid %-encoding (#{str})" unless /\A(?:%[0-9a-fA-F]{2}|[^%])*\z/ =~ str
54
+ str.gsub(/\+|%[0-9a-fA-F]{2}/) {|m| TBLDECWWWCOMP_[m]}
55
+ end
56
+ end
@@ -1,3 +1,10 @@
1
+ major, minor, patch = RUBY_VERSION.split('.').map(&:to_i)
2
+
3
+ if (major == 1 && minor < 9) || (major == 1 && minor == 9 && patch < 2)
4
+ # pull in backports
5
+ require 'octokit/backports/uri'
6
+ end
7
+
1
8
  module Octokit
2
9
  class Client
3
10
 
@@ -16,9 +23,9 @@ module Octokit
16
23
  # client.subscribe("https://github.com/joshk/devise_imapable/events/push", "github://Email?address=josh.kalderimis@gmail.com")
17
24
  def subscribe(topic, callback)
18
25
  options = {
26
+ :"hub.callback" => callback,
19
27
  :"hub.mode" => "subscribe",
20
- :"hub.topic" => topic,
21
- :"hub.callback" => callback
28
+ :"hub.topic" => topic
22
29
  }
23
30
  response = pub_sub_hubbub_request(options)
24
31
 
@@ -35,9 +42,9 @@ module Octokit
35
42
  # client.unsubscribe("https://github.com/joshk/devise_imapable/events/push", "github://Email?address=josh.kalderimis@gmail.com")
36
43
  def unsubscribe(topic, callback)
37
44
  options = {
45
+ :"hub.callback" => callback,
38
46
  :"hub.mode" => "unsubscribe",
39
- :"hub.topic" => topic,
40
- :"hub.callback" => callback
47
+ :"hub.topic" => topic
41
48
  }
42
49
  response = pub_sub_hubbub_request(options)
43
50
 
@@ -93,18 +93,17 @@ module Octokit
93
93
  # @see http://developer.github.com/v3/repos/releases/#upload-a-release-asset
94
94
  def upload_asset(release_url, path_or_file, options = {})
95
95
  options[:accept] ||= PREVIEW_MEDIA_TYPE
96
- file = File.new(path_or_file, "r+b") unless file.respond_to?(:read)
96
+ file = path_or_file.respond_to?(:read) ? path_or_file : File.new(path_or_file, "r+b")
97
97
  options[:content_type] ||= content_type_from_file(file)
98
98
  raise Octokit::MissingContentType.new if options[:content_type].nil?
99
99
  unless name = options[:name]
100
- require 'pathname'
101
- name = Pathname.new(file).basename.to_s
100
+ name = File.basename(file.path)
102
101
  end
103
102
  upload_url = release(release_url).rels[:upload].href_template.expand(:name => name)
104
103
 
105
104
  request :post, upload_url, file.read, parse_query_and_convenience_headers(options)
106
105
  ensure
107
- file.close
106
+ file.close if file
108
107
  end
109
108
 
110
109
  # Get a single release asset
@@ -522,6 +522,7 @@ module Octokit
522
522
  # @example
523
523
  # @client.edit_hook(
524
524
  # 'octokit/octokit.rb',
525
+ # 100000,
525
526
  # 'web',
526
527
  # {
527
528
  # :url => 'http://something.com/webhook',
@@ -144,18 +144,26 @@ module Octokit
144
144
  # and headers include "X-GitHub-OTP"
145
145
  class OneTimePasswordRequired < ClientError
146
146
  #@private
147
- HEADER = /required; (?<delivery>\w+)/i
147
+ OTP_DELIVERY_PATTERN = /required; (\w+)/i
148
148
 
149
149
  #@private
150
150
  def self.required_header(headers)
151
- HEADER.match headers['X-GitHub-OTP'].to_s
151
+ OTP_DELIVERY_PATTERN.match headers['X-GitHub-OTP'].to_s
152
152
  end
153
153
 
154
154
  # Delivery method for the user's OTP
155
155
  #
156
156
  # @return [String]
157
157
  def password_delivery
158
- @password_delivery ||= self.class.required_header(@response[:response_headers])[:delivery]
158
+ @password_delivery ||= delivery_method_from_header
159
+ end
160
+
161
+ private
162
+
163
+ def delivery_method_from_header
164
+ if match = self.class.required_header(@response[:response_headers])
165
+ match[1]
166
+ end
159
167
  end
160
168
  end
161
169
 
@@ -2,6 +2,6 @@ module Octokit
2
2
 
3
3
  # Current version
4
4
  # @return [String]
5
- VERSION = "2.2.0".freeze
5
+ VERSION = "2.3.0".freeze
6
6
 
7
7
  end
@@ -11,7 +11,6 @@ Gem::Specification.new do |spec|
11
11
  spec.email = ['wynn.netherland@gmail.com', 'sferik@gmail.com', 'clint@ctshryock.com']
12
12
  spec.files = %w(.document CONTRIBUTING.md LICENSE.md README.md Rakefile octokit.gemspec)
13
13
  spec.files += Dir.glob("lib/**/*.rb")
14
- spec.files += Dir.glob("spec/**/*")
15
14
  spec.homepage = 'https://github.com/octokit/octokit.rb'
16
15
  spec.licenses = ['MIT']
17
16
  spec.name = 'octokit'
@@ -32,28 +32,25 @@ describe Octokit::Client::Authorizations do
32
32
  end
33
33
 
34
34
  context 'with :idempotent => true' do
35
- subject do
36
- lambda do |info = {}|
37
- @client.create_authorization({
38
- :idempotent => true,
39
- :client_id => test_github_client_id,
40
- :client_secret => test_github_client_secret
41
- }.merge(info))
42
- end
43
- end
44
-
45
35
  it "creates a new authorization with options" do
46
- info = {
47
- :scopes => ["gist"],
48
- }
49
- authorization = subject.call info
36
+ authorization = @client.create_authorization \
37
+ :idempotent => true,
38
+ :client_id => test_github_client_id,
39
+ :client_secret => test_github_client_secret,
40
+ :scopes => %w(gist)
50
41
  expect(authorization.scopes).to be_kind_of Array
51
42
  assert_requested :put, basic_github_url("/authorizations/clients/#{test_github_client_id}")
52
43
  end
53
44
 
54
45
  it 'returns an existing API authorization if one already exists' do
55
- first_authorization = subject.call
56
- second_authorization = subject.call
46
+ first_authorization = @client.create_authorization \
47
+ :idempotent => true,
48
+ :client_id => test_github_client_id,
49
+ :client_secret => test_github_client_secret
50
+ second_authorization = @client.create_authorization \
51
+ :idempotent => true,
52
+ :client_id => test_github_client_id,
53
+ :client_secret => test_github_client_secret
57
54
  expect(first_authorization.id).to eql second_authorization.id
58
55
  end
59
56
  end
@@ -70,7 +70,11 @@ describe Octokit::Client::PubSubHubbub do
70
70
  with(irc_request_body).
71
71
  to_return(:status => 204)
72
72
  expect(@client.subscribe_service_hook("joshk/completeness-fu", "irc", { :server => "chat.freenode.org", :room => "#myproject"})).to eql(true)
73
- assert_requested :post, "https://api.github.com/hub", :body => irc_request_body, :times => 1
73
+ # Since we can't depend upon hash ordering across the Rubies
74
+ assert_requested :post, "https://api.github.com/hub", :times => 1 do |req|
75
+ req.body[%r{hub.callback=github%3A%2F%2Firc%3Froom%3D%2523myproject}]
76
+ req.body[%r{server%3Dchat.freenode.org}]
77
+ end
74
78
  end
75
79
  end # .subscribe_service_hook
76
80
 
@@ -79,10 +79,11 @@ describe Octokit::Client::Releases do
79
79
  end
80
80
  it "uploads a release asset as file object" do
81
81
  file = File.new("spec/fixtures/upload.png", "r+b")
82
+ size = File.size(file)
82
83
  name = "upload_by_file.png"
83
84
  asset = @client.upload_asset(@release_url, file, :content_type => "image/png", :name => name)
84
85
  expect(asset.name).to eq(name)
85
- expect(asset.size).to eq(file.size)
86
+ expect(asset.size).to eq(size)
86
87
  end
87
88
  it "uploads a release asset with a default name" do
88
89
  path = "spec/fixtures/upload.png"
metadata CHANGED
@@ -1,54 +1,68 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: octokit
3
- version: !ruby/object:Gem::Version
4
- version: 2.2.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 3
5
+ prerelease:
6
+ segments:
7
+ - 2
8
+ - 3
9
+ - 0
10
+ version: 2.3.0
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Wynn Netherland
8
14
  - Erik Michaels-Ober
9
15
  - Clint Shryock
10
16
  autorequire:
11
17
  bindir: bin
12
18
  cert_chain: []
13
- date: 2013-09-26 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
19
+
20
+ date: 2013-10-01 00:00:00 -05:00
21
+ default_executable:
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
16
24
  name: bundler
17
- requirement: !ruby/object:Gem::Requirement
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '1.0'
22
- type: :development
23
25
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- requirements:
26
+ requirement: &id001 !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
26
29
  - - ~>
27
- - !ruby/object:Gem::Version
28
- version: '1.0'
29
- - !ruby/object:Gem::Dependency
30
+ - !ruby/object:Gem::Version
31
+ hash: 15
32
+ segments:
33
+ - 1
34
+ - 0
35
+ version: "1.0"
36
+ type: :development
37
+ version_requirements: *id001
38
+ - !ruby/object:Gem::Dependency
30
39
  name: sawyer
31
- requirement: !ruby/object:Gem::Requirement
32
- requirements:
33
- - - ~>
34
- - !ruby/object:Gem::Version
35
- version: 0.5.1
36
- type: :runtime
37
40
  prerelease: false
38
- version_requirements: !ruby/object:Gem::Requirement
39
- requirements:
41
+ requirement: &id002 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
40
44
  - - ~>
41
- - !ruby/object:Gem::Version
45
+ - !ruby/object:Gem::Version
46
+ hash: 9
47
+ segments:
48
+ - 0
49
+ - 5
50
+ - 1
42
51
  version: 0.5.1
52
+ type: :runtime
53
+ version_requirements: *id002
43
54
  description: Simple wrapper for the GitHub API
44
- email:
55
+ email:
45
56
  - wynn.netherland@gmail.com
46
57
  - sferik@gmail.com
47
58
  - clint@ctshryock.com
48
59
  executables: []
60
+
49
61
  extensions: []
62
+
50
63
  extra_rdoc_files: []
51
- files:
64
+
65
+ files:
52
66
  - .document
53
67
  - CONTRIBUTING.md
54
68
  - LICENSE.md
@@ -57,6 +71,7 @@ files:
57
71
  - octokit.gemspec
58
72
  - lib/octokit/arguments.rb
59
73
  - lib/octokit/authentication.rb
74
+ - lib/octokit/backports/uri.rb
60
75
  - lib/octokit/client/authorizations.rb
61
76
  - lib/octokit/client/commit_comments.rb
62
77
  - lib/octokit/client/commits.rb
@@ -437,31 +452,43 @@ files:
437
452
  - spec/octokit/rate_limit_spec.rb
438
453
  - spec/octokit/repository_spec.rb
439
454
  - spec/octokit_spec.rb
455
+ has_rdoc: true
440
456
  homepage: https://github.com/octokit/octokit.rb
441
- licenses:
457
+ licenses:
442
458
  - MIT
443
- metadata: {}
444
459
  post_install_message:
445
460
  rdoc_options: []
446
- require_paths:
461
+
462
+ require_paths:
447
463
  - lib
448
- required_ruby_version: !ruby/object:Gem::Requirement
449
- requirements:
450
- - - '>='
451
- - !ruby/object:Gem::Version
452
- version: '0'
453
- required_rubygems_version: !ruby/object:Gem::Requirement
454
- requirements:
455
- - - '>='
456
- - !ruby/object:Gem::Version
464
+ required_ruby_version: !ruby/object:Gem::Requirement
465
+ none: false
466
+ requirements:
467
+ - - ">="
468
+ - !ruby/object:Gem::Version
469
+ hash: 3
470
+ segments:
471
+ - 0
472
+ version: "0"
473
+ required_rubygems_version: !ruby/object:Gem::Requirement
474
+ none: false
475
+ requirements:
476
+ - - ">="
477
+ - !ruby/object:Gem::Version
478
+ hash: 17
479
+ segments:
480
+ - 1
481
+ - 3
482
+ - 5
457
483
  version: 1.3.5
458
484
  requirements: []
485
+
459
486
  rubyforge_project:
460
- rubygems_version: 2.0.3
487
+ rubygems_version: 1.6.2
461
488
  signing_key:
462
- specification_version: 4
489
+ specification_version: 3
463
490
  summary: Ruby toolkit for working with the GitHub API
464
- test_files:
491
+ test_files:
465
492
  - spec/cassettes/delete_authorization.json
466
493
  - spec/cassettes/Octokit_Client/_get/handles_query_params.json
467
494
  - spec/cassettes/Octokit_Client/_head/handles_query_params.json
@@ -801,4 +828,3 @@ test_files:
801
828
  - spec/octokit/rate_limit_spec.rb
802
829
  - spec/octokit/repository_spec.rb
803
830
  - spec/octokit_spec.rb
804
- has_rdoc:
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 49bd50a2f9430627f5a602916c03e3931299a222
4
- data.tar.gz: 7133fd9d3339e1fc94dd480a456948551d88fcc3
5
- SHA512:
6
- metadata.gz: 5ad7ef3547f6c91f21821e0bb69ceb919363b224abe3cc9e494c064c43fa9be3aace48139298aefb2deb938d2b98fcdc7b49626ce5c870eef88ea5ea628c7af8
7
- data.tar.gz: 61d8515ae3534f2b5e74954b3ee3a3033dcb976dc526135c26216342eaa09f6f6ac2c5836f5b1a8f6f4abc7a1a59cc8c0909fd44729bff0066a71dee29d43749