lib/ringcentral_sdk/platform/platform.rb in ringcentral_sdk-0.0.4 vs lib/ringcentral_sdk/platform/platform.rb in ringcentral_sdk-0.1.0
- old
+ new
@@ -1,8 +1,10 @@
require 'base64'
require 'faraday'
require 'faraday_middleware'
+require 'faraday_middleware/oauth2_refresh'
+require 'oauth2'
module RingCentralSdk::Platform
class Platform
ACCESS_TOKEN_TTL = 600 # 10 minutes
@@ -13,80 +15,67 @@
TOKEN_ENDPOINT = '/restapi/oauth/token'
REVOKE_ENDPOINT = '/restapi/oauth/revoke'
API_VERSION = 'v1.0'
URL_PREFIX = '/restapi'
- attr_reader :client
+ attr_reader :client
+ attr_accessor :server_url
- def initialize(app_key='',app_secret='',server_url='https://platform.devtest.ringcentral.com')
+ def initialize(app_key='', app_secret='', server_url=RingCentralSdk::Sdk::RC_SERVER_SANDBOX)
@app_key = app_key
@app_secret = app_secret
@server_url = server_url
- @_auth = RingCentralSdk::Platform::Auth.new
+ @token = nil
+ @client = nil
- @client = Faraday.new(:url => get_api_version_url()) do |conn|
- conn.request :json
- conn.request :url_encoded
- conn.response :json, :content_type => 'application/json'
- conn.adapter Faraday.default_adapter
- end
-
end
def get_api_version_url()
return @server_url + URL_PREFIX + '/' + API_VERSION
end
- def authorize(username='',extension='',password='',remember=false)
+ def authorize(username='', extension='', password='', remember=false)
- response = _auth_call({}, {
- :grant_type => 'password',
- :username => username,
- :extension => extension.is_a?(String) || extension.is_a?(Integer) ? extension : '',
- :password => password,
- :access_token_ttl => ACCESS_TOKEN_TTL,
- :refresh_token_ttl => remember ? REFRESH_TOKEN_TTL_REMEMBER : REFRESH_TOKEN_TTL
- })
+ oauth2 = OAuth2::Client.new(@app_key, @app_secret,
+ :site => @server_url,
+ :token_url => TOKEN_ENDPOINT)
- @_auth.set_data( response.body )
- @_auth.remember = remember
+ token = oauth2.password.get_token(username, password, {
+ :extension => extension,
+ :headers => { 'Authorization' => 'Basic ' + get_api_key() } })
- if response.body.has_key?("access_token") && response.body["access_token"].is_a?(String)
- @client.headers['Authorization'] = 'Bearer ' + response.body["access_token"]
- end
+ authorized(token)
- return response
end
- #def refresh()
- #end
+ def authorized(token=nil)
+ @token = token
+ @client = Faraday.new(:url => get_api_version_url()) do |conn|
+ conn.request :oauth2_refresh, @token
+ conn.request :json
+ conn.request :url_encoded
+ conn.response :json, :content_type => 'application/json'
+ conn.adapter Faraday.default_adapter
+ end
+
+ end
+
def get_api_key()
api_key = (@app_key.is_a?(String) && @app_secret.is_a?(String)) \
- ? Base64.encode64(@app_key + ":" + @app_secret).gsub(/[\s\r\n]/,"") : ''
+ ? Base64.strict_encode64("#{@app_key}:#{@app_secret}") : ''
return api_key
end
def get_auth_header()
if @_auth.token_type.is_a?(String) && @_auth.access_token.is_a?(String)
return @_auth.token_type + ' ' + @_auth.access_token
end
return ''
end
- def _auth_call(queryParams={},body={})
- return @client.post do |req|
- req.url TOKEN_ENDPOINT
- req.headers['Authorization'] = 'Basic ' + get_api_key()
- req.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
- if body.is_a?(Hash) && body.size > 0
- req.body = body
- end
- end
- end
-
def request(helper=nil)
unless helper.is_a?(RingCentralSdk::Helpers::Request)
raise 'Request is not a RingCentralSdk::Helpers::Request'
end
@@ -99,8 +88,8 @@
return resp
end
return nil
end
- private :_auth_call, :get_api_key, :get_api_version_url, :get_auth_header
+ private :get_api_version_url
end
end