github_api 0.12.1 → 0.12.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/github_api.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require 'pp' if ENV['DEBUG']
3
4
  require 'faraday'
4
5
  require 'github_api/version'
5
6
  require 'github_api/configuration'
@@ -4,7 +4,7 @@ module Github
4
4
  class Client::Issues::Milestones < API
5
5
 
6
6
  VALID_MILESTONE_OPTIONS = {
7
- 'state' => %w[ open closed ],
7
+ 'state' => %w[ open closed all ],
8
8
  'sort' => %w[ due_date completeness ],
9
9
  'direction' => %w[ desc asc ]
10
10
  }.freeze # :nodoc:
@@ -19,7 +19,7 @@ module Github
19
19
  ].freeze
20
20
 
21
21
  VALID_REQUEST_PARAM_VALUES = {
22
- 'state' => %w[ open closed ]
22
+ 'state' => %w[ open closed all ]
23
23
  }
24
24
 
25
25
  # Access to PullRequests::Comments API
@@ -11,9 +11,8 @@ class Hash # :nodoc:
11
11
  # Similar to except but modifies self
12
12
  #
13
13
  def except!(*keys)
14
- copy = self.dup
15
- keys.each { |key| copy.delete!(key) }
16
- copy
14
+ keys.each { |key| delete(key) }
15
+ self
17
16
  end unless method_defined? :except!
18
17
 
19
18
  # Returns a new hash with all the keys converted to symbols
@@ -15,7 +15,7 @@ module Github
15
15
  if Hash == args[0]
16
16
  hsh.replace args[0]
17
17
  elsif (args.size % 2) != 0
18
- pp args
18
+ pp args if ENV['DEBUG']
19
19
  raise ArgumentError, "odd number of elements for Hash"
20
20
  else
21
21
  0.step(args.size - 1, 2) do |a|
@@ -11,9 +11,12 @@ module Github #:nodoc
11
11
  end
12
12
 
13
13
  def generate_message(attributes)
14
- "\nProblem:\n #{attributes[:problem]}"+
15
- "\nSummary:\n #{attributes[:summary]}"+
16
- "\nResolution:\n #{attributes[:resolution]}"
14
+ @problem = attributes[:problem]
15
+ @summary = attributes[:summary]
16
+ @resolution = attributes[:resolution]
17
+ "\nProblem:\n #{@problem}"+
18
+ "\nSummary:\n #{@summary}"+
19
+ "\nResolution:\n #{@resolution}"
17
20
  end
18
21
  end
19
22
  end # Error
@@ -4,13 +4,18 @@ require 'github_api/utils/url'
4
4
  require 'uri'
5
5
 
6
6
  module Github
7
+ # A class responsible for requesting resources through page links
8
+ #
9
+ # @api private
7
10
  class PageIterator
8
11
  include Github::Constants
9
12
  include Github::Utils::Url
10
13
  include Github::PagedRequest
11
14
 
12
15
  # Setup attribute accesor for all the link types
13
- ATTRIBUTES = [ META_FIRST, META_NEXT, META_PREV, META_LAST ]
16
+ ATTRIBUTES = [META_FIRST, META_NEXT, META_PREV, META_LAST]
17
+
18
+ DEFAULT_SHA = 'master'
14
19
 
15
20
  ATTRIBUTES.each do |attr|
16
21
  attr_accessor :"#{attr}_page_uri", :"#{attr}_page"
@@ -21,82 +26,39 @@ module Github
21
26
  def initialize(links, current_api)
22
27
  @links = links
23
28
  @current_api = current_api
24
- update_page_links @links
29
+ update_page_links(@links)
25
30
  end
26
31
 
27
- def has_next?
32
+ def next?
28
33
  next_page == 0 || !next_page_uri.nil?
29
34
  end
30
35
 
31
36
  def count
32
- return nil unless last_page_uri
33
- parse_query(URI(last_page_uri).query)['page']
37
+ parse_query(URI(last_page_uri).query)['page'] if last_page_uri
34
38
  end
35
39
 
36
40
  # Perform http get request for the first resource
37
41
  #
38
42
  def first
39
- return nil unless first_page_uri
40
- page_uri = URI(first_page_uri)
41
- params = parse_query(page_uri.query)
42
- if next_page < 1
43
- params['sha'] = 'master' if params.keys.include?('sha')
44
- params['per_page'] = parse_per_page_number(first_page_uri)
45
- else
46
- params['page'] = parse_page_number(first_page_uri)
47
- params['per_page'] = parse_per_page_number(first_page_uri)
48
- end
49
-
50
- response = page_request(page_uri.path, params)
51
- update_page_links response.links
52
- response
43
+ perform_request(first_page_uri) if first_page_uri
53
44
  end
54
45
 
55
46
  # Perform http get request for the next resource
56
47
  #
57
48
  def next
58
- return nil unless has_next?
59
- page_uri = URI(next_page_uri)
60
- params = parse_query(page_uri.query)
61
- if next_page < 1
62
- params['sha'] = params['last_sha'] if params.keys.include?('last_sha')
63
- params['per_page'] = parse_per_page_number(next_page_uri)
64
- else
65
- params['page'] = parse_page_number(next_page_uri)
66
- params['per_page'] = parse_per_page_number(next_page_uri)
67
- end
68
-
69
- response = page_request(page_uri.path, params)
70
- update_page_links response.links
71
- response
49
+ perform_request(next_page_uri) if next?
72
50
  end
73
51
 
74
52
  # Perform http get request for the previous resource
75
53
  #
76
54
  def prev
77
- return nil unless prev_page_uri
78
- page_uri = URI(prev_page_uri)
79
- params = parse_query(page_uri.query)
80
- params['page'] = parse_page_number(prev_page_uri)
81
- params['per_page'] = parse_per_page_number(prev_page_uri)
82
-
83
- response = page_request(page_uri.path, params)
84
- update_page_links response.links
85
- response
55
+ perform_request(prev_page_uri) if prev_page_uri
86
56
  end
87
57
 
88
58
  # Perform http get request for the last resource
89
59
  #
90
60
  def last
91
- return nil unless last_page_uri
92
- page_uri = URI(last_page_uri)
93
- params = parse_query(page_uri.query)
94
- params['page'] = parse_page_number(last_page_uri)
95
- params['per_page'] = parse_per_page_number(last_page_uri)
96
-
97
- response = page_request(page_uri.path, params)
98
- update_page_links response.links
99
- response
61
+ perform_request(last_page_uri) if last_page_uri
100
62
  end
101
63
 
102
64
  # Returns the result for a specific page.
@@ -106,16 +68,35 @@ module Github
106
68
  # last page URI then there is only one page.
107
69
  page_uri = first_page_uri || last_page_uri
108
70
  return nil unless page_uri
109
- params = parse_query URI(page_uri).query
110
- params['page'] = page_number
111
- params['per_page'] = parse_per_page_number(page_uri)
112
71
 
113
- response = page_request URI(page_uri).path, params
72
+ perform_request(page_uri, page_number)
73
+ end
74
+
75
+ private
76
+
77
+ def perform_request(page_uri_path, page_number = nil)
78
+ page_uri = URI(page_uri_path)
79
+ params = parse_query(page_uri.query)
80
+
81
+ if page_number
82
+ params['page'] = page_number
83
+ elsif next_page < 1
84
+ sha = sha(params)
85
+ params['sha'] = sha if sha
86
+ else
87
+ params['page'] = parse_page_number(page_uri_path)
88
+ end
89
+ params['per_page'] = parse_per_page_number(page_uri_path)
90
+
91
+ response = page_request(page_uri.path, params)
114
92
  update_page_links response.links
115
93
  response
116
94
  end
117
95
 
118
- private
96
+ def sha(params)
97
+ return params['last_sha'] if params.keys.include?('last_sha')
98
+ return DEFAULT_SHA if params.keys.include?('sha')
99
+ end
119
100
 
120
101
  def parse_per_page_number(uri) # :nodoc:
121
102
  parse_page_params(uri, PARAM_PER_PAGE)
@@ -131,14 +112,14 @@ module Github
131
112
  parsed = nil
132
113
  begin
133
114
  parsed = URI.parse(uri)
134
- rescue URI::Error => e
115
+ rescue URI::Error
135
116
  return -1
136
117
  end
137
118
  param = parse_query_for_param(parsed.query, attr)
138
119
  return -1 if param.nil? || param.empty?
139
120
  begin
140
121
  return param.to_i
141
- rescue ArgumentError => err
122
+ rescue ArgumentError
142
123
  return -1
143
124
  end
144
125
  end
@@ -146,10 +127,9 @@ module Github
146
127
  # Wholesale update of all link attributes
147
128
  def update_page_links(links) # :nodoc:
148
129
  ATTRIBUTES.each do |attr|
149
- self.send(:"#{attr}_page_uri=", links.send(:"#{attr}"))
150
- self.send(:"#{attr}_page=", parse_page_number(links.send(:"#{attr}")))
130
+ send(:"#{attr}_page_uri=", links.send(:"#{attr}"))
131
+ send(:"#{attr}_page=", parse_page_number(links.send(:"#{attr}")))
151
132
  end
152
133
  end
153
-
154
134
  end # PageIterator
155
135
  end # Github
@@ -2,38 +2,28 @@ module Github
2
2
  # Determines the links in the current response link header to be used
3
3
  # to find the links to other pages of request responses. These will
4
4
  # only be present if the result set size exceeds the per page limit.
5
+ #
6
+ # @api private
5
7
  class PageLinks
6
8
  include Github::Constants
7
9
 
8
- DELIM_LINKS = ",".freeze # :nodoc:
10
+ DELIM_LINKS = ','.freeze # :nodoc:
9
11
 
10
12
  # Hold the extracted values for URI from the Link header
11
13
  # for the first, last, next and previous page.
12
14
  attr_accessor :first, :last, :next, :prev
13
15
 
16
+ LINK_REGEX = /<([^>]+)>; rel=\"([^\"]+)\"/
17
+
14
18
  # Parses links from executed request
15
19
  #
20
+ # @param [Hash] response_headers
21
+ #
22
+ # @api private
16
23
  def initialize(response_headers)
17
24
  link_header = response_headers[HEADER_LINK]
18
- if link_header
19
- return unless link_header =~ /(next|first|last|prev)/
20
-
21
- link_header.split(DELIM_LINKS).each do |link|
22
- if link.strip =~ /<([^>]+)>; rel=\"([^\"]+)\"/
23
- url_part, meta_part = $1, $2
24
- next if !url_part || !meta_part
25
- case meta_part
26
- when META_FIRST
27
- self.first = url_part
28
- when META_LAST
29
- self.last = url_part
30
- when META_NEXT
31
- self.next = url_part
32
- when META_PREV
33
- self.prev = url_part
34
- end
35
- end
36
- end
25
+ if link_header && link_header =~ /(next|first|last|prev)/
26
+ extract_links(link_header)
37
27
  else
38
28
  # When on the first page
39
29
  self.next = response_headers[HEADER_NEXT]
@@ -41,5 +31,29 @@ module Github
41
31
  end
42
32
  end
43
33
 
34
+ private
35
+
36
+ def extract_links(link_header)
37
+ link_header.split(DELIM_LINKS).each do |link|
38
+ LINK_REGEX.match(link.strip) do |match|
39
+ url_part, meta_part = match[1], match[2]
40
+ next if !url_part || !meta_part
41
+ assign_url_part(meta_part, url_part)
42
+ end
43
+ end
44
+ end
45
+
46
+ def assign_url_part(meta_part, url_part)
47
+ case meta_part
48
+ when META_FIRST
49
+ self.first = url_part
50
+ when META_LAST
51
+ self.last = url_part
52
+ when META_NEXT
53
+ self.next = url_part
54
+ when META_PREV
55
+ self.prev = url_part
56
+ end
57
+ end
44
58
  end # PageLinks
45
59
  end # Github
@@ -35,7 +35,7 @@ module Github
35
35
  # iterate over this method will return current page.
36
36
  def each_page
37
37
  yield self
38
- while page_iterator.has_next?
38
+ while page_iterator.next?
39
39
  yield next_page
40
40
  end
41
41
  end
@@ -88,7 +88,7 @@ module Github
88
88
  # Returns <tt>true</tt> if there is another page in the result set,
89
89
  # otherwise <tt>false</tt>
90
90
  def has_next_page?
91
- page_iterator.has_next?
91
+ page_iterator.next?
92
92
  end
93
93
 
94
94
  private
@@ -18,7 +18,7 @@ module Github
18
18
 
19
19
  if token = params[ACCESS_TOKEN] and !token.empty?
20
20
  env[:url].query = build_query params
21
- env[:request_headers].merge!(AUTH_HEADER => "Token token=\"#{token}\"")
21
+ env[:request_headers].merge!(AUTH_HEADER => "token #{token}")
22
22
  end
23
23
 
24
24
  @app.call env
@@ -4,7 +4,7 @@ module Github
4
4
  module VERSION
5
5
  MAJOR = 0
6
6
  MINOR = 12
7
- PATCH = 1
7
+ PATCH = 2
8
8
  BUILD = nil
9
9
 
10
10
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.');
@@ -15,6 +15,9 @@ describe Hash do
15
15
  context '#except!' do
16
16
  it "should respond to except!" do
17
17
  @nested_hash.should respond_to :except!
18
+ copy = @nested_hash.dup
19
+ copy.except!('b', 'a')
20
+ copy.should be_empty
18
21
  end
19
22
  end
20
23
 
@@ -24,5 +24,27 @@ describe Github::Error::ClientError do
24
24
  it 'generates resolution line' do
25
25
  error.generate_message(attributes).should include "Resolution:\n Glue it!"
26
26
  end
27
+
28
+ before do
29
+ error.generate_message(attributes)
30
+ end
31
+
32
+ describe '#problem' do
33
+ it 'returns problem' do
34
+ error.problem.should eq attributes[:problem]
35
+ end
36
+ end
37
+
38
+ describe '#summary' do
39
+ it 'returns summary' do
40
+ error.summary.should eq attributes[:summary]
41
+ end
42
+ end
43
+
44
+ describe '#resolution' do
45
+ it 'returns resolution' do
46
+ error.resolution.should eq attributes[:resolution]
47
+ end
48
+ end
27
49
  end
28
50
  end # Github::Error::ClientError
@@ -3,116 +3,121 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Github::PageIterator, 'when number' do
6
- let(:header) { {"Link" => "<https://api.github.com/users/wycats/repos?page=4&per_page=20>; rel=\"next\", <https://api.github.com/users/wycats/repos?page=6&per_page=20>; rel=\"last\", <https://api.github.com/users/wycats/repos?page=1&per_page=20>; rel=\"first\", <https://api.github.com/users/wycats/repos?page=2&per_page=20>; rel=\"prev\""}
7
- }
8
- let(:links) { Github::PageLinks.new(header) }
6
+ let(:header) { {
7
+ "Link" => "<https://api.github.com/users/wycats/repos?page=4&per_page=20>; rel=\"next\", <https://api.github.com/users/wycats/repos?page=6&per_page=20>; rel=\"last\", <https://api.github.com/users/wycats/repos?page=1&per_page=20>; rel=\"first\", <https://api.github.com/users/wycats/repos?page=2&per_page=20>; rel=\"prev\""
8
+ } }
9
9
 
10
10
  let(:first_link) { "https://api.github.com/users/wycats/repos?page=1&per_page=20" }
11
11
  let(:next_link) { "https://api.github.com/users/wycats/repos?page=4&per_page=20" }
12
12
  let(:prev_link) { "https://api.github.com/users/wycats/repos?page=2&per_page=20" }
13
13
  let(:last_link) { "https://api.github.com/users/wycats/repos?page=6&per_page=20" }
14
14
 
15
+ let(:links) { Github::PageLinks.new(header) }
15
16
  let(:current_api) { Github::Client::Repos.new }
16
- let(:user) { 'wycats' }
17
- let(:response) { double(:response).as_null_object }
17
+ let(:user) { 'wycats' }
18
+ let(:response) { double(:response).as_null_object }
18
19
 
19
- subject(:instance) { described_class.new(links, current_api) }
20
+ subject(:iterator) { described_class.new(links, current_api) }
20
21
 
21
22
  before {
22
- instance.stub(:has_next?).and_return true
23
+ allow(iterator).to receive(:next?).and_return(true)
23
24
  stub_get("/users/#{user}/repos").
24
- with(:query => { 'page' => '4', 'per_page' => '20'}).
25
+ with(query: { 'page' => '4', 'per_page' => '20'}).
25
26
  to_return(:body => '', :status => 200, :headers => header)
26
27
  }
27
28
 
28
29
  it { described_class::ATTRIBUTES.should_not be_nil }
29
30
 
30
- its(:first_page) { should eq 1 }
31
+ it { expect(iterator.first_page).to eq(1) }
31
32
 
32
- its(:first_page_uri) { should eq first_link }
33
+ it { expect(iterator.first_page_uri).to eq(first_link) }
33
34
 
34
- its(:next_page) { should eq 4 }
35
+ it { expect(iterator.next_page).to eq(4)}
35
36
 
36
- its(:next_page_uri) { should eq next_link}
37
+ it { expect(iterator.next_page_uri).to eq(next_link) }
37
38
 
38
- its(:prev_page) { should eq 2 }
39
+ it { expect(iterator.prev_page).to eq(2)}
39
40
 
40
- its(:prev_page_uri) { should eq prev_link }
41
+ it { expect(iterator.prev_page_uri).to eq(prev_link) }
41
42
 
42
- its(:last_page) { should eq 6 }
43
+ it { expect(iterator.last_page).to eq(6)}
43
44
 
44
- its(:last_page_uri) { should eq last_link }
45
+ it { expect(iterator.last_page_uri).to eq(last_link) }
45
46
 
46
- context 'has_next?' do
47
- it "return true when next_page_uri is present" do
48
- expect(instance.has_next?).to be_true
47
+ context 'next?' do
48
+ it "returns true when next_page_uri is present" do
49
+ expect(iterator.next?).to eq(true)
49
50
  end
50
51
  end
51
52
 
52
53
  context 'first page request' do
53
54
  it 'returns nil if there are no more pages' do
54
- instance.stub(:first_page_uri).and_return false
55
- expect(instance.first).to be_nil
55
+ allow(iterator).to receive(:first_page_uri).and_return(false)
56
+ expect(iterator.first).to be_nil
56
57
  end
57
58
 
58
59
  it 'performs request' do
59
- instance.should_receive(:page_request).
60
+ expect(iterator).to receive(:page_request).
60
61
  with("/users/#{user}/repos", 'per_page' => 20, 'page' => 1).
61
- and_return response
62
- instance.first
62
+ and_return(response)
63
+ iterator.first
63
64
  end
64
65
  end
65
66
 
66
67
  context 'next page request' do
67
68
  it 'returns nil if there are no more pages' do
68
- instance.stub(:has_next?).and_return false
69
- expect(instance.next).to be_nil
69
+ allow(iterator).to receive(:next?).and_return(false)
70
+ expect(iterator.next).to be_nil
70
71
  end
71
72
 
72
73
  it 'performs request' do
73
- instance.should_receive(:page_request).with("/users/#{user}/repos",
74
- 'page' => 4,'per_page' => 20).and_return response
75
- instance.next
74
+ expect(iterator).to receive(:page_request).
75
+ with("/users/#{user}/repos", 'page' => 4,'per_page' => 20).
76
+ and_return(response)
77
+ iterator.next
76
78
  end
77
79
  end
78
80
 
79
81
  context 'prev page request' do
80
82
  it 'returns nil if there are no more pages' do
81
- instance.stub(:prev_page_uri).and_return false
82
- expect(instance.prev).to be_nil
83
+ allow(iterator).to receive(:prev_page_uri).and_return(false)
84
+ expect(iterator.prev).to be_nil
83
85
  end
84
86
 
85
87
  it 'performs request' do
86
- instance.should_receive(:page_request).with("/users/#{user}/repos",
87
- 'page' => 2,'per_page' => 20).and_return response
88
- instance.prev
88
+ expect(iterator).to receive(:page_request).
89
+ with("/users/#{user}/repos", 'page' => 2,'per_page' => 20).
90
+ and_return(response)
91
+ iterator.prev
89
92
  end
90
93
  end
91
94
 
92
95
  context 'last page request' do
93
96
  it 'returns nil if there are no more pages' do
94
- instance.stub(:last_page_uri).and_return false
95
- expect(instance.last).to be_nil
97
+ allow(iterator).to receive(:last_page_uri).and_return(false)
98
+ expect(iterator.last).to be_nil
96
99
  end
97
100
 
98
101
  it 'performs request' do
99
- instance.should_receive(:page_request).with("/users/#{user}/repos",
100
- 'page' => 6,'per_page' => 20).and_return response
101
- instance.last
102
+ expect(iterator).to receive(:page_request).
103
+ with("/users/#{user}/repos", 'page' => 6,'per_page' => 20).
104
+ and_return(response)
105
+ iterator.last
102
106
  end
103
107
  end
104
108
 
105
109
  context 'get_page request' do
106
110
  it 'returns nil if there are no more pages' do
107
- instance.stub(:first_page_uri).and_return nil
108
- instance.stub(:last_page_uri).and_return nil
109
- expect(instance.get_page(5)).to be_nil
111
+ allow(iterator).to receive(:first_page_uri).and_return(nil)
112
+ allow(iterator).to receive(:last_page_uri).and_return(nil)
113
+ expect(iterator.get_page(5)).to be_nil
110
114
  end
111
115
 
112
116
  it 'performs request' do
113
- instance.should_receive(:page_request).with("/users/#{user}/repos",
114
- 'page' => 2,'per_page' => 20).and_return response
115
- instance.get_page(2)
117
+ expect(iterator).to receive(:page_request).
118
+ with("/users/#{user}/repos", 'page' => 2,'per_page' => 20).
119
+ and_return(response)
120
+ iterator.get_page(2)
116
121
  end
117
122
  end
118
123
  end
@@ -5,7 +5,6 @@ require 'spec_helper'
5
5
  describe Github::PageIterator, 'when sha' do
6
6
  let(:header) { {"Link" => "<https://api.github.com/repos/peter-murach/github/commits?last_sha=d1e503c02fa770859895dd0d12aedefa28b95723&per_page=30&sha=801d80dfd59bf1d2cb30a243799953ab683a3abd&top=801d80dfd59bf1d2cb30a243799953ab683a3abd>; rel=\"next\", <https://api.github.com/repos/peter-murach/github/commits?per_page=30&sha=801d80dfd59bf1d2cb30a243799953ab683a3abd>; rel=\"first\"" }
7
7
  }
8
- let(:links) { Github::PageLinks.new(header) }
9
8
 
10
9
  let(:first_link) { "https://api.github.com/repos/peter-murach/github/commits?per_page=30&sha=801d80dfd59bf1d2cb30a243799953ab683a3abd" }
11
10
  let(:next_link) { "https://api.github.com/repos/peter-murach/github/commits?last_sha=d1e503c02fa770859895dd0d12aedefa28b95723&per_page=30&sha=801d80dfd59bf1d2cb30a243799953ab683a3abd&top=801d80dfd59bf1d2cb30a243799953ab683a3abd" }
@@ -14,54 +13,54 @@ describe Github::PageIterator, 'when sha' do
14
13
  let(:sha) { '801d80dfd59bf1d2cb30a243799953ab683a3abd' }
15
14
  let(:last_sha) { "d1e503c02fa770859895dd0d12aedefa28b95723"}
16
15
 
16
+ let(:links) { Github::PageLinks.new(header) }
17
17
  let(:current_api) { Github::Client::Repos.new }
18
18
  let(:user) { 'wycats' }
19
19
  let(:response) { double(:response).as_null_object }
20
20
 
21
- subject(:instance) { described_class.new(links, current_api) }
21
+ subject(:iterator) { described_class.new(links, current_api) }
22
22
 
23
23
  before {
24
- instance.stub(:has_next?).and_return true
25
- instance.stub(:next_page).and_return -1
24
+ allow(iterator).to receive(:next?).and_return(true)
25
+ allow(iterator).to receive(:next_page).and_return(-1)
26
26
  stub_get("/repos/peter-murach/github/commits").
27
- to_return(:body => '', :status => 200, :headers => header)
27
+ to_return(body: '', status: 200, headers: header)
28
28
  }
29
29
 
30
- it { described_class::ATTRIBUTES.should_not be_nil }
30
+ it { expect(described_class::ATTRIBUTES).to_not be_nil }
31
31
 
32
- its(:first_page) { should eq -1 }
32
+ it { expect(iterator.first_page).to eq(-1) }
33
33
 
34
- its(:first_page_uri) { should eq first_link }
34
+ it { expect(iterator.first_page_uri).to eq(first_link) }
35
35
 
36
- its(:next_page) { should eq -1 }
36
+ it { expect(iterator.next_page).to eq(-1) }
37
37
 
38
- its(:next_page_uri) { should eq next_link}
38
+ it { expect(iterator.next_page_uri).to eq(next_link) }
39
39
 
40
- its(:prev_page) { should eq -1 }
40
+ it { expect(iterator.prev_page).to eq(-1) }
41
41
 
42
- its(:prev_page_uri) { should be_nil }
42
+ it { expect(iterator.prev_page_uri).to be_nil }
43
43
 
44
- its(:last_page) { should eq -1 }
44
+ it { expect(iterator.last_page).to eq(-1) }
45
45
 
46
- its(:last_page_uri) { should be_nil }
46
+ it { expect(iterator.last_page_uri).to be_nil }
47
47
 
48
48
  context 'first page request' do
49
49
  it 'performs request' do
50
- instance.should_receive(:page_request).
50
+ expect(iterator).to receive(:page_request).
51
51
  with("/repos/peter-murach/github/commits",
52
- 'sha' => 'master', 'per_page' => 30).and_return response
53
- instance.first
52
+ 'sha' => 'master', 'per_page' => 30).and_return(response)
53
+ iterator.first
54
54
  end
55
55
  end
56
56
 
57
57
  context 'next page request' do
58
58
  it 'performs request' do
59
- instance.should_receive(:page_request).
59
+ expect(iterator).to receive(:page_request).
60
60
  with("/repos/peter-murach/github/commits", 'last_sha' => last_sha,
61
61
  'sha' => last_sha, 'per_page' => 30, 'top' => top_sha).
62
- and_return response
63
- instance.next
62
+ and_return(response)
63
+ iterator.next
64
64
  end
65
65
  end
66
-
67
66
  end
@@ -40,7 +40,7 @@ describe Github::Request::OAuth2 do
40
40
 
41
41
  it "creates header for ad hoc access token" do
42
42
  result = process(:q => 'query', :access_token => 'abc123')
43
- auth_header(result).should eql 'Token token="abc123"'
43
+ auth_header(result).should eql 'token abc123'
44
44
  end
45
45
  end
46
46
 
@@ -53,13 +53,13 @@ describe Github::Request::OAuth2 do
53
53
  end
54
54
 
55
55
  it "creates header for access token" do
56
- auth_header(process).should eql 'Token token="ABC"'
56
+ auth_header(process).should eql 'token ABC'
57
57
  end
58
58
 
59
59
  it "overrides default with explicit token" do
60
60
  result = process(:q => 'query', :access_token => 'abc123')
61
61
  result[:url].query.should eql 'access_token=abc123&q=query'
62
- auth_header(result).should eql 'Token token="abc123"'
62
+ auth_header(result).should eql 'token abc123'
63
63
  end
64
64
 
65
65
  it "clears default token with explicit one" do
data/spec/spec_helper.rb CHANGED
@@ -99,11 +99,3 @@ def reset_authentication_for(object)
99
99
  object.send("#{item}=", nil)
100
100
  end
101
101
  end
102
-
103
- class Hash
104
- def except(*keys)
105
- cpy = self.dup
106
- keys.each { |key| cpy.delete(key) }
107
- cpy
108
- end
109
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 0.12.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-15 00:00:00.000000000Z
12
+ date: 2014-10-25 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
16
- requirement: &2155045720 !ruby/object:Gem::Requirement
16
+ requirement: &2152983460 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,21 +21,21 @@ dependencies:
21
21
  version: '2.3'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2155045720
24
+ version_requirements: *2152983460
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: hashie
27
- requirement: &2155044740 !ruby/object:Gem::Requirement
27
+ requirement: &2152956600 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
31
31
  - !ruby/object:Gem::Version
32
- version: '3.2'
32
+ version: '3.3'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2155044740
35
+ version_requirements: *2152956600
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: faraday
38
- requirement: &2155043660 !ruby/object:Gem::Requirement
38
+ requirement: &2152951920 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -46,10 +46,10 @@ dependencies:
46
46
  version: '0.10'
47
47
  type: :runtime
48
48
  prerelease: false
49
- version_requirements: *2155043660
49
+ version_requirements: *2152951920
50
50
  - !ruby/object:Gem::Dependency
51
51
  name: multi_json
52
- requirement: &2155036220 !ruby/object:Gem::Requirement
52
+ requirement: &2152948760 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
55
  - - ! '>='
@@ -60,10 +60,10 @@ dependencies:
60
60
  version: '2.0'
61
61
  type: :runtime
62
62
  prerelease: false
63
- version_requirements: *2155036220
63
+ version_requirements: *2152948760
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: oauth2
66
- requirement: &2155034880 !ruby/object:Gem::Requirement
66
+ requirement: &2152947000 !ruby/object:Gem::Requirement
67
67
  none: false
68
68
  requirements:
69
69
  - - ! '>='
@@ -71,10 +71,10 @@ dependencies:
71
71
  version: '0'
72
72
  type: :runtime
73
73
  prerelease: false
74
- version_requirements: *2155034880
74
+ version_requirements: *2152947000
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: nokogiri
77
- requirement: &2155033420 !ruby/object:Gem::Requirement
77
+ requirement: &2152945040 !ruby/object:Gem::Requirement
78
78
  none: false
79
79
  requirements:
80
80
  - - ~>
@@ -82,10 +82,10 @@ dependencies:
82
82
  version: 1.6.3
83
83
  type: :runtime
84
84
  prerelease: false
85
- version_requirements: *2155033420
85
+ version_requirements: *2152945040
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: descendants_tracker
88
- requirement: &2155032340 !ruby/object:Gem::Requirement
88
+ requirement: &2152942960 !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
91
  - - ~>
@@ -93,10 +93,10 @@ dependencies:
93
93
  version: 0.0.4
94
94
  type: :runtime
95
95
  prerelease: false
96
- version_requirements: *2155032340
96
+ version_requirements: *2152942960
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bundler
99
- requirement: &2155031440 !ruby/object:Gem::Requirement
99
+ requirement: &2152934400 !ruby/object:Gem::Requirement
100
100
  none: false
101
101
  requirements:
102
102
  - - ~>
@@ -104,7 +104,7 @@ dependencies:
104
104
  version: '1.5'
105
105
  type: :development
106
106
  prerelease: false
107
- version_requirements: *2155031440
107
+ version_requirements: *2152934400
108
108
  description: ! ' Ruby client that supports all of the GitHub API methods. It''s build
109
109
  in a modular way, that is, you can either instantiate the whole api wrapper Github.new
110
110
  or use parts of it e.i. Github::Client::Repos.new if working solely with repositories