dota2_api27n 1.0.0 → 1.0.5

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: 91b20a82a269629634b4825635e773aeaa155f5b77ec78813ae7ffbf7fa329d0
4
- data.tar.gz: 857367a7f7d68d5e5bacc37ed871b54a1bc14e4b760c880090201dae33c61ea8
3
+ metadata.gz: b1365fd58c09a6b22e7dc2831117e8890d036a80531946ea2e1c0fa1e430e089
4
+ data.tar.gz: f27c9e527734a4e10f3b2c29ad9e822290a68f5aeef29a0590ab75e8551bd42d
5
5
  SHA512:
6
- metadata.gz: 9a542727da32c1399b23aa6f1174adfe9abf55e285b0ab15e0a067d80b25d06963aaf8debb9188de46ec36873a250913babcd99c4cccddc7970c29f6544d098e
7
- data.tar.gz: 74771a7ad27fb7cf0bc0e99841925e49236ccbb00f3d3af159766692183ea21831f3ded32d998266cb7f314feb846f2e83c35abc89696ddb20080d9af89394ee
6
+ metadata.gz: d8394f2aa0308d14f83642ab1e9835b694ae176c83dfbf053c0e4994c314d83ee68e06d02685e3b16c209112c8cc9b987f3a30fbee795433a51409b286f75dc7
7
+ data.tar.gz: 66405a57f71b9c1c66780f29b9ab90b3ce00cb7ae4f61d7ecf08644e5f084d01e3a7f472217efb06df200b45e1f5cc2ad1df2c757abaaccf2ae9bd481df718b6
@@ -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.new(offset, limit).leagues
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
+ total_leagues ||= Leagues.new(offset, limit).total_leagues
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,38 @@
1
+ module Dota2Api27n
2
+ class Leagues
3
+ attr_reader :leagues, :total_leagues
4
+
5
+ def initialize(offset, limit)
6
+ leagues_request = leagues_request(offset, limit)
7
+
8
+ @leagues = leagues_request[:results]
9
+ @total_leagues = leagues_request[:total_leagues]
10
+ end
11
+
12
+ private
13
+
14
+ def leagues_request(offset, limit)
15
+ options = "?offset=#{offset}&limit=#{limit}"
16
+
17
+ leagues = request(League::ENDPOINT, options)
18
+
19
+ if leagues.headers['x-ratelimit-remaining'].to_i < 0
20
+ sleep leagues.headers['x-ratelimit-reset'].to_i
21
+ leagues = request(League::ENDPOINT, options)
22
+ else
23
+ leagues
24
+ end
25
+
26
+ raise RequestEmpty if leagues.empty?
27
+
28
+ results = leagues['results'].map { |league| League.new(league) }
29
+ total_leagues = leagues['meta']['total']
30
+
31
+ {results: results, total_leagues: total_leagues}
32
+ end
33
+
34
+ def request(method, options = nil)
35
+ client = Client.new.get(method, options)
36
+ end
37
+ end
38
+ 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.0
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleksii Protsenko
@@ -18,8 +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.rb
21
24
  - lib/dota2_api27n/models/league.rb
22
- homepage: https://github.com/railkun/dota_leagues_api
25
+ homepage: https://github.com/railkun/dota2_api27n
23
26
  licenses:
24
27
  - MIT
25
28
  metadata: {}