playlyfe 0.6.0 → 0.7.0

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