Skip to content

Commit 4045561

Browse files
kennethkoontzmaxcountryman
authored andcommitted
expose auth responses
1 parent c5695f4 commit 4045561

File tree

4 files changed

+47
-5
lines changed

4 files changed

+47
-5
lines changed

AUTHORS.md

+1
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,5 @@ Add yourself as a contributor!
3333
* [Kieron Briggs](https://github.com/kbriggs)
3434
* [Tatsuji Tsuchiya](https://github.com/ta2xeo)
3535
* [Chris McGraw](https://github.com/mitgr81)
36+
* [Ken Koontz](https://github.com/kennethkoontz)
3637
* (your name here)

rauth/service.py

+33-5
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,10 @@ def __init__(self,
156156
#: Object used to construct signatures with.
157157
self.signature_obj = signature_obj
158158

159+
#: Request and access token responses.
160+
self.request_token_response = None
161+
self.access_token_response = None
162+
159163
super(OAuth1Service, self).__init__(name,
160164
base_url,
161165
authorize_url)
@@ -206,7 +210,10 @@ def get_raw_request_token(self, method='GET', **kwargs):
206210
raise TypeError('request_token_url must not be None')
207211

208212
session = self.get_session()
209-
return session.request(method, self.request_token_url, **kwargs)
213+
self.request_token_response = session.request(method,
214+
self.request_token_url,
215+
**kwargs)
216+
return self.request_token_response
210217

211218
def get_request_token(self,
212219
method='GET',
@@ -279,7 +286,10 @@ def get_raw_access_token(self,
279286
raise TypeError('access_token_url must not be None')
280287

281288
session = self.get_session((request_token, request_token_secret))
282-
return session.request(method, self.access_token_url, **kwargs)
289+
self.access_token_response = session.request(method,
290+
self.access_token_url,
291+
**kwargs)
292+
return self.access_token_response
283293

284294
def get_access_token(self,
285295
request_token,
@@ -347,7 +357,14 @@ def get_auth_session(self,
347357
request_token_secret,
348358
method=method,
349359
**kwargs)
350-
return self.get_session(token)
360+
session = self.get_session(token)
361+
362+
if self.request_token_response:
363+
session.request_token_response = self.request_token_response
364+
if self.access_token_response:
365+
session.access_token_response = self.access_token_response
366+
367+
return session
351368

352369

353370
class OAuth2Service(Service):
@@ -435,6 +452,9 @@ def __init__(self,
435452
#: Object used to construct sessions with.
436453
self.session_obj = session_obj or OAuth2Session
437454

455+
#: Access token response.
456+
self.access_token_response = None
457+
438458
super(OAuth2Service, self).__init__(name,
439459
base_url,
440460
authorize_url)
@@ -493,7 +513,10 @@ def get_raw_access_token(self, method='POST', **kwargs):
493513
'client_secret': self.client_secret})
494514

495515
session = self.get_session()
496-
return session.request(method, self.access_token_url, **kwargs)
516+
self.access_token_response = session.request(method,
517+
self.access_token_url,
518+
**kwargs)
519+
return self.access_token_response
497520

498521
def get_access_token(self,
499522
method='POST',
@@ -530,7 +553,12 @@ def get_auth_session(self, method='POST', **kwargs):
530553
:param \*\*kwargs: Optional arguments. Same as Requests.
531554
:type \*\*kwargs: dict
532555
'''
533-
return self.get_session(self.get_access_token(method, **kwargs))
556+
session = self.get_session(self.get_access_token(method, **kwargs))
557+
558+
if self.access_token_response:
559+
session.access_token_response = self.access_token_response
560+
561+
return session
534562

535563

536564
class OflyService(Service):

tests/test_service_oauth1.py

+7
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,13 @@ def test_get_auth_session(self):
308308
s = self.service.get_auth_session('foo', 'bar')
309309
self.assertIsInstance(s, OAuth1Session)
310310

311+
def test_get_auth_session_with_request_token_response(self):
312+
resp = 'oauth_token=foo&oauth_token_secret=bar'
313+
self.response.content = resp
314+
self.service.request_token_response = 'ok'
315+
s = self.service.get_auth_session('foo', 'bar')
316+
self.assertEqual(s.request_token_response, 'ok')
317+
311318
def test_pickle_session(self):
312319
session = pickle.loads(pickle.dumps(self.session))
313320

tests/test_service_oauth2.py

+6
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,12 @@ def test_get_auth_session(self):
138138
s = self.service.get_auth_session()
139139
self.assertIsInstance(s, OAuth2Session)
140140

141+
def test_get_auth_session_with_access_token_response(self):
142+
self.response.content = \
143+
'access_token=123&expires_in=3600&refresh_token=456'
144+
s = self.service.get_auth_session()
145+
self.assertIsNotNone(s.access_token_response)
146+
141147
def test_pickle_session(self):
142148
session = pickle.loads(pickle.dumps(self.session))
143149

0 commit comments

Comments
 (0)