ruby-lol 0.12.1 → 0.12.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de713866840ecd938942d23da2121e4e9be5de6d
4
- data.tar.gz: bc47a47f5c743f9e9256b9c9320a0ea2185a6f45
3
+ metadata.gz: 7905f3bdcac7fda308692df41aff8d9537551896
4
+ data.tar.gz: e1630306ddc4bc8ece93e8453c14935fdb75700b
5
5
  SHA512:
6
- metadata.gz: 3ebea6c7910240929cfd8da6c659bd47634533314e65adabd3e293eb4189667fe840dddda9400c432c37ce84487153bb54325686f32d6b3c4984020b27700658
7
- data.tar.gz: 9dfdf2379335857fcf4e4205c526f9c56e5d059fe2cb941ce1e509832d5c5739a64207432d6c02bee72fc8db7723823ec010c3f1ba87aa563c975ab86fe3033c
6
+ metadata.gz: 69fc42943c76aa7dedab87b97d367e8f9dad3e7834b6a1694e4f9c9b0915749f3343c8e12030e5d94aa4ced8518c7f0fd26701e47002dedbb703b5e895270b34
7
+ data.tar.gz: 954c3a76a2e147b97146151cc05b1ea14afa8b0ed7db1751760fc664c79ddb1b16338a8db7327fb902c47daf0a80d7aaedc1f55cc401ff34b03208640ed4e455
@@ -1,4 +1,4 @@
1
- rvm: 2.2.3
1
+ rvm: 2.2.5
2
2
  services: redis-server
3
3
  addons:
4
4
  code_climate:
@@ -38,18 +38,6 @@ module Lol
38
38
  "#{url}?#{api_query_string params}"
39
39
  end
40
40
 
41
- def post_api_url path, params = {}
42
- {
43
- url: api_url(path, params),
44
- options: {
45
- headers: {
46
- "X-Riot-Token" => api_key,
47
- "Content-Type" => "application/json"
48
- }
49
- }
50
- }
51
- end
52
-
53
41
  def api_base_url
54
42
  "https://#{region}.api.pvp.net"
55
43
  end
@@ -72,23 +60,39 @@ module Lol
72
60
  # @param body [Hash] Body for POST request
73
61
  # @param options [Hash] Options passed to HTTParty
74
62
  # @return [String] raw response of the call
75
- def perform_request url, verb = :get, body = {}, options = {}
63
+ def perform_request url, verb = :get, body = nil, options = {}
64
+ options_id = options.inspect
76
65
  can_cache = [:post, :put].include?(verb) ? false : cached?
77
- if can_cache && result = store.get("#{clean_url(url)}#{options.inspect}")
66
+ if can_cache && result = store.get("#{clean_url(url)}#{options_id}")
78
67
  return JSON.parse(result)
79
68
  end
69
+ response = perform_uncached_request url, verb, body, options
70
+ store.setex "#{clean_url(url)}#{options_id}", ttl, response.to_json if can_cache
71
+ response
72
+ end
80
73
 
81
- params = [:post, :put].include?(verb) ? [url, options.merge({body: body.to_json})] : url
82
- response = self.class.send(verb, *params)
74
+ def perform_uncached_request url, verb = :get, body = nil, options = {}
75
+ options[:headers] ||= {}
76
+ options[:headers].merge!({
77
+ "Content-Type" => "application/json",
78
+ "Accept" => "application/json"
79
+ })
80
+ if [:post, :put].include?(verb)
81
+ options[:body] = body.to_json if body
82
+ options[:headers]['X-Riot-Token'] = api_key
83
+ end
84
+ response = self.class.send(verb, url, options)
83
85
  if response.respond_to?(:code) && !(200...300).include?(response.code)
84
86
  raise NotFound.new("404 Not Found") if response.not_found?
85
87
  raise TooManyRequests.new('429 Rate limit exceeded') if response.code == 429
86
88
  raise InvalidAPIResponse.new(url, response)
87
89
  end
88
90
 
89
- store.setex "#{clean_url(url)}#{options.inspect}", ttl, response.to_json if can_cache
90
-
91
- response
91
+ if response.respond_to?(:parsed_response)
92
+ response.parsed_response
93
+ else
94
+ response
95
+ end
92
96
  end
93
97
 
94
98
  # @return [Redis] returns the cache store
@@ -14,12 +14,11 @@ module Lol
14
14
  # @param path [String] API path to call
15
15
  # @return [String] full fledged url
16
16
  def api_url path, params = {}
17
- url = "#{api_base_url}/tournament/public/#{self.class.api_version}/#{path}"
17
+ "#{api_base_url}/tournament/public/#{self.class.api_version}/#{path}"
18
18
  end
19
19
 
20
20
  def tournament_request path, body
21
- pau = post_api_url path
22
- perform_request(pau[:url], :post, body, pau[:options]).body
21
+ perform_request(api_url(path), :post, body)
23
22
  end
24
23
 
25
24
  # Returns a tournament code
@@ -57,7 +56,7 @@ module Lol
57
56
  body.merge!({password: password}) if password
58
57
 
59
58
  params = URI.encode_www_form({tournamentId: tournament_id, count: count})
60
- JSON.parse(tournament_request "code?#{params}", body)
59
+ tournament_request "code?#{params}", body
61
60
  end
62
61
 
63
62
  # Returns the details of the tournament code
@@ -87,8 +86,7 @@ module Lol
87
86
  mapType: map_type
88
87
  }.reject{ |k,v| v.nil? }
89
88
 
90
- pau = post_api_url "code/#{tournament_code}"
91
- perform_request(pau[:url], :put, body, pau[:options])
89
+ perform_request(api_url("code/#{tournament_code}"), :put, body)
92
90
  get_code tournament_code
93
91
  end
94
92
 
@@ -1,3 +1,3 @@
1
1
  module Lol
2
- VERSION = "0.12.1"
2
+ VERSION = "0.12.2"
3
3
  end
@@ -26,8 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency "guard-rspec"
27
27
  spec.add_development_dependency "ZenTest"
28
28
  spec.add_development_dependency "autotest-growl"
29
- spec.add_development_dependency "autotest-fsevent"
30
- spec.add_development_dependency "codeclimate-test-reporter"
29
+ spec.add_development_dependency "codeclimate-test-reporter", '~> 0.5.0'
31
30
  spec.add_development_dependency "coveralls"
32
31
  spec.add_development_dependency "vcr"
33
32
  spec.add_development_dependency "webmock", ">= 1.8.0", "< 1.16"
@@ -37,25 +37,60 @@ describe Request do
37
37
 
38
38
  it "calls HTTParty get" do
39
39
  expect(subject.class).to receive(:get).and_return(error401)
40
- expect { subject.perform_request "foo?api_key=asd"}.to raise_error(InvalidAPIResponse)
40
+ expect { subject.perform_request subject.api_url("foo")}.to raise_error(InvalidAPIResponse)
41
+ end
42
+
43
+ it "sets content type in get requests" do
44
+ expect(subject.class).to receive(:get) do |url, options|
45
+ expect(options[:headers]["Content-Type"]).to eq "application/json"
46
+ end
47
+ subject.perform_request subject.api_url("foo")
48
+ end
49
+
50
+ it "sets the accept header in get requests" do
51
+ expect(subject.class).to receive(:get) do |url, options|
52
+ expect(options[:headers]["Accept"]).to eq "application/json"
53
+ end
54
+ subject.perform_request subject.api_url("foo")
55
+ end
56
+
57
+ it "sets content type in post requests" do
58
+ expect(subject.class).to receive(:post) do |url, options|
59
+ expect(options[:headers]["Content-Type"]).to eq "application/json"
60
+ end
61
+ subject.perform_request subject.api_url("foo"), :post
62
+ end
63
+
64
+ it "sets the accept header in post requests" do
65
+ expect(subject.class).to receive(:post) do |url, options|
66
+ expect(options[:headers]["Accept"]).to eq "application/json"
67
+ end
68
+ subject.perform_request subject.api_url("foo"), :post
69
+ end
70
+
71
+ it "sets the api key header in post requests" do
72
+ expect(subject.class).to receive(:post) do |url, options|
73
+ expect(options[:headers]["X-Riot-Token"]).to eq(subject.api_key)
74
+ end
75
+ subject.perform_request subject.api_url("foo"), :post
41
76
  end
42
77
 
43
78
  it "handles 401" do
44
79
  expect(subject.class).to receive(:get).and_return(error401)
45
- expect { subject.perform_request "foo?api_key=asd" }.to raise_error(InvalidAPIResponse)
80
+ expect { subject.perform_request subject.api_url("foo") }.to raise_error(InvalidAPIResponse)
46
81
  end
47
82
 
48
83
  it "handles 404" do
49
84
  expect(error401).to receive(:respond_to?).at_least(:once).and_return(true)
50
85
  expect(error401).to receive(:not_found?).and_return(true)
51
86
  expect(subject.class).to receive(:get).and_return(error401)
52
- expect { subject.perform_request "foo?api_key=asd"}.to raise_error(NotFound)
87
+ expect { subject.perform_request subject.api_url("foo")}.to raise_error(NotFound)
53
88
  end
54
89
 
55
90
  it 'handles 429' do
56
91
  expect(error429).to receive(:respond_to?).and_return(true)
57
92
  expect(subject.class).to receive(:get).and_return(error429)
58
- expect { subject.perform_request "foo?api_key=asd"}.to raise_error(TooManyRequests)
93
+ expect { subject.perform_request subject.api_url("foo")}.to raise_error(TooManyRequests)
59
94
  end
60
95
 
61
96
  context "post requests" do
@@ -88,7 +123,7 @@ describe Request do
88
123
  let(:fake_redis) { FakeRedis.new }
89
124
  let(:request) { Request.new "api_key", "euw", {redis: fake_redis, ttl: 60, cached: true }}
90
125
  before :each do
91
- expect(request.class).to receive(:get).with("/foo?api_key=asd").and_return({foo: "bar"}).at_least(:once)
126
+ expect(request.class).to receive(:get).with("/foo?api_key=asd", instance_of(Hash)).and_return({foo: "bar"}).at_least(:once)
92
127
  first_result = request.perform_request "/foo?api_key=asd"
93
128
  end
94
129
 
@@ -157,39 +192,6 @@ describe Request do
157
192
  end
158
193
  end
159
194
 
160
- describe "post_api_url" do
161
- let(:pau) { subject.post_api_url "/foo" }
162
-
163
- it "returns an hash" do
164
- expect(pau).to be_a(Hash)
165
- end
166
-
167
- it "contains an url key" do
168
- expect(pau).to have_key(:url)
169
- end
170
-
171
- it "contains an options key" do
172
- expect(pau).to have_key(:options)
173
- end
174
-
175
- it "contains a header key in options" do
176
- expect(pau[:options]).to have_key(:headers)
177
- end
178
-
179
- it "returns the api key in an header" do
180
- expect(pau[:options][:headers]).to have_key("X-Riot-Token")
181
- expect(pau[:options][:headers]["X-Riot-Token"]).to eq(subject.api_key)
182
- end
183
-
184
- it "includes a content-type header" do
185
- expect(pau[:options][:headers]["Content-Type"]).to eq("application/json")
186
- end
187
-
188
- it "uses api_url for the url part" do
189
- expect(pau[:url]).to eq(subject.api_url "/foo")
190
- end
191
- end
192
-
193
195
  describe "#api_base_url" do
194
196
  it "returns the base domain" do
195
197
  expect(subject.api_base_url).to eq "https://euw.api.pvp.net"
@@ -21,20 +21,25 @@ describe TournamentProviderRequest do
21
21
  describe "#provider" do
22
22
  subject { request.provider("EUW", "https://foo.com") }
23
23
 
24
- # before(:each) { stub_request(request, 'tournament', "tournament/public/#/recent") }
25
-
26
- # it 'returns an array' do
27
- # expect(subject).to be_a(Array)
28
- # end
29
- #
30
- # it 'returns an array of Games' do
31
- # expect(subject.map(&:class).uniq).to eq([Game])
32
- # end
33
- #
34
- # it 'fetches games from the API' do
35
- # fixture = load_fixture('game', GameRequest.api_version)
36
- # expect(subject.size).to eq(fixture['games'].size)
37
- # end
24
+ before(:each) do
25
+ expect(TournamentProviderRequest).to receive(:perform_request).and_return 10
26
+ end
27
+
28
+ it 'return the provider id' do
29
+ expect(subject).to eq 10
30
+ end
31
+ end
32
+
33
+ describe "#tournament" do
34
+ subject { request.provider("test", 10) }
35
+
36
+ before(:each) do
37
+ expect(TournamentProviderRequest).to receive(:perform_request).and_return 20
38
+ end
39
+
40
+ it 'return the tournament provider id' do
41
+ expect(subject).to eq 20
42
+ end
38
43
  end
39
44
 
40
45
  describe "#get_code" do
@@ -43,7 +48,7 @@ describe TournamentProviderRequest do
43
48
  full_url = request.api_url "code/CODE-FOR-TEST?#{request.api_query_string}"
44
49
  fixture_json = load_fixture('get-code', TournamentProviderRequest.api_version)
45
50
 
46
- expect(TournamentProviderRequest).to receive(:get).with(full_url).and_return(fixture_json)
51
+ expect(TournamentProviderRequest).to receive(:get).with(full_url, instance_of(Hash)).and_return(fixture_json)
47
52
  end
48
53
  subject { request.get_code "CODE-FOR-TEST" }
49
54
 
@@ -59,8 +64,7 @@ describe TournamentProviderRequest do
59
64
  expect(request).to receive(:perform_request).once.ordered.with(
60
65
  instance_of(String),
61
66
  :put,
62
- { allowedParticipants: "1,2,3,4,5,6,7,8,9,10" },
63
- instance_of(Hash)
67
+ { allowedParticipants: "1,2,3,4,5,6,7,8,9,10" }
64
68
  )
65
69
  expect(request).to receive(:perform_request).once.ordered.with(instance_of(String)).and_return(fixture)
66
70
  request.update_code "CODE-FOR-TEST", { allowed_participants: [1,2,3,4,5,6,7,8,9,10] }
@@ -51,13 +51,13 @@ module Helpers
51
51
  full_url = request_object.api_url(url, params)
52
52
  fixture_json = load_fixture(fixture_name, request_class.api_version, :get)
53
53
 
54
- expect(request_class).to receive(:get).with(full_url).and_return(fixture_json)
54
+ expect(request_class).to receive(:get).with(full_url, instance_of(Hash)).and_return(fixture_json)
55
55
  end
56
56
 
57
57
  def stub_request_raw(request_object, raw_response, url, params={})
58
58
  request_class = request_object.class
59
59
  full_url = request_object.api_url(url, params)
60
60
 
61
- expect(request_class).to receive(:get).with(full_url).and_return(raw_response)
61
+ expect(request_class).to receive(:get).with(full_url, instance_of(Hash)).and_return(raw_response)
62
62
  end
63
- end
63
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 0.12.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Giovanni Intini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-29 00:00:00.000000000 Z
11
+ date: 2016-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -122,34 +122,20 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: autotest-fsevent
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
125
  - !ruby/object:Gem::Dependency
140
126
  name: codeclimate-test-reporter
141
127
  requirement: !ruby/object:Gem::Requirement
142
128
  requirements:
143
- - - ">="
129
+ - - "~>"
144
130
  - !ruby/object:Gem::Version
145
- version: '0'
131
+ version: 0.5.0
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
- - - ">="
136
+ - - "~>"
151
137
  - !ruby/object:Gem::Version
152
- version: '0'
138
+ version: 0.5.0
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: coveralls
155
141
  requirement: !ruby/object:Gem::Requirement