sorare-rewards 1.1.3.beta0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bcb36662a381adcf213a5ab17ad97ae1d57f862f84e274679657a05d096476cb
4
- data.tar.gz: 1d38e28d7fc1912cf14ae3dfa48546f1aa87b427e5025ac8e2896dd3dce6a117
3
+ metadata.gz: 4f64ea163ad5ed02120737f8a540b3c1a86cbfc4e2d472ff4906cf2ca836f060
4
+ data.tar.gz: d9021d4ce7717b197408ee1e9e1da025e3af46f4f744862c987ea58654e9f191
5
5
  SHA512:
6
- metadata.gz: e66851acb6b951557c607e2ebf24552ea5b16d63d3faf260f344175bf674758dc5efe7549b96c6fa164f1bdfc263066234b0e09f79a66ccbbb1c5f7dc0df903e
7
- data.tar.gz: 6a2a8979952b7446ac9470b360fae8e7c2d8c53dd4db4442da9e60472090c2bae881fcf625e9c5da5a19d8bcff9c0356f80c2acb3a1586b074bdeb87f2e0689c
6
+ metadata.gz: eafcc27cb84b5974e901b8246fd49a9f351b7e88b784274eb2a3dc0b1086f6b11a6d96611b20790b42c92e83ac97e4abb6dadfa3b2f928f2c66db161451c86c4
7
+ data.tar.gz: db9da4a9da91484dd38a71afa544cc324d7c1e724a85cebe154453fa381c376c8c028ad3f4494e533cd6480657c6d6b9a6a2c2b6cef6e1be6f96fa2f57516222
data/.gitlab-ci.yml CHANGED
@@ -1,4 +1,4 @@
1
- image: ruby:2.7.1
1
+ image: ruby:3.0
2
2
 
3
3
  workflow:
4
4
  rules:
data/CHANGELOG.md ADDED
@@ -0,0 +1,3 @@
1
+ ## [1.2.0] - 2021-11-02
2
+ ### Added
3
+ - Enable cross leagues cooldown using `per_league` configuration flag
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sorare-rewards (1.1.3.beta0)
4
+ sorare-rewards (1.2.0)
5
5
  activesupport (~> 6.1.4)
6
6
  interactor (~> 3.1.2)
7
7
  json (~> 2)
@@ -8,8 +8,6 @@ module Sorare
8
8
  module Rewards
9
9
  # GameWeek stores the reward data of a game week
10
10
  class GameWeek
11
- include WithAnalytics
12
-
13
11
  attr_reader :salt
14
12
 
15
13
  delegate :card_allocations, :prize_pools, to: :reward_allocations
@@ -71,10 +69,6 @@ module Sorare
71
69
  def player(slug)
72
70
  Player.new(slug, self)
73
71
  end
74
-
75
- def inspect
76
- super.splice(:version)
77
- end
78
72
  end
79
73
  end
80
74
  end
@@ -30,6 +30,12 @@ module Sorare
30
30
  cooldown.dig(rarity, 'quantity')
31
31
  end
32
32
 
33
+ def cooldown_per_league?(rarity)
34
+ per_league = cooldown.dig(rarity, 'per_league')
35
+
36
+ per_league.nil? ? true : per_league
37
+ end
38
+
33
39
  def cooldown_since(rarity)
34
40
  cooldown.dig(rarity, 'since')
35
41
  end
@@ -55,16 +55,22 @@ module Sorare
55
55
  end
56
56
 
57
57
  def available_during_cooldown(league, rarity)
58
- [@config.cooldown_limit(rarity) - rewarded_during_cooldown(league, rarity), 0].max
58
+ [@config.cooldown_limit(rarity) - rewarded_under_cooldown(league, rarity), 0].max
59
59
  end
60
60
 
61
- def rewarded_during_cooldown(league, rarity)
62
- (@game_data&.dig(league.name, rarity) || []).count do |at|
61
+ def rewarded_under_cooldown(league, rarity)
62
+ rewarded(league, rarity).count do |at|
63
63
  (Time.parse(at) + @config.cooldown_since(rarity)) > Time.now
64
64
  end
65
65
  end
66
66
 
67
- %w[remaining_games_for_supply remaining_games].each do |key|
67
+ def rewarded(league, rarity)
68
+ return (@game_data&.dig(league.name, rarity) || []) if @config.cooldown_per_league?(rarity)
69
+
70
+ latest_rewarded&.dig(rarity) || []
71
+ end
72
+
73
+ %w[remaining_games_for_supply remaining_games latest_rewarded].each do |key|
68
74
  define_method(key) do
69
75
  @game_data&.dig(key)
70
76
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sorare
4
4
  module Rewards
5
- VERSION = '1.1.3.beta0'
5
+ VERSION = '1.2.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorare-rewards
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3.beta0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - pierre
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-20 00:00:00.000000000 Z
11
+ date: 2021-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -161,6 +161,7 @@ files:
161
161
  - ".gitlab-ci.yml"
162
162
  - ".rspec"
163
163
  - ".rubocop.yml"
164
+ - CHANGELOG.md
164
165
  - Gemfile
165
166
  - Gemfile.lock
166
167
  - LICENSE.txt
@@ -171,7 +172,6 @@ files:
171
172
  - data.patch
172
173
  - lib/sorare/rewards.rb
173
174
  - lib/sorare/rewards/allocation_configuration.yml
174
- - lib/sorare/rewards/concerns/with_analytics.rb
175
175
  - lib/sorare/rewards/configuration.rb
176
176
  - lib/sorare/rewards/game_week.rb
177
177
  - lib/sorare/rewards/game_week_allocations.rb
@@ -221,9 +221,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
221
221
  version: 2.7.1
222
222
  required_rubygems_version: !ruby/object:Gem::Requirement
223
223
  requirements:
224
- - - ">"
224
+ - - ">="
225
225
  - !ruby/object:Gem::Version
226
- version: 1.3.1
226
+ version: '0'
227
227
  requirements: []
228
228
  rubygems_version: 3.2.22
229
229
  signing_key:
@@ -1,57 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'active_support/concern'
4
-
5
- module Sorare
6
- module Rewards
7
- # WithAnalytics defines analytics methods
8
- module WithAnalytics
9
- extend ActiveSupport::Concern
10
-
11
- def analytics
12
- @analytics ||= each_league.each_with_object({}) do |league, stats|
13
- stats[league.name] = league_analytics(league)
14
- end
15
- end
16
-
17
- private
18
-
19
- def reward_distributed
20
- @reward_distributed ||= reward_allocations.card_allocations.transform_values do |league|
21
- league.transform_values do |rarity|
22
- rarity.sum { |_, divisions| divisions.values.sum }
23
- end
24
- end
25
- end
26
-
27
- def league_analytics(league)
28
- {
29
- playing_players_with_supply: nb_of_playing_players(league),
30
- available_cards: nb_of_available_cards(league),
31
- cooldown_players: nb_of_fully_cooldown_players(league),
32
- rewarded: reward_distributed[league.name]
33
- }
34
- end
35
-
36
- def nb_of_playing_players(league)
37
- supply_for(league.name).keys.index_with do |rarity|
38
- (supply_for(league.name, rarity: rarity).keys & playing_players.keys).count
39
- end
40
- end
41
-
42
- def nb_of_available_cards(league)
43
- supply_for(league.name).keys.index_with do |rarity|
44
- supply_for(league.name, rarity: rarity).sum { |_, data| data['supply'] }
45
- end
46
- end
47
-
48
- def nb_of_fully_cooldown_players(league)
49
- supply_for(league.name).keys.index_with do |rarity|
50
- supply_for(league.name, rarity: rarity).filter do |player_slug|
51
- player(player_slug).available_during_cooldown(league, rarity).zero?
52
- end.count
53
- end
54
- end
55
- end
56
- end
57
- end