omniauth-ebay 0.0.3 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/ebay_api.rb +46 -12
- data/lib/omniauth-ebay/version.rb +1 -1
- data/lib/omniauth/strategies/.ebay.rb.swo +0 -0
- data/lib/omniauth/strategies/.ebay.rb.swp +0 -0
- data/lib/omniauth/strategies/ebay.rb +6 -4
- metadata +72 -22
data/lib/ebay_api.rb
CHANGED
@@ -2,6 +2,16 @@ require 'multi_xml'
|
|
2
2
|
|
3
3
|
module EbayAPI
|
4
4
|
|
5
|
+
class EbayApiError < StandardError
|
6
|
+
attr_accessor :request, :response
|
7
|
+
|
8
|
+
def initialize(message=nil, request=nil, response=nil)
|
9
|
+
super(message)
|
10
|
+
@request = request
|
11
|
+
@response = response
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
5
15
|
EBAY_LOGIN_URL = "https://signin.ebay.com/ws/eBayISAPI.dll"
|
6
16
|
X_EBAY_API_REQUEST_CONTENT_TYPE = 'text/xml'
|
7
17
|
X_EBAY_API_COMPATIBILITY_LEVEL = '675'
|
@@ -10,19 +20,26 @@ module EbayAPI
|
|
10
20
|
X_EBAY_API_GETUSER_CALL_NAME = 'GetUser'
|
11
21
|
|
12
22
|
def generate_session_id
|
13
|
-
request =
|
23
|
+
request = %Q(
|
14
24
|
<?xml version="1.0" encoding="utf-8"?>
|
15
25
|
<GetSessionIDRequest xmlns="urn:ebay:apis:eBLBaseComponents">
|
16
26
|
<RuName>#{options.runame}</RuName>
|
17
27
|
</GetSessionIDRequest>
|
18
|
-
|
28
|
+
)
|
19
29
|
|
20
30
|
response = api(X_EBAY_API_GETSESSIONID_CALL_NAME, request)
|
21
|
-
MultiXml.parse(response)
|
31
|
+
parsed_response = MultiXml.parse(response)
|
32
|
+
session_id = parsed_response && parsed_response["GetSessionIDResponse"] && parsed_response["GetSessionIDResponse"]["SessionID"]
|
33
|
+
|
34
|
+
if (!session_id)
|
35
|
+
raise EbayApiError.new("Failed to generate session id", request, response)
|
36
|
+
end
|
37
|
+
|
38
|
+
session_id
|
22
39
|
end
|
23
40
|
|
24
41
|
def get_auth_token(username, secret_id)
|
25
|
-
request =
|
42
|
+
request = %Q(
|
26
43
|
<?xml version="1.0" encoding="utf-8"?>
|
27
44
|
<FetchTokenRequest xmlns="urn:ebay:apis:eBLBaseComponents">
|
28
45
|
<RequesterCredentials>
|
@@ -30,24 +47,41 @@ module EbayAPI
|
|
30
47
|
</RequesterCredentials>
|
31
48
|
<SecretID>#{secret_id.gsub(' ', '+')}</SecretID>
|
32
49
|
</FetchTokenRequest>
|
33
|
-
|
50
|
+
)
|
34
51
|
|
35
52
|
response = api(X_EBAY_API_FETCHAUTHTOKEN_CALL_NAME, request)
|
36
|
-
MultiXml.parse(response)
|
53
|
+
parsed_response = MultiXml.parse(response)
|
54
|
+
token = parsed_response && parsed_response["FetchTokenResponse"] && parsed_response["FetchTokenResponse"]["eBayAuthToken"]
|
55
|
+
|
56
|
+
if (!token)
|
57
|
+
raise EbayApiError.new("Failed to retrieve auth token", request, response)
|
58
|
+
end
|
59
|
+
|
60
|
+
token
|
37
61
|
end
|
38
62
|
|
39
|
-
def get_user_info(auth_token)
|
40
|
-
request =
|
63
|
+
def get_user_info(username, auth_token)
|
64
|
+
request = %Q(
|
41
65
|
<?xml version="1.0" encoding="utf-8"?>
|
42
66
|
<GetUserRequest xmlns="urn:ebay:apis:eBLBaseComponents">
|
67
|
+
<DetailLevel>ReturnAll</DetailLevel>
|
68
|
+
<UserID>#{username}</UserID>
|
43
69
|
<RequesterCredentials>
|
44
70
|
<eBayAuthToken>#{auth_token}</eBayAuthToken>
|
45
71
|
</RequesterCredentials>
|
72
|
+
<WarningLevel>High</WarningLevel>
|
46
73
|
</GetUserRequest>
|
47
|
-
|
74
|
+
)
|
48
75
|
|
49
76
|
response = api(X_EBAY_API_GETUSER_CALL_NAME, request)
|
50
|
-
MultiXml.parse(response)
|
77
|
+
parsed_response = MultiXml.parse(response)
|
78
|
+
user = parsed_response && parsed_response["GetUserResponse"] && parsed_response["GetUserResponse"]["User"]
|
79
|
+
|
80
|
+
if (!user)
|
81
|
+
raise EbayApiError.new("Failed to retrieve user info", request, response)
|
82
|
+
end
|
83
|
+
|
84
|
+
user
|
51
85
|
end
|
52
86
|
|
53
87
|
def ebay_login_url(session_id)
|
@@ -56,7 +90,7 @@ module EbayAPI
|
|
56
90
|
internal_return_to = request.params['internal_return_to'] || request.params[:internal_return_to]
|
57
91
|
url << "&ruparams=#{CGI::escape('internal_return_to=' + internal_return_to)}" if internal_return_to
|
58
92
|
|
59
|
-
|
93
|
+
url
|
60
94
|
end
|
61
95
|
|
62
96
|
protected
|
@@ -67,7 +101,7 @@ module EbayAPI
|
|
67
101
|
req = Net::HTTP::Post.new(url.path, headers)
|
68
102
|
http = Net::HTTP.new(url.host, url.port)
|
69
103
|
http.use_ssl = true
|
70
|
-
http.start { |
|
104
|
+
http.start { |h| h.request(req, request) }.body
|
71
105
|
end
|
72
106
|
|
73
107
|
def ebay_request_headers(call_name, request_length)
|
Binary file
|
Binary file
|
@@ -20,7 +20,9 @@ module OmniAuth
|
|
20
20
|
{
|
21
21
|
:ebay_id => raw_info['UserID'],
|
22
22
|
:ebay_token => @auth_token,
|
23
|
-
:email => raw_info['Email']
|
23
|
+
:email => raw_info['Email'],
|
24
|
+
:full_name => raw_info["RegistrationAddress"] && raw_info["RegistrationAddress"]["Name"],
|
25
|
+
:country => raw_info["RegistrationAddress"] && raw_info["RegistrationAddress"]["Country"]
|
24
26
|
}
|
25
27
|
end
|
26
28
|
|
@@ -36,7 +38,7 @@ module OmniAuth
|
|
36
38
|
def request_phase
|
37
39
|
session_id = generate_session_id
|
38
40
|
redirect ebay_login_url(session_id)
|
39
|
-
rescue
|
41
|
+
rescue => ex
|
40
42
|
fail!("Failed to retrieve session id from ebay", ex)
|
41
43
|
end
|
42
44
|
|
@@ -45,9 +47,9 @@ module OmniAuth
|
|
45
47
|
#6: Request the user info from eBay
|
46
48
|
def callback_phase
|
47
49
|
@auth_token = get_auth_token(request.params["username"], request.params["sid"])
|
48
|
-
@user_info = get_user_info(@auth_token)
|
50
|
+
@user_info = get_user_info(request.params["username"], @auth_token)
|
49
51
|
super
|
50
|
-
rescue
|
52
|
+
rescue => ex
|
51
53
|
fail!("Failed to retrieve user info from ebay", ex)
|
52
54
|
end
|
53
55
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-ebay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-03-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: omniauth
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '1.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: multi_xml
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: rspec
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '2.7'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.7'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rake
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: multi_xml
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: rack-test
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: '0'
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: vcr
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ! '>='
|
@@ -87,10 +117,15 @@ dependencies:
|
|
87
117
|
version: '0'
|
88
118
|
type: :development
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: fakeweb
|
93
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
130
|
requirements:
|
96
131
|
- - ! '>='
|
@@ -98,10 +133,15 @@ dependencies:
|
|
98
133
|
version: '0'
|
99
134
|
type: :development
|
100
135
|
prerelease: false
|
101
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
102
142
|
- !ruby/object:Gem::Dependency
|
103
143
|
name: capybara-mechanize
|
104
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
105
145
|
none: false
|
106
146
|
requirements:
|
107
147
|
- - ! '>='
|
@@ -109,7 +149,12 @@ dependencies:
|
|
109
149
|
version: '0'
|
110
150
|
type: :development
|
111
151
|
prerelease: false
|
112
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
113
158
|
description: In this gem you will find an OmniAuth eBay strategy that is compliant
|
114
159
|
with the Open eBay Apps API.
|
115
160
|
email:
|
@@ -127,6 +172,8 @@ files:
|
|
127
172
|
- lib/ebay_api.rb
|
128
173
|
- lib/omniauth-ebay.rb
|
129
174
|
- lib/omniauth-ebay/version.rb
|
175
|
+
- lib/omniauth/strategies/.ebay.rb.swo
|
176
|
+
- lib/omniauth/strategies/.ebay.rb.swp
|
130
177
|
- lib/omniauth/strategies/ebay.rb
|
131
178
|
- omniauth-ebay.gemspec
|
132
179
|
- spec/lib/ebay_api_spec.rb
|
@@ -152,8 +199,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
199
|
version: '0'
|
153
200
|
requirements: []
|
154
201
|
rubyforge_project: omniauth-ebay
|
155
|
-
rubygems_version: 1.8.
|
202
|
+
rubygems_version: 1.8.23
|
156
203
|
signing_key:
|
157
204
|
specification_version: 3
|
158
205
|
summary: OmniAuth strategy for eBay
|
159
|
-
test_files:
|
206
|
+
test_files:
|
207
|
+
- spec/lib/ebay_api_spec.rb
|
208
|
+
- spec/omniauth/strategies/ebay_spec.rb
|
209
|
+
- spec/spec_helper.rb
|