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