dota2_api27n 1.0.1 → 1.0.6

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: 2ebdeebb40c439f32db85de0707782498d3ea0f38d7e71e5681d59ce60ed3509
4
- data.tar.gz: 2b7d584760e172e0a0535a60d9aa03a27b5a56d805bf69554778645ec3c5a6a9
3
+ metadata.gz: 863323cbd5fe66dcbe5dbd5333ad9c82a235f08029051e9cb2270f2f7aa354e5
4
+ data.tar.gz: 7669b29f3dc1ebc04e5d4f9905649c32abd69360231622829473836f80f6fc82
5
5
  SHA512:
6
- metadata.gz: d27d0e2cd9f1ae600ae5a6ac6e15d134deed326a4ac0de972bc6f26e7543f2bbdb7f592a76da4b5d54f192d100b67d488e3369def8c6005f60a014c1d74fe5df
7
- data.tar.gz: 66af061ad6d4a18aef82a29ddb37f8efd348f2fbc69246ad498eee1c088d91f741c07ade6ad87c20531c7024cf74b15358a38eb2be6e1789d2f67d6649e2332b
6
+ metadata.gz: ee46696d18aff07bfd1788e4a9185a2c3ad788b22f21a03cd7e3999c80b97d079f76aae3d48f3ce82e9296ac0f3f4f5a2dbfb208254228436982df51386bd8ff
7
+ data.tar.gz: 8007206d25402b74170b5b9ef6d2f41fe6dd591e60d65d01e7f02e6dda968722c401fc74a329b39aa58930e1326ceee32977c3c3e87d43dfcffa66757d2ed0fe
@@ -3,26 +3,16 @@ require 'pry'
3
3
 
4
4
  require_relative 'dota2_api27n/models/league'
5
5
  require_relative 'dota2_api27n/client'
6
+ require_relative 'dota2_api27n/leagues'
7
+ require_relative 'dota2_api27n/exceptions/request_error'
8
+ require_relative 'dota2_api27n/exceptions/request_empty'
6
9
 
7
10
  module Dota2Api27n
8
-
9
- def self.leagues
10
- leagues = request(League::ENDPOINT, League::OPTIONS)
11
-
12
- if leagues.headers['x-ratelimit-remaining'].to_i < 0
13
- sleep leagues.headers['x-ratelimit-reset'].to_i
14
- leagues = request(League::ENDPOINT, League::OPTIONS)
15
- leagues = leagues['results']
16
- else
17
- leagues = leagues['results']
18
- end
19
-
20
- leagues.map { |league| League.new(league) }
11
+ def self.leagues(offset: 0, limit: 100)
12
+ Leagues.leagues(offset, limit)
21
13
  end
22
14
 
23
- private
24
-
25
- def self.request(method, options = nil)
26
- Client.new.get(method, options)
15
+ def self.total_leagues(offset: 0, limit: 100)
16
+ Leagues.total_leagues(offset, limit)
27
17
  end
28
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,39 @@
1
+ module Dota2Api27n
2
+ class Leagues
3
+ attr_reader :leagues, :total_leagues
4
+
5
+ def self.leagues(offset, limit)
6
+ all_leagues(offset, limit)[:results]
7
+ end
8
+
9
+ def self.total_leagues(offset, limit)
10
+ all_leagues(offset, limit)[:total_leagues]
11
+ end
12
+
13
+ private
14
+
15
+ def self.all_leagues(offset, limit)
16
+ options = "?offset=#{offset}&limit=#{limit}"
17
+
18
+ leagues = request(League::ENDPOINT, options)
19
+
20
+ if leagues.headers['x-ratelimit-remaining'].to_i < 0
21
+ sleep leagues.headers['x-ratelimit-reset'].to_i
22
+ leagues = request(League::ENDPOINT, options)
23
+ else
24
+ leagues
25
+ end
26
+
27
+ raise RequestEmpty if leagues['results'].empty?
28
+
29
+ results = leagues['results'].map { |league| League.new(league) }
30
+ total_leagues = leagues['meta']['total']
31
+
32
+ {results: results, total_leagues: total_leagues}
33
+ end
34
+
35
+ def self.request(method, options = nil)
36
+ client = Client.new.get(method, options)
37
+ end
38
+ end
39
+ end
@@ -1,7 +1,6 @@
1
1
  module Dota2Api27n
2
2
  class League
3
3
  ENDPOINT = 'leagues'.freeze
4
- OPTIONS = '?offset=0&limit=100'.freeze
5
4
 
6
5
  attr_reader :league_id, :name, :tier, :region, :url, :description, :start_timestamp,
7
6
  :end_timestamp, :status, :total_prize_pool, :is_live
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.1
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleksii Protsenko
@@ -18,6 +18,9 @@ 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.rb
21
24
  - lib/dota2_api27n/models/league.rb
22
25
  homepage: https://github.com/railkun/dota2_api27n
23
26
  licenses: