omniauth-ebay 0.0.3 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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 = <<-END
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
- END
28
+ )
19
29
 
20
30
  response = api(X_EBAY_API_GETSESSIONID_CALL_NAME, request)
21
- MultiXml.parse(response)["GetSessionIDResponse"]["SessionID"]
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 = <<-END
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
- END
50
+ )
34
51
 
35
52
  response = api(X_EBAY_API_FETCHAUTHTOKEN_CALL_NAME, request)
36
- MultiXml.parse(response)["FetchTokenResponse"]["eBayAuthToken"]
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 = <<-END
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
- END
74
+ )
48
75
 
49
76
  response = api(X_EBAY_API_GETUSER_CALL_NAME, request)
50
- MultiXml.parse(response)["GetUserResponse"]['User']
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
- return url
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 { |http| http.request(req, request) }.body
104
+ http.start { |h| h.request(req, request) }.body
71
105
  end
72
106
 
73
107
  def ebay_request_headers(call_name, request_length)
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module Ebay
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.8"
4
4
  end
5
5
  end
@@ -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 Exception => ex
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 Exception => ex
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.3
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: 2012-05-14 00:00:00.000000000Z
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: &11628860 !ruby/object:Gem::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: *11628860
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: &11628420 !ruby/object:Gem::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: *11628420
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: &11627820 !ruby/object:Gem::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: *11627820
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: &11627380 !ruby/object:Gem::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: *11627380
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: &11626920 !ruby/object:Gem::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: *11626920
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: &11626480 !ruby/object:Gem::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: *11626480
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: &11623000 !ruby/object:Gem::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: *11623000
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: &11622580 !ruby/object:Gem::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: *11622580
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: &11622160 !ruby/object:Gem::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: *11622160
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.17
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