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.
Files changed (3) hide show
  1. data/lib/playlyfe.rb +33 -31
  2. data/test/test.rb +74 -0
  3. 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
- @@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' }
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 @@type == 'client'
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 @@type == 'client'
53
+ if @type == 'client'
54
54
  access_token = RestClient.post('https://playlyfe.com/auth/token',
55
55
  {
56
- :client_id => @@id,
57
- :client_secret => @@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 => @@id,
67
- :client_secret => @@secret,
66
+ :client_id => @id,
67
+ :client_secret => @secret,
68
68
  :grant_type => 'authorization_code',
69
- :code => @@code,
70
- :redirect_uri => @@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
- @@store.call access_token
81
- if @@load.nil?
82
- @@load = lambda { return access_token }
80
+ @store.call access_token
81
+ if @load.nil?
82
+ @load = lambda { return access_token }
83
83
  else
84
- old_token = @@load.call
84
+ old_token = @load.call
85
85
  if access_token != old_token
86
- @@load = lambda { return access_token }
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 = @@load.call
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 = @@load.call
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("#{@@api}#{options[:route]}",
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("#{@@api}#{options[:route]}?#{hash_to_query(options[:query])}",
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("#{@@api}#{options[:route]}?#{hash_to_query(options[:query])}",
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("#{@@api}#{options[:route]}?#{hash_to_query(options[:query])}",
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("#{@@api}#{options[:route]}",
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: @@redirect_uri, client_id: @@id }
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
- @@code = code
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.6.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-10-27 00:00:00.000000000 Z
12
+ date: 2014-12-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest_client