module Bearcat class Client < Footrest::Client module OAuth2 def auth_redirect_url(client_id, redirect_uri, scopes = nil, response_type='code') fullpath('login/oauth2/auth') uri = URI.parse(fullpath('login/oauth2/auth')) query = [ ['client_id', client_id], ['redirect_uri', redirect_uri], ['response_type', response_type] ] query << ['scopes', scopes] if scopes uri.query = URI.encode_www_form(query) uri.to_s end def retrieve_token(client_id, redirect_url, client_secret, code, grant_type = 'authorization_code') token_params = { client_id: client_id, redirect_url: redirect_url, client_secret: client_secret, grant_type: grant_type } if grant_type == 'authorization_code' token_params[:code] = code elsif grant_type == 'refresh_token' token_params[:refresh_token] = code end body = post('/login/oauth2/token', token_params) config[:token] = body['access_token'] set_connection(config) body end end end end