playlyfe 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|