4
4
5
5
from __future__ import absolute_import
6
6
7
- import json
8
7
import logging
9
8
10
9
import requests
@@ -96,9 +95,8 @@ def __init__(self, **kwargs):
96
95
raise UnexpectedKwargsError (kwargs )
97
96
98
97
if self .credentials :
99
- self .session .headers = self ._apply_credentials (
100
- self .session .headers , self .credentials
101
- )
98
+ self ._apply_credentials (
99
+ self .credentials , self .session .headers )
102
100
103
101
def __repr__ (self ):
104
102
for k in self .kwargs .get ('headers' , {}):
@@ -118,25 +116,23 @@ def __repr__(self):
118
116
)
119
117
120
118
@staticmethod
121
- def _apply_credentials (headers , credentials ):
119
+ def _apply_credentials (credentials , headers ):
122
120
"""Update Authorization header.
123
121
124
122
Update request headers with latest `access_token`. Perform token
125
123
`refresh` if token is ``None``.
126
124
127
125
Args:
128
- headers (dict): Request headers.
129
126
credentials (class): Read-only credentials.
130
-
131
- Returns:
132
- dict: Updated request headers.
127
+ headers (class): Requests `CaseInsensitiveDict`.
133
128
134
129
"""
135
130
token = credentials .get_credentials ().access_token
136
131
if token is None :
137
132
token = credentials .refresh (access_token = None , timeout = 10 )
138
- headers ['Authorization' ] = "Bearer {}" .format (token )
139
- return headers
133
+ headers .update (
134
+ {'Authorization' : "Bearer {}" .format (token )}
135
+ )
140
136
141
137
def _default_headers (self ):
142
138
"""Update default headers.
@@ -215,22 +211,22 @@ def request(self, **kwargs):
215
211
verify = kwargs .pop ('verify' , None )
216
212
217
213
# Non-Requests key-word arguments
218
- auto_refresh = kwargs .pop ('auto_refresh' , None ) or self .auto_refresh
219
- auto_retry = kwargs .pop ('auto_retry' , None ) or self .auto_retry
220
- credentials = kwargs .pop (
221
- 'credentials' , None ) or self .credentials
214
+ auto_refresh = kwargs .pop ('auto_refresh' , self .auto_refresh )
215
+ auto_retry = kwargs .pop ('auto_retry' , self .auto_retry )
216
+ credentials = kwargs .pop ('credentials' , None )
222
217
enforce_json = kwargs .pop ('enforce_json' , self .enforce_json )
223
218
path = kwargs .pop ('path' , '' ) # default to empty path
224
219
raise_for_status = kwargs .pop (
225
220
'raise_for_status' , self .raise_for_status
226
221
)
227
222
url = "{}:{}{}" .format (url , self .port , path )
228
223
229
- if credentials and not headers :
230
- headers = self ._apply_credentials (
231
- self .session .headers , credentials )
232
- elif credentials and headers :
233
- headers = self ._apply_credentials (headers , credentials )
224
+ if credentials :
225
+ if headers is None :
226
+ headers = self .session .headers .copy ()
227
+ self ._apply_credentials (credentials , headers )
228
+ else :
229
+ credentials = self .credentials
234
230
235
231
k = { # Re-pack kwargs to dictionary
236
232
'params' : params or self .session .params ,
@@ -260,21 +256,16 @@ def request(self, **kwargs):
260
256
261
257
# Prepare and send the Request() and return Response()
262
258
try :
263
- if credentials :
264
- if credentials .cache_token :
265
- h = self ._apply_credentials (
266
- k ['headers' ], credentials )
267
- k ['headers' ] = h
268
259
r = self ._send_request (
269
260
enforce_json , method , raise_for_status , url , ** k
270
261
)
271
262
if r .status_code == 401 :
272
263
if credentials and auto_refresh :
273
264
token = credentials .get_credentials ().access_token
274
265
credentials .refresh (access_token = token , timeout = 10 )
275
- h = self ._apply_credentials (
276
- k [ 'headers' ], credentials )
277
- k [ 'headers' ] = h
266
+ self ._apply_credentials (
267
+ credentials , headers or self . session . headers
268
+ )
278
269
if auto_retry :
279
270
r = self ._send_request (
280
271
enforce_json , method , raise_for_status , url ,
0 commit comments