Module: EbayAPI

Included in:
OmniAuth::Strategies::Ebay
Defined in:
lib/ebay_api.rb

Defined Under Namespace

Classes: EbayApiError

Constant Summary collapse

EBAY_PRODUCTION_LOGIN_URL =
"https://signin.ebay.com/ws/eBayISAPI.dll"
EBAY_SANDBOX_LOGIN_URL =
"https://signin.sandbox.ebay.com/ws/eBayISAPI.dll"
EBAY_PRODUCTION_XML_API_URL =
"https://api.ebay.com/ws/api.dll"
EBAY_SANDBOX_XML_API_URL =
"https://api.sandbox.ebay.com/ws/api.dll"
X_EBAY_API_REQUEST_CONTENT_TYPE =
'text/xml'
X_EBAY_API_COMPATIBILITY_LEVEL =
'675'
X_EBAY_API_GETSESSIONID_CALL_NAME =
'GetSessionID'
X_EBAY_API_FETCHAUTHTOKEN_CALL_NAME =
'FetchToken'
X_EBAY_API_GETUSER_CALL_NAME =
'GetUser'

Instance Method Summary collapse

Instance Method Details

#api_urlObject



32
33
34
35
# File 'lib/ebay_api.rb', line 32

def api_url
  return EBAY_SANDBOX_XML_API_URL if sandbox?
  EBAY_PRODUCTION_XML_API_URL
end

#ebay_login_url(session_id, ruparams = {}) ⇒ Object



105
106
107
108
109
110
111
112
113
# File 'lib/ebay_api.rb', line 105

def (session_id, ruparams={})
  url = "#{}?#{options.auth_type}&runame=#{options.runame}&#{session_id_field_name}=#{URI.escape(session_id).gsub('+', '%2B')}"

  ruparams[:internal_return_to] = internal_return_to if internal_return_to
  ruparams[:sid] = session_id
  url << "&ruparams=#{ruparams.to_query.gsub("=", "%3D").gsub("&", "%26")}" unless ruparams.empty?

  url
end

#generate_session_idObject



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/ebay_api.rb', line 43

def generate_session_id
  request = %Q(
        <?xml version="1.0" encoding="utf-8"?>
        <GetSessionIDRequest xmlns="urn:ebay:apis:eBLBaseComponents">
          <RuName>#{options.runame}</RuName>
        </GetSessionIDRequest>
  )

  parsed_response, response = api(X_EBAY_API_GETSESSIONID_CALL_NAME, request)
  session_id = parsed_response && parsed_response["GetSessionIDResponse"] && parsed_response["GetSessionIDResponse"]["SessionID"]

  if (!session_id)
    raise EbayApiError.new("Failed to generate session id", request, response)
  end

  session_id
end

#get_auth_token(username, secret_id) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/ebay_api.rb', line 61

def get_auth_token(username, secret_id)
  request = %Q(
        <?xml version="1.0" encoding="utf-8"?>
        <FetchTokenRequest xmlns="urn:ebay:apis:eBLBaseComponents">
           <RequesterCredentials>
             <Username>#{username}</Username>
           </RequesterCredentials>
           <SecretID>#{secret_id.gsub(' ', '+')}</SecretID>
        </FetchTokenRequest>
  )

  parsed_response, response = api(X_EBAY_API_FETCHAUTHTOKEN_CALL_NAME, request)
  token = parsed_response && parsed_response["FetchTokenResponse"] && parsed_response["FetchTokenResponse"]["eBayAuthToken"]

  if (!token)
    raise EbayApiError.new("Failed to retrieve auth token", request, response)
  end

  token
end

#get_user_info(username, auth_token) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/ebay_api.rb', line 82

def (username, auth_token)
  request = %Q(
        <?xml version="1.0" encoding="utf-8"?>
        <GetUserRequest xmlns="urn:ebay:apis:eBLBaseComponents">
          <DetailLevel>ReturnAll</DetailLevel>
          <UserID>#{username}</UserID>
          <RequesterCredentials>
            <eBayAuthToken>#{auth_token}</eBayAuthToken>
          </RequesterCredentials>
          <WarningLevel>High</WarningLevel>
        </GetUserRequest>
  )

  parsed_response, response = api(X_EBAY_API_GETUSER_CALL_NAME, request)
  user = parsed_response && parsed_response["GetUserResponse"] && parsed_response["GetUserResponse"]["User"]

  if (!user)
    raise EbayApiError.new("Failed to retrieve user info", request, response)
  end

  user
end

#login_urlObject



27
28
29
30
# File 'lib/ebay_api.rb', line 27

def 
  return EBAY_SANDBOX_LOGIN_URL if sandbox?
  EBAY_PRODUCTION_LOGIN_URL
end

#sandbox?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/ebay_api.rb', line 23

def sandbox?
  options.environment == :sandbox
end