class GoogleAppsOauth2::Transport
Attributes
client_id[R]
client_secret[R]
domain[R]
refresh_token[R]
token[R]
user_path[R]
Public Class Methods
new(options, &block)
click to toggle source
# File lib/google_apps_oauth2/transport.rb, line 14 def initialize(options, &block) @domain = options[:domain] @token = options[:token] @client_id = options[:client_id] @client_secret = options[:client_secret] @refresh_token = options[:refresh_token] @token_changed_block = block @user_path= "/#{@domain}/user/2.0" end
Public Instance Methods
get_users(options = {})
click to toggle source
# File lib/google_apps_oauth2/transport.rb, line 25 def get_users(options = {}) headers = {'content-type' => 'application/atom+xml', 'Authorization' => "OAuth #{token}"} url = user_path + "?startUsername=#{options[:start]}" response = self.class.get(url, headers: headers) response = check_for_refresh(response) response end
Private Instance Methods
check_for_refresh(old_response)
click to toggle source
# File lib/google_apps_oauth2/transport.rb, line 39 def check_for_refresh(old_response) response = old_response if old_response.code == 401 data = { :client_id => @client_id, :client_secret => @client_secret, :refresh_token => refresh_token, :grant_type => "refresh_token" } response_json = MultiJson.load(self.class.post("https://accounts.google.com/o/oauth2/token", :body => data)) @token = response_json["access_token"] @token_changed_block.call(@token) headers = old_response.request.options[:headers].merge("Authorization" => "OAuth #{token}") response = self.class.get(old_response.request.uri.to_s, headers: headers) end response end