playlyfe_client 1.1.1 → 1.1.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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/playlyfe_client/connection.rb +1 -0
- data/lib/playlyfe_client/errors.rb +3 -0
- data/lib/playlyfe_client/v2/connection.rb +57 -35
- data/lib/playlyfe_client/v2/game.rb +1 -1
- data/lib/playlyfe_client/v2/player.rb +1 -1
- data/lib/playlyfe_client/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27a6645e14ef7e0623cb4d51483aa4ad7200e365
|
4
|
+
data.tar.gz: c606bd525855f1d96e91bc466a07eb58d4b571fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b770fa236cd02b1058338588f87bbbdc9eae67fa050124cc3fe9e542f8ee3e4e7d1ae06771cbf44bae09c3394cca6064bd049d3c719ebf73a3d9b08276a7d61a
|
7
|
+
data.tar.gz: 6b0878013d909a7f53fa3423b67e968f1a317c41bee1460a0f8da26ca0e6f6825c5da482c7c0ae5450223e99d8d67245f4cf7d93e95f7559d11fb48042c591d3
|
data/Gemfile.lock
CHANGED
@@ -34,6 +34,7 @@ module PlaylyfeClient
|
|
34
34
|
@store = options[:store]
|
35
35
|
@load = options[:load]
|
36
36
|
@redirect_uri = options[:redirect_uri]
|
37
|
+
@skip_api_calls_limit_exceeded_error=options[:skip_api_calls_limit_exceeded_error] || false
|
37
38
|
if @store.nil?
|
38
39
|
@store = lambda { |token| puts 'Storing Token' }
|
39
40
|
end
|
@@ -12,6 +12,7 @@ module PlaylyfeClient
|
|
12
12
|
class PlaylyfeClient::ActionRateLimitExceededError < PlaylyfeClient::ActionError; end
|
13
13
|
class PlaylyfeClient::PlayerExistsError < PlaylyfeClient::PlayerError; end
|
14
14
|
class PlaylyfeClient::CollectionFindOneIsNotSupportedError < PlaylyfeClient::Error; end
|
15
|
+
class PlaylyfeClient::ApiCallsLimitExceededError < PlaylyfeClient::Error; end
|
15
16
|
|
16
17
|
class Error < StandardError
|
17
18
|
attr_accessor :name, :message
|
@@ -33,6 +34,8 @@ module PlaylyfeClient
|
|
33
34
|
err_class= PlaylyfeClient::ActionRateLimitExceededError
|
34
35
|
elsif res_h['error'] == "player_exists"
|
35
36
|
err_class= PlaylyfeClient::PlayerExistsError
|
37
|
+
elsif res_h['error'] == "plan_limit_exceeded"
|
38
|
+
err_class= PlaylyfeClient::ApiCallsLimitExceededError
|
36
39
|
|
37
40
|
end
|
38
41
|
end
|
@@ -12,9 +12,25 @@ module PlaylyfeClient
|
|
12
12
|
@game=nil
|
13
13
|
end
|
14
14
|
|
15
|
+
def skip_errors_with(skipping_result, &block)
|
16
|
+
begin
|
17
|
+
yield
|
18
|
+
rescue PlaylyfeClient::ApiCallsLimitExceededError => e
|
19
|
+
if @skip_api_calls_limit_exceeded_error
|
20
|
+
skipping_result
|
21
|
+
else
|
22
|
+
raise e
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
15
27
|
#for calls to "runtime" there MUST be a player_id, even for Metrics or Leaderboards. So we pick first one.
|
16
28
|
def dummy_player_id
|
17
|
-
@dummy_player_id
|
29
|
+
unless defined?(@dummy_player_id)
|
30
|
+
fph= get_full_players_hash["data"]
|
31
|
+
@dummy_player_id=fph.empty? ? 0 : fph.first["id"]
|
32
|
+
end
|
33
|
+
@dummy_player_id
|
18
34
|
end
|
19
35
|
|
20
36
|
def dummy_player_id=(id)
|
@@ -22,7 +38,7 @@ module PlaylyfeClient
|
|
22
38
|
end
|
23
39
|
|
24
40
|
def get_full_game_hash
|
25
|
-
self.get('/admin')
|
41
|
+
skip_errors_with({"name" => "unknown", "game" => {"id" => 0 ,"title" => "no response"}}) { self.get('/admin') }
|
26
42
|
end
|
27
43
|
|
28
44
|
def get_game_hash
|
@@ -30,7 +46,7 @@ module PlaylyfeClient
|
|
30
46
|
end
|
31
47
|
|
32
48
|
def get_full_players_hash
|
33
|
-
get("/admin/players")
|
49
|
+
skip_errors_with({"data" => [], "total" => 0}) { get("/admin/players") }
|
34
50
|
end
|
35
51
|
|
36
52
|
def get_player_hash_array
|
@@ -38,11 +54,11 @@ module PlaylyfeClient
|
|
38
54
|
end
|
39
55
|
|
40
56
|
def get_game_image_data(player_id=dummy_player_id)
|
41
|
-
get_raw("/runtime/assets/game", {size: style.to_s, player_id: player_id})
|
57
|
+
skip_errors_with(nil) { get_raw("/runtime/assets/game", {size: style.to_s, player_id: player_id}) }
|
42
58
|
end
|
43
59
|
|
44
60
|
def get_full_teams_hash
|
45
|
-
get("/admin/teams")
|
61
|
+
skip_errors_with({"data" => [], "total" => 0}) { get("/admin/teams") }
|
46
62
|
end
|
47
63
|
|
48
64
|
def get_team_hash_array
|
@@ -50,11 +66,11 @@ module PlaylyfeClient
|
|
50
66
|
end
|
51
67
|
|
52
68
|
def get_full_player_profile_hash(player_id)
|
53
|
-
get("/admin/players/#{player_id}")
|
69
|
+
skip_errors_with({"id" => "0", "alias" => "no response", "scores" => [], "teams" => []}) { get("/admin/players/#{player_id}") }
|
54
70
|
end
|
55
71
|
|
56
72
|
def get_full_team_members_hash(team_id)
|
57
|
-
get("/admin/teams/#{team_id}/members")
|
73
|
+
skip_errors_with({"data" => [], "total" => 0}) { get("/admin/teams/#{team_id}/members") }
|
58
74
|
end
|
59
75
|
|
60
76
|
def get_team_members_hash_array(team_id)
|
@@ -62,62 +78,68 @@ module PlaylyfeClient
|
|
62
78
|
end
|
63
79
|
|
64
80
|
def get_full_leaderboards_array(player_id=dummy_player_id)
|
65
|
-
get("/runtime/leaderboards", {player_id: player_id})
|
81
|
+
skip_errors_with([]) { get("/runtime/leaderboards", {player_id: player_id}) }
|
66
82
|
end
|
67
83
|
|
68
84
|
def get_full_leaderboard_hash(leaderboard_id, cycle="alltime", player_id=dummy_player_id)
|
69
|
-
get("/runtime/leaderboards/#{leaderboard_id}", {cycle: cycle, player_id: player_id})
|
85
|
+
skip_errors_with({"data" => [], "total" => 0}) { get("/runtime/leaderboards/#{leaderboard_id}", {cycle: cycle, player_id: player_id}) }
|
70
86
|
end
|
71
87
|
|
72
88
|
def get_full_all_actions_array(player_id=dummy_player_id)
|
73
|
-
get("/runtime/actions", {player_id: player_id})
|
89
|
+
skip_errors_with([]) { get("/runtime/actions", {player_id: player_id}) }
|
74
90
|
end
|
75
91
|
|
76
92
|
def post_play_action(action_id, player_id, body ={})
|
77
|
-
post("/runtime/actions/#{action_id}/play", {player_id: player_id}, body)
|
93
|
+
skip_errors_with({"actions" => [], "events" => []}) { post("/runtime/actions/#{action_id}/play", {player_id: player_id}, body) }
|
78
94
|
end
|
79
95
|
|
80
96
|
def get_full_metrics_array(player_id=dummy_player_id)
|
81
|
-
get("/runtime/definitions/metrics", {player_id: player_id})
|
97
|
+
skip_errors_with([]) { get("/runtime/definitions/metrics", {player_id: player_id}) }
|
82
98
|
end
|
83
99
|
|
84
100
|
def get_player_events_array(player_id, start_time=nil, end_time=nil)
|
85
101
|
#/admin/players/player2/activity?start=2016-05-01T00:00:00Z&end=2016-05-21T00:00:00Z
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
102
|
+
skip_errors_with([]) do
|
103
|
+
if start_time
|
104
|
+
#get specified period of time
|
105
|
+
get("/admin/players/#{player_id}/activity",{"start" => start_str(start_time), "end" => end_str(end_time)})
|
106
|
+
else
|
107
|
+
#get last 24 hours
|
108
|
+
get("/admin/players/#{player_id}/activity")
|
109
|
+
end
|
110
|
+
end
|
93
111
|
end
|
94
112
|
|
95
113
|
def post_create_player(player_h)
|
96
|
-
post("/admin/players", {}, player_h)
|
114
|
+
skip_errors_with({"id" => "0", "alias" => "no response", "scores" => [], "teams" => []}) { post("/admin/players", {}, player_h) }
|
97
115
|
end
|
98
116
|
|
99
117
|
def delete_player(player_id)
|
100
|
-
delete("/admin/players/#{player_id}")
|
118
|
+
skip_errors_with(nil) { delete("/admin/players/#{player_id}") }
|
101
119
|
end
|
102
120
|
|
103
121
|
def get_game_events_array(start_time=nil, end_time=nil)
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
122
|
+
skip_errors_with([]) do
|
123
|
+
if start_time
|
124
|
+
#get specified period of time
|
125
|
+
get("/admin/activity",{"start" => start_str(start_time), "end" => end_str(end_time)})
|
126
|
+
else
|
127
|
+
#get last 24 hours
|
128
|
+
get("/admin/activity")
|
129
|
+
end
|
130
|
+
end
|
111
131
|
end
|
112
132
|
|
113
133
|
def get_team_events_array(team_id, start_time=nil, end_time=nil)
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
134
|
+
skip_errors_with([]) do
|
135
|
+
if start_time
|
136
|
+
#get specified period of time
|
137
|
+
get("/admin/teams/#{team_id}/activity",{"start" => start_str(start_time), "end" => end_str(end_time)})
|
138
|
+
else
|
139
|
+
#get last 24 hours
|
140
|
+
get("/admin/teams/#{team_id}/activity")
|
141
|
+
end
|
142
|
+
end
|
121
143
|
end
|
122
144
|
|
123
145
|
private
|
@@ -71,7 +71,7 @@ module PlaylyfeClient
|
|
71
71
|
@title=game_hash["title"]
|
72
72
|
@type=game_hash["type"]
|
73
73
|
@timezone=game_hash["timezone"] #TODO converion to TZInfo::Timezone ? http://www.rubydoc.info/gems/tzinfo/frames
|
74
|
-
@created_at=Time.parse(game_hash["created"])
|
74
|
+
@created_at=game_hash["created"] ? Time.parse(game_hash["created"]) : nil
|
75
75
|
end
|
76
76
|
|
77
77
|
|
@@ -29,7 +29,7 @@ module PlaylyfeClient
|
|
29
29
|
game.connection.post_play_action(action.id, self.id)
|
30
30
|
@profile_hash= game.connection.get_full_player_profile_hash(self.id)
|
31
31
|
@scores=fill_scores
|
32
|
-
rescue PlaylyfeClient::ActionRateLimitExceededError
|
32
|
+
rescue PlaylyfeClient::ActionRateLimitExceededError => e
|
33
33
|
unless game.ignore_rate_limit_errors
|
34
34
|
fail e
|
35
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playlyfe_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Foton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|