class OmniAuth::Strategies::Htc
Attributes
access_token[RW]
expires_in[RW]
Public Instance Methods
callback_phase()
click to toggle source
Calls superclass method
# File lib/omniauth/strategies/htc.rb, line 46 def callback_phase fetch_access_token request.params["code"] super end
request_phase()
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 42 def request_phase redirect sso_auth_uri.to_s end
Protected Instance Methods
access_token_params()
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 134 def access_token_params @access_token_params ||= { client_id: options.client_id, client_secret: options.client_secret, grant_type: "authorization_code" } end
access_token_uri()
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 102 def access_token_uri @access_token_uri ||= URI::HTTPS.build(host: options.auth_host, path: options.token_path) end
fetch_access_token(code)
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 67 def fetch_access_token(code) response = Net::HTTP.post_form(access_token_uri, access_token_params.merge(code: code)) if response.code_type == Net::HTTPOK json = JSON.parse(response.body) self.access_token = squish! json["access_token"] self.expires_in = json["expires_in"] return end raise OmniAuth::NoSessionError, <<~MSG auth code for access token request failed - code: #{response.code} res: #{response.body} MSG end
fetch_user_info()
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 85 def fetch_user_info response = Net::HTTP.start(user_info_uri.host, user_info_uri.port, use_ssl: true) do |http| req = Net::HTTP::Get.new user_info_uri req["authkey"] = access_token http.request req end return JSON.parse(response.body) if response.code_type == Net::HTTPOK raise OmniAuth::NoSessionError, <<~MSG access token get user info request failed - token: #{access_token} res: #{response.body} MSG end
prune!(hash)
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 146 def prune!(hash) hash.delete_if do |_, v| prune!(v) if v.is_a?(Hash) v.nil? || (v.respond_to?(:empty?) && v.empty?) end end
raw_info()
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 53 def raw_info @raw_info ||= fetch_user_info end
squish!(str)
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 153 def squish!(str) str.gsub!(/\A[[:space:]]+/, '') str.gsub!(/[[:space:]]+\z/, '') str.gsub!(/[[:space:]]+/, ' ') str end
sso_auth_params()
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 124 def sso_auth_params @sso_auth_params ||= { client_id: options.client_id, redirection_url: options.redirection_url, scopes: options.scopes, response_type: "code", state: sso_auth_state_param } end
sso_auth_state_param()
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 114 def sso_auth_state_param @sso_auth_state_param ||= { clientId: options.client_id, redirectionUrl: options.redirection_url, scopes: options.scopes, requireAuthCode: true, authorities: "htc.com" }.to_json end
sso_auth_uri()
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 57 def sso_auth_uri query = sso_auth_params.map { |k,v| to_query k, v }.join("&") @sso_auth_uri ||= URI::HTTPS.build( host: options.auth_host, path: options.authorize_path, query: query ) end
to_query(k, v)
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 142 def to_query(k, v) "#{CGI.escape(k.to_s)}=#{CGI.escape(v.to_s)}" end
user_info_uri()
click to toggle source
# File lib/omniauth/strategies/htc.rb, line 106 def user_info_uri @user_info_uri ||= URI::HTTPS.build( host: options.user_info_host, path: options.user_info_path, query: "fields=firstName,id,lastName" ) end