class OmniAuth::EbayOauth::UserInfoRequest
Receives user information from Auth'n'auth eBay API developer.ebay.com/devzone/xml/docs/reference/ebay/GetUser.html
Constants
- BASIC_HEADERS
- ERRORS
- STATUS_PATH
- SUCCESS_CODE
- TOKEN_HEADER
- USER_REQUEST
Public Class Methods
new(access_token, request: USER_REQUEST, user_info_endpoint:, read_timeout:, **_args)
click to toggle source
# File lib/omniauth/ebay-oauth/user_info_request.rb, line 26 def initialize(access_token, request: USER_REQUEST, user_info_endpoint:, read_timeout:, **_args) @access_token = access_token @url = URI(user_info_endpoint) @read_timeout = read_timeout @request = request end
Public Instance Methods
call()
click to toggle source
# File lib/omniauth/ebay-oauth/user_info_request.rb, line 34 def call MultiXml.parse( http .request(ebay_request) .tap(&method(:ensure_success_code)) .read_body ).tap(&method(:ensure_success_result)) end
Private Instance Methods
ebay_request()
click to toggle source
# File lib/omniauth/ebay-oauth/user_info_request.rb, line 69 def ebay_request Net::HTTP::Post.new(@url).tap do |request| BASIC_HEADERS.merge(TOKEN_HEADER => @access_token) .each { |header, value| request[header] = value } request.body = @request end end
ensure_success_code(response)
click to toggle source
# File lib/omniauth/ebay-oauth/user_info_request.rb, line 45 def ensure_success_code(response) return if (200..299).cover?(response.code.to_i) raise FailureResponseCode, response end
ensure_success_result(body)
click to toggle source
# File lib/omniauth/ebay-oauth/user_info_request.rb, line 51 def ensure_success_result(body) return if body.dig(*STATUS_PATH) == SUCCESS_CODE error_code = body.dig('GetUserResponse', 'Errors', 'ErrorCode') raise(FailureResponseResult, body) unless ERRORS.key?(error_code) err_class = ERRORS[error_code] err_message = body.dig('GetUserResponse', 'Errors', 'LongMessage') raise err_class, err_message end
http()
click to toggle source
# File lib/omniauth/ebay-oauth/user_info_request.rb, line 62 def http Net::HTTP.new(@url.host, @url.port).tap do |http| http.read_timeout = @read_timeout http.use_ssl = true end end