playlyfe 0.4.5 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/playlyfe.rb +61 -59
- metadata +1 -1
data/lib/playlyfe.rb
CHANGED
@@ -20,17 +20,6 @@ end
|
|
20
20
|
class Playlyfe
|
21
21
|
@@api = 'https://api.playlyfe.com/v1'
|
22
22
|
|
23
|
-
# You can initiate a client by giving the client_id and client_secret params
|
24
|
-
# This will authorize a client and get the token
|
25
|
-
#
|
26
|
-
# @param [Hash] options the options to make the request with
|
27
|
-
# @param options
|
28
|
-
# [Boolean] :type where where type can be 'code', 'client' for
|
29
|
-
# for the oauth2 auth code flow and client credentials flow
|
30
|
-
# [lambda] :store a method that persists the access_token into
|
31
|
-
# a database
|
32
|
-
# [lambda] :retrieve a method that is used by the sdk internally
|
33
|
-
# to read the access_token and use it in all your requests
|
34
23
|
def self.init(options = {})
|
35
24
|
puts 'Playlyfe Initializing...............................................'
|
36
25
|
if options[:type].nil?
|
@@ -44,6 +33,7 @@ class Playlyfe
|
|
44
33
|
@@secret = options[:client_secret]
|
45
34
|
@@store = options[:store]
|
46
35
|
@@retrieve = options[:retrieve]
|
36
|
+
@@redirect_uri = options[:redirect_uri]
|
47
37
|
if @@store.nil?
|
48
38
|
@@store = lambda { |token| puts 'Storing Token' }
|
49
39
|
end
|
@@ -55,30 +45,36 @@ class Playlyfe
|
|
55
45
|
err.name = 'init_failed'
|
56
46
|
err.message = 'You must pass in a redirect_uri for the auth code flow'
|
57
47
|
raise err
|
58
|
-
else
|
59
|
-
puts 'CLIENT'
|
60
|
-
#RestClient.get("https://playlyfe.com/auth?redirect_uri=#{options[:redirect_uri]}&response_type=code&client_id=#{@@id}")
|
61
|
-
#:authorize_url =>
|
62
|
-
#'response_type' => 'code', 'client_id' => @@id
|
63
|
-
#auth_url = @@client.auth_code.authorize_url(:redirect_uri => 'http://localhost:8080/oauth2/callback')
|
64
|
-
#@@client.auth_code.get_token('code_value', :redirect_uri => 'http://localhost:8080/oauth2/callback') #check query.code then make post request
|
65
48
|
end
|
66
49
|
end
|
67
|
-
#RestClient.log = Logger.new(STDOUT)
|
68
50
|
end
|
69
51
|
|
70
52
|
def self.get_access_token
|
71
53
|
puts 'Getting Access Token'
|
72
54
|
begin
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
55
|
+
if @@type == 'client'
|
56
|
+
access_token = RestClient.post('https://playlyfe.com/auth/token',
|
57
|
+
{
|
58
|
+
:client_id => @@id,
|
59
|
+
:client_secret => @@secret,
|
60
|
+
:grant_type => 'client_credentials'
|
61
|
+
}.to_json,
|
62
|
+
:content_type => :json,
|
63
|
+
:accept => :json
|
64
|
+
)
|
65
|
+
else
|
66
|
+
access_token = RestClient.post("https://playlyfe.com/auth/token",
|
67
|
+
{
|
68
|
+
:client_id => @@id,
|
69
|
+
:client_secret => @@secret,
|
70
|
+
:grant_type => 'authorization_code',
|
71
|
+
:code => @@code,
|
72
|
+
:redirect_uri => @@redirect_uri
|
73
|
+
}.to_json,
|
74
|
+
:content_type => :json,
|
75
|
+
:accept => :json
|
76
|
+
)
|
77
|
+
end
|
82
78
|
access_token = JSON.parse(access_token)
|
83
79
|
expires_at ||= Time.now.to_i + access_token['expires_in']
|
84
80
|
access_token.delete('expires_in')
|
@@ -86,41 +82,56 @@ class Playlyfe
|
|
86
82
|
@@store.call access_token
|
87
83
|
if @@retrieve.nil?
|
88
84
|
@@retrieve = lambda { return access_token }
|
85
|
+
else
|
86
|
+
old_token = @@retrieve.call
|
87
|
+
if access_token != old_token
|
88
|
+
@@retrieve = lambda { return access_token }
|
89
|
+
end
|
89
90
|
end
|
90
91
|
rescue => e
|
91
92
|
raise PlaylyfeError.new(e.response)
|
92
93
|
end
|
93
94
|
end
|
94
95
|
|
95
|
-
def self.
|
96
|
-
|
97
|
-
|
96
|
+
def self.get_auth_url
|
97
|
+
query = { response_type: 'code', redirect_uri: @@redirect_uri, client_id: @@id }
|
98
|
+
"https://playlyfe.com/auth?#{self.hash_to_query(query)}"
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.exchange_code(code)
|
102
|
+
if code.nil?
|
103
|
+
err = PlaylyfeError.new("")
|
104
|
+
err.name = 'init_failed'
|
105
|
+
err.message = 'You must pass in a code in exchange_code for the auth code flow'
|
106
|
+
raise err
|
107
|
+
else
|
108
|
+
@@code = code
|
98
109
|
self.get_access_token()
|
99
110
|
end
|
100
111
|
end
|
101
112
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
113
|
+
def self.check_token(options)
|
114
|
+
puts 'Checking Token'
|
115
|
+
if @@retrieve.nil?
|
116
|
+
err = PlaylyfeError.new("")
|
117
|
+
err.name = 'api_request_failed'
|
118
|
+
err.message = 'You must pass in a code in exchange_code for the auth code flow'
|
119
|
+
raise err
|
120
|
+
end
|
121
|
+
access_token = @@retrieve.call
|
122
|
+
if access_token['expires_at'] < Time.now.to_i
|
123
|
+
puts 'Access Token Expired'
|
124
|
+
self.get_access_token()
|
125
|
+
access_token = @@retrieve.call
|
126
|
+
end
|
127
|
+
options[:query][:access_token] = access_token['access_token']
|
114
128
|
end
|
115
129
|
|
116
130
|
def self.get(options = {})
|
117
131
|
options[:route] ||= ''
|
118
132
|
options[:query] ||= {}
|
119
133
|
options[:raw] ||= false
|
120
|
-
|
121
|
-
access_token = @@retrieve.call
|
122
|
-
self.check_expired(access_token)
|
123
|
-
options[:query][:access_token] = access_token['access_token']
|
134
|
+
self.check_token(options)
|
124
135
|
|
125
136
|
begin
|
126
137
|
res = RestClient.get("#{@@api}#{options[:route]}",
|
@@ -140,10 +151,7 @@ class Playlyfe
|
|
140
151
|
options[:route] ||= ''
|
141
152
|
options[:query] ||= {}
|
142
153
|
options[:body] ||= {}
|
143
|
-
|
144
|
-
access_token = @@retrieve.call
|
145
|
-
self.check_expired(access_token)
|
146
|
-
options[:query][:access_token] = access_token['access_token']
|
154
|
+
self.check_token(options)
|
147
155
|
|
148
156
|
begin
|
149
157
|
res = RestClient.post("#{@@api}#{options[:route]}?#{self.hash_to_query(options[:query])}",
|
@@ -161,10 +169,7 @@ class Playlyfe
|
|
161
169
|
options[:route] ||= ''
|
162
170
|
options[:query] ||= {}
|
163
171
|
options[:body] ||= {}
|
164
|
-
|
165
|
-
access_token = @@retrieve.call
|
166
|
-
self.check_expired(access_token)
|
167
|
-
options[:query][:access_token] = access_token['access_token']
|
172
|
+
self.check_token(options)
|
168
173
|
|
169
174
|
begin
|
170
175
|
res = RestClient.patch("#{@@api}#{options[:route]}?#{self.hash_to_query(options[:query])}",
|
@@ -181,10 +186,7 @@ class Playlyfe
|
|
181
186
|
def self.delete(options = {})
|
182
187
|
options[:route] ||= ''
|
183
188
|
options[:query] ||= {}
|
184
|
-
|
185
|
-
access_token = @@retrieve.call
|
186
|
-
self.check_expired(access_token)
|
187
|
-
options[:query][:access_token] = access_token['access_token']
|
189
|
+
self.check_token(options)
|
188
190
|
|
189
191
|
begin
|
190
192
|
res = RestClient.delete("#{@@api}#{options[:route]}",
|