dota2_api27n 1.0.2 → 1.0.7

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
  SHA256:
3
- metadata.gz: f5e22170d6eb491caea8f52f640e12e2f5b32a9c6ec5b22ac0aa3bbaea7f35e8
4
- data.tar.gz: 4bf9fffb868b1bfca1ba5c74dca294d9becbe4002d922fc07e099de147e055e4
3
+ metadata.gz: ff48b0e5301e2bf95d9597af8d6d5dfbbe1ebbb3e79a02d972383902846786a6
4
+ data.tar.gz: 69d6810017d78316900b76de1effe4150090914b7372fec0685f6091f08d45c7
5
5
  SHA512:
6
- metadata.gz: 259eafb4c1e1c33e010d4a93c89ac784c957e65ec9d3b6667b3d32faf328949bbf68d5734fe82c862da2a64c1bd624c732be0c4543601536d69f7a45a0f5fb4d
7
- data.tar.gz: 7872fff524194152ec731d1f37b70d6291140fb99b93d152957dcbfb037b8bb043021e8dd255c18c552afbe5a0b2ad8875b0c5d4aef7c41faf460757c5e560df
6
+ metadata.gz: 31cd5a8253f64791e8a3ea7f83d589c9be93587409e7af4a38756351c0c6b548f5dd48ccee02520e726a36a9cc84ebf5b95ca56dde4c9fd0be277bd887222447
7
+ data.tar.gz: d09d8c4d544257388c968d766045dc96c5dba125df812d029161855a55b635a1f78a7b9f96fd936efda710fddcf5a78db099bfb2ad17a18929db90b4a66b3c52
@@ -1,30 +1,18 @@
1
1
  require 'httparty'
2
- require 'pry'
3
2
 
4
- require_relative 'dota2_api27n/models/league'
5
3
  require_relative 'dota2_api27n/client'
4
+ require_relative 'dota2_api27n/models/league'
5
+ require_relative 'dota2_api27n/models/leagues'
6
+ require_relative 'dota2_api27n/leagues_request'
7
+ require_relative 'dota2_api27n/exceptions/request_error'
8
+ require_relative 'dota2_api27n/exceptions/request_empty'
6
9
 
7
10
  module Dota2Api27n
8
-
9
11
  def self.leagues(offset: 0, limit: 100)
10
- options = "?offset=#{offset}&limit=#{limit}"
11
-
12
- leagues = request(League::ENDPOINT, options)
13
-
14
- if leagues.headers['x-ratelimit-remaining'].to_i < 0
15
- sleep leagues.headers['x-ratelimit-reset'].to_i
16
- leagues = request(League::ENDPOINT, options)
17
- leagues = leagues['results']
18
- else
19
- leagues = leagues['results']
20
- end
21
-
22
- leagues.map { |league| League.new(league) }
12
+ LeaguesRequest.leagues(offset, limit)
23
13
  end
24
14
 
25
- private
26
-
27
- def self.request(method, options = nil)
28
- Client.new.get(method, options)
15
+ def self.total_leagues(offset: 0, limit: 100)
16
+ LeaguesRequest.total_leagues(offset, limit)
29
17
  end
30
18
  end
@@ -3,7 +3,8 @@ module Dota2Api27n
3
3
  BASE_URL = 'https://dota-leagues.27n.gg/'
4
4
 
5
5
  def get(pathname, options)
6
- HTTParty.get("#{BASE_URL}#{pathname}#{options}")
6
+ request = HTTParty.get("#{BASE_URL}#{pathname}#{options}")
7
+ request.code != 200 ? (raise RequestError) : request
7
8
  end
8
9
  end
9
10
  end
@@ -0,0 +1,3 @@
1
+ module Dota2Api27n
2
+ class RequestEmpty < StandardError; end
3
+ end
@@ -0,0 +1,3 @@
1
+ module Dota2Api27n
2
+ class RequestError < StandardError; end
3
+ end
@@ -0,0 +1,38 @@
1
+ module Dota2Api27n
2
+ class LeaguesRequest
3
+
4
+ def self.leagues(offset, limit)
5
+ all_leagues(offset, limit).results
6
+ end
7
+
8
+ def self.total_leagues(offset, limit)
9
+ all_leagues(offset, limit).total
10
+ end
11
+
12
+ private
13
+
14
+ def self.all_leagues(offset, limit)
15
+ options = "?offset=#{offset}&limit=#{limit}"
16
+
17
+ leagues_request = request(League::ENDPOINT, options)
18
+
19
+ if leagues_request.headers['x-ratelimit-remaining'].to_i < 0
20
+ sleep leagues_request.headers['x-ratelimit-reset'].to_i
21
+ leagues_request = request(League::ENDPOINT, options)
22
+ else
23
+ leagues_request
24
+ end
25
+
26
+ raise RequestEmpty if leagues_request['results'].empty?
27
+
28
+ results = leagues_request['results'].map { |league| League.new(league) }
29
+ total = leagues_request['meta']['total']
30
+
31
+ Leagues.new(results, total)
32
+ end
33
+
34
+ def self.request(method, options = nil)
35
+ client = Client.new.get(method, options)
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,10 @@
1
+ module Dota2Api27n
2
+ class Leagues
3
+ attr_reader :results, :total
4
+
5
+ def initialize(results, total)
6
+ @results = results
7
+ @total = total
8
+ end
9
+ end
10
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dota2_api27n
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleksii Protsenko
@@ -18,7 +18,11 @@ extra_rdoc_files: []
18
18
  files:
19
19
  - lib/dota2_api27n.rb
20
20
  - lib/dota2_api27n/client.rb
21
+ - lib/dota2_api27n/exceptions/request_empty.rb
22
+ - lib/dota2_api27n/exceptions/request_error.rb
23
+ - lib/dota2_api27n/leagues_request.rb
21
24
  - lib/dota2_api27n/models/league.rb
25
+ - lib/dota2_api27n/models/leagues.rb
22
26
  homepage: https://github.com/railkun/dota2_api27n
23
27
  licenses:
24
28
  - MIT