playlyfe 0.6.0 → 0.7.0
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.
- data/lib/playlyfe.rb +33 -31
- data/test/test.rb +74 -0
- metadata +2 -2
data/lib/playlyfe.rb
CHANGED
@@ -18,7 +18,6 @@ class PlaylyfeError < StandardError
|
|
18
18
|
end
|
19
19
|
|
20
20
|
class Playlyfe
|
21
|
-
@@api = 'https://api.playlyfe.com/v1'
|
22
21
|
|
23
22
|
def initialize(options = {})
|
24
23
|
if options[:type].nil?
|
@@ -27,16 +26,17 @@ class Playlyfe
|
|
27
26
|
err.message = "You must pass in a type whether 'client' for client credentials flow or 'code' for auth code flow"
|
28
27
|
raise err
|
29
28
|
end
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
29
|
+
@version = options[:version] ||= 'v1'
|
30
|
+
@type = options[:type]
|
31
|
+
@id = options[:client_id]
|
32
|
+
@secret = options[:client_secret]
|
33
|
+
@store = options[:store]
|
34
|
+
@load = options[:load]
|
35
|
+
@redirect_uri = options[:redirect_uri]
|
36
|
+
if @store.nil?
|
37
|
+
@store = lambda { |token| puts 'Storing Token' }
|
38
38
|
end
|
39
|
-
if
|
39
|
+
if @type == 'client'
|
40
40
|
get_access_token()
|
41
41
|
else
|
42
42
|
if options[:redirect_uri].nil?
|
@@ -50,11 +50,11 @@ class Playlyfe
|
|
50
50
|
|
51
51
|
def get_access_token
|
52
52
|
begin
|
53
|
-
if
|
53
|
+
if @type == 'client'
|
54
54
|
access_token = RestClient.post('https://playlyfe.com/auth/token',
|
55
55
|
{
|
56
|
-
:client_id =>
|
57
|
-
:client_secret =>
|
56
|
+
:client_id => @id,
|
57
|
+
:client_secret => @secret,
|
58
58
|
:grant_type => 'client_credentials'
|
59
59
|
}.to_json,
|
60
60
|
:content_type => :json,
|
@@ -63,11 +63,11 @@ class Playlyfe
|
|
63
63
|
else
|
64
64
|
access_token = RestClient.post("https://playlyfe.com/auth/token",
|
65
65
|
{
|
66
|
-
:client_id =>
|
67
|
-
:client_secret =>
|
66
|
+
:client_id => @id,
|
67
|
+
:client_secret => @secret,
|
68
68
|
:grant_type => 'authorization_code',
|
69
|
-
:code =>
|
70
|
-
:redirect_uri =>
|
69
|
+
:code => @code,
|
70
|
+
:redirect_uri => @redirect_uri
|
71
71
|
}.to_json,
|
72
72
|
:content_type => :json,
|
73
73
|
:accept => :json
|
@@ -77,13 +77,13 @@ class Playlyfe
|
|
77
77
|
expires_at ||= Time.now.to_i + access_token['expires_in']
|
78
78
|
access_token.delete('expires_in')
|
79
79
|
access_token['expires_at'] = expires_at
|
80
|
-
|
81
|
-
if
|
82
|
-
|
80
|
+
@store.call access_token
|
81
|
+
if @load.nil?
|
82
|
+
@load = lambda { return access_token }
|
83
83
|
else
|
84
|
-
old_token =
|
84
|
+
old_token = @load.call
|
85
85
|
if access_token != old_token
|
86
|
-
|
86
|
+
@load = lambda { return access_token }
|
87
87
|
end
|
88
88
|
end
|
89
89
|
rescue => e
|
@@ -92,11 +92,11 @@ class Playlyfe
|
|
92
92
|
end
|
93
93
|
|
94
94
|
def check_token(options)
|
95
|
-
access_token =
|
95
|
+
access_token = @load.call
|
96
96
|
if access_token['expires_at'] < Time.now.to_i
|
97
97
|
puts 'Access Token Expired'
|
98
98
|
get_access_token()
|
99
|
-
access_token =
|
99
|
+
access_token = @load.call
|
100
100
|
end
|
101
101
|
options[:query][:access_token] = access_token['access_token']
|
102
102
|
end
|
@@ -110,29 +110,29 @@ class Playlyfe
|
|
110
110
|
begin
|
111
111
|
case options[:method]
|
112
112
|
when 'GET'
|
113
|
-
res = RestClient.get("
|
113
|
+
res = RestClient.get("https://api.playlyfe.com/#{@version}#{options[:route]}",
|
114
114
|
{:params => options[:query] }
|
115
115
|
)
|
116
116
|
when 'POST'
|
117
|
-
res = RestClient.post("
|
117
|
+
res = RestClient.post("https://api.playlyfe.com/#{@version}#{options[:route]}?#{hash_to_query(options[:query])}",
|
118
118
|
options[:body].to_json,
|
119
119
|
:content_type => :json,
|
120
120
|
:accept => :json
|
121
121
|
)
|
122
122
|
when 'PUT'
|
123
|
-
res = RestClient.put("
|
123
|
+
res = RestClient.put("https://api.playlyfe.com/#{@version}#{options[:route]}?#{hash_to_query(options[:query])}",
|
124
124
|
options[:body].to_json,
|
125
125
|
:content_type => :json,
|
126
126
|
:accept => :json
|
127
127
|
)
|
128
128
|
when 'PATCH'
|
129
|
-
res = RestClient.patch("
|
129
|
+
res = RestClient.patch("https://api.playlyfe.com/#{@version}#{options[:route]}?#{hash_to_query(options[:query])}",
|
130
130
|
options[:body].to_json,
|
131
131
|
:content_type => :json,
|
132
132
|
:accept => :json
|
133
133
|
)
|
134
134
|
when 'DELETE'
|
135
|
-
res = RestClient.delete("
|
135
|
+
res = RestClient.delete("https://api.playlyfe.com/#{@version}#{options[:route]}",
|
136
136
|
{:params => options[:query] }
|
137
137
|
)
|
138
138
|
end
|
@@ -142,6 +142,8 @@ class Playlyfe
|
|
142
142
|
return JSON.parse(res.body)
|
143
143
|
end
|
144
144
|
rescue => e
|
145
|
+
puts e
|
146
|
+
puts e.response
|
145
147
|
raise PlaylyfeError.new(e.response)
|
146
148
|
end
|
147
149
|
end
|
@@ -176,7 +178,7 @@ class Playlyfe
|
|
176
178
|
end
|
177
179
|
|
178
180
|
def get_login_url
|
179
|
-
query = { response_type: 'code', redirect_uri:
|
181
|
+
query = { response_type: 'code', redirect_uri: @redirect_uri, client_id: @id }
|
180
182
|
"https://playlyfe.com/auth?#{hash_to_query(query)}"
|
181
183
|
end
|
182
184
|
|
@@ -191,7 +193,7 @@ class Playlyfe
|
|
191
193
|
err.message = 'You must pass in a code in exchange_code for the auth code flow'
|
192
194
|
raise err
|
193
195
|
else
|
194
|
-
|
196
|
+
@code = code
|
195
197
|
get_access_token()
|
196
198
|
end
|
197
199
|
end
|
data/test/test.rb
CHANGED
@@ -7,6 +7,7 @@ class PlaylyfeTest < Test::Unit::TestCase
|
|
7
7
|
def test_invalid_client
|
8
8
|
begin
|
9
9
|
Playlyfe.new(
|
10
|
+
version: 'v1',
|
10
11
|
client_id: "wrong_id",
|
11
12
|
client_secret: "wrong_secret",
|
12
13
|
type: 'client'
|
@@ -20,6 +21,7 @@ class PlaylyfeTest < Test::Unit::TestCase
|
|
20
21
|
def test_wrong_init
|
21
22
|
begin
|
22
23
|
Playlyfe.new(
|
24
|
+
version: 'v1',
|
23
25
|
client_id: "Zjc0MWU0N2MtODkzNS00ZWNmLWEwNmYtY2M1MGMxNGQ1YmQ4",
|
24
26
|
client_secret: "YzllYTE5NDQtNDMwMC00YTdkLWFiM2MtNTg0Y2ZkOThjYTZkMGIyNWVlNDAtNGJiMC0xMWU0LWI2NGEtYjlmMmFkYTdjOTI3"
|
25
27
|
)
|
@@ -30,6 +32,7 @@ class PlaylyfeTest < Test::Unit::TestCase
|
|
30
32
|
|
31
33
|
def test_init_staging
|
32
34
|
pl = Playlyfe.new(
|
35
|
+
version: 'v1',
|
33
36
|
client_id: "Zjc0MWU0N2MtODkzNS00ZWNmLWEwNmYtY2M1MGMxNGQ1YmQ4",
|
34
37
|
client_secret: "YzllYTE5NDQtNDMwMC00YTdkLWFiM2MtNTg0Y2ZkOThjYTZkMGIyNWVlNDAtNGJiMC0xMWU0LWI2NGEtYjlmMmFkYTdjOTI3",
|
35
38
|
type: 'client'
|
@@ -94,8 +97,76 @@ class PlaylyfeTest < Test::Unit::TestCase
|
|
94
97
|
assert_equal raw_data.class, String
|
95
98
|
end
|
96
99
|
|
100
|
+
def test_init_staging_v2
|
101
|
+
pl = Playlyfe.new(
|
102
|
+
version: 'v2',
|
103
|
+
client_id: "Zjc0MWU0N2MtODkzNS00ZWNmLWEwNmYtY2M1MGMxNGQ1YmQ4",
|
104
|
+
client_secret: "YzllYTE5NDQtNDMwMC00YTdkLWFiM2MtNTg0Y2ZkOThjYTZkMGIyNWVlNDAtNGJiMC0xMWU0LWI2NGEtYjlmMmFkYTdjOTI3",
|
105
|
+
type: 'client'
|
106
|
+
)
|
107
|
+
|
108
|
+
begin
|
109
|
+
pl.get(route: '/gege', query: { player_id: 'student1' })
|
110
|
+
rescue PlaylyfeError => e
|
111
|
+
assert_equal e.name,'route_not_found'
|
112
|
+
assert_equal e.message, 'This route does not exist'
|
113
|
+
end
|
114
|
+
|
115
|
+
players = pl.api(method: 'GET', route: '/runtime/players', query: { player_id: 'student1', limit: 1 })
|
116
|
+
assert_not_nil players["data"]
|
117
|
+
assert_not_nil players["data"][0]
|
118
|
+
|
119
|
+
players = pl.get(route: '/runtime/players', query: { player_id: 'student1', limit: 1 })
|
120
|
+
assert_not_nil players["data"]
|
121
|
+
assert_not_nil players["data"][0]
|
122
|
+
|
123
|
+
begin
|
124
|
+
pl.get(route: '/runtime/player')
|
125
|
+
rescue PlaylyfeError => e
|
126
|
+
assert_equal e.message, "The 'player_id' parameter should be specified in the query"
|
127
|
+
end
|
128
|
+
|
129
|
+
player_id = 'student1'
|
130
|
+
player = pl.get(route: '/runtime/player', query: { player_id: player_id } )
|
131
|
+
assert_equal player["id"], "student1"
|
132
|
+
assert_equal player["alias"], "Student1"
|
133
|
+
assert_equal player["enabled"], true
|
134
|
+
|
135
|
+
pl.get(route: '/runtime/definitions/processes', query: { player_id: player_id } )
|
136
|
+
pl.get(route:'/runtime/definitions/teams', query: { player_id: player_id } )
|
137
|
+
pl.get(route: '/runtime/processes', query: { player_id: player_id } )
|
138
|
+
pl.get(route: '/runtime/teams', query: { player_id: player_id } )
|
139
|
+
|
140
|
+
processes = pl.get(route: '/runtime/processes', query: { player_id: 'student1', limit: 1, skip: 4 })
|
141
|
+
assert_equal processes["data"][0]["definition"], "module1"
|
142
|
+
assert_equal processes["data"].size, 1
|
143
|
+
|
144
|
+
new_process = pl.post(route: '/runtime/processes', query: { player_id: player_id }, body: { definition: 'module1' })
|
145
|
+
assert_equal new_process["definition"]["id"], "module1"
|
146
|
+
assert_equal new_process["state"], "ACTIVE"
|
147
|
+
|
148
|
+
patched_process = pl.patch(
|
149
|
+
route: "/runtime/processes/#{new_process['id']}",
|
150
|
+
query: { player_id: player_id },
|
151
|
+
body: { name: 'patched_process', access: 'PUBLIC' }
|
152
|
+
)
|
153
|
+
|
154
|
+
assert_equal patched_process['name'], 'patched_process'
|
155
|
+
assert_equal patched_process['access'], 'PUBLIC'
|
156
|
+
|
157
|
+
deleted_process = pl.delete(route: "/runtime/processes/#{new_process['id']}", query: { player_id: player_id })
|
158
|
+
assert_not_nil deleted_process['message']
|
159
|
+
|
160
|
+
#data = pl.put(route: "/players/#{player_id}/reset", query: { player_id: player_id })
|
161
|
+
#puts data
|
162
|
+
|
163
|
+
raw_data = pl.get(route: '/runtime/player', query: { player_id: player_id }, raw: true)
|
164
|
+
assert_equal raw_data.class, String
|
165
|
+
end
|
166
|
+
|
97
167
|
def test_init_production
|
98
168
|
pl = Playlyfe.new(
|
169
|
+
version: 'v1',
|
99
170
|
client_id: "N2Y4NjNlYTItODQzZi00YTQ0LTkzZWEtYTBiNTA2ODg3MDU4",
|
100
171
|
client_secret: "NDc3NTA0NmItMjBkZi00MjI2LWFhMjUtOTI0N2I1YTkxYjc2M2U3ZGI0MDAtNGQ1Mi0xMWU0LWJmZmUtMzkyZTdiOTYxYmMx",
|
101
172
|
type: 'client'
|
@@ -106,6 +177,7 @@ class PlaylyfeTest < Test::Unit::TestCase
|
|
106
177
|
def test_store
|
107
178
|
redis = Redis.new
|
108
179
|
pl = Playlyfe.new(
|
180
|
+
version: 'v1',
|
109
181
|
client_id: "Zjc0MWU0N2MtODkzNS00ZWNmLWEwNmYtY2M1MGMxNGQ1YmQ4",
|
110
182
|
client_secret: "YzllYTE5NDQtNDMwMC00YTdkLWFiM2MtNTg0Y2ZkOThjYTZkMGIyNWVlNDAtNGJiMC0xMWU0LWI2NGEtYjlmMmFkYTdjOTI3",
|
111
183
|
type: 'client',
|
@@ -120,6 +192,7 @@ class PlaylyfeTest < Test::Unit::TestCase
|
|
120
192
|
def test_auth_code_error
|
121
193
|
begin
|
122
194
|
Playlyfe.new(
|
195
|
+
version: 'v1',
|
123
196
|
client_id: "NGM2ZmYyNGQtNjViMy00YjQ0LWI0YTgtZTdmYWFlNDRkMmUx",
|
124
197
|
client_secret: "ZTQ0OWI4YTItYzE4ZC00MWQ5LTg3YjktMDI5ZjAxYTBkZmRiZGQ0NzI4OTAtNGQ1My0xMWU0LWJmZmUtMzkyZTdiOTYxYmMx",
|
125
198
|
type: 'code'
|
@@ -131,6 +204,7 @@ class PlaylyfeTest < Test::Unit::TestCase
|
|
131
204
|
|
132
205
|
def test_auth_code
|
133
206
|
Playlyfe.new(
|
207
|
+
version: 'v1',
|
134
208
|
client_id: "NGM2ZmYyNGQtNjViMy00YjQ0LWI0YTgtZTdmYWFlNDRkMmUx",
|
135
209
|
client_secret: "ZTQ0OWI4YTItYzE4ZC00MWQ5LTg3YjktMDI5ZjAxYTBkZmRiZGQ0NzI4OTAtNGQ1My0xMWU0LWJmZmUtMzkyZTdiOTYxYmMx",
|
136
210
|
type: 'code',
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playlyfe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-12-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest_client
|