Skip to content

Commit f167c25

Browse files
committed
Code refactored: unwanted kwargs passed
1 parent b5bf683 commit f167c25

File tree

1 file changed

+61
-88
lines changed

1 file changed

+61
-88
lines changed

osc_sdk/sdk.py

Lines changed: 61 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -147,15 +147,6 @@ def _set_datestamp(self):
147147
self.date = date.strftime('%Y%m%dT%H%M%SZ')
148148
self.datestamp = date.strftime('%Y%m%d')
149149

150-
def sign(self, key, msg):
151-
return hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest()
152-
153-
def get_signature_key(self, key, timestamp, region_name, service_name):
154-
key_date = self.sign((self.SIG_TYPE + key).encode('utf-8'), timestamp)
155-
key_region = self.sign(key_date, region_name)
156-
key_service = self.sign(key_region, service_name)
157-
return self.sign(key_service, self.REQUEST_TYPE)
158-
159150
def get_url(self, call, request_params=None):
160151
value = self.endpoint
161152
if self.method == 'GET':
@@ -165,9 +156,10 @@ def get_url(self, call, request_params=None):
165156
def get_canonical_uri(self, call):
166157
return CANONICAL_URI
167158

168-
def get_authorization_header(
169-
self, amz_date, credential_scope, canonical_request, signed_headers, timestamp
170-
):
159+
def get_authorization_header(self, canonical_request, signed_headers):
160+
credentials = [self.datestamp, self.region, self.API_NAME,
161+
self.REQUEST_TYPE]
162+
credential_scope = '/'.join(credentials)
171163
string_to_sign = '\n'.join(
172164
[
173165
self.SIG_ALGORITHM,
@@ -176,14 +168,20 @@ def get_authorization_header(
176168
hashlib.sha256(canonical_request.encode('utf-8')).hexdigest(),
177169
]
178170
)
179-
signing_key = self.get_signature_key(
180-
self.secret_key, timestamp, self.region, self.API_NAME
181-
)
182-
signature = hmac.new(
183-
signing_key, (string_to_sign).encode('utf-8'), hashlib.sha256
184-
).hexdigest()
185-
return '{} Credential={}/{}, SignedHeaders={}, Signature={}'.format(
186-
self.SIG_ALGORITHM, self.access_key, credential_scope, signed_headers, signature
171+
key = (self.SIG_TYPE + self.secret_key).encode('utf-8')
172+
for msg in credentials:
173+
key = hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest()
174+
signature = hmac.new(key,
175+
string_to_sign.encode('utf-8'),
176+
hashlib.sha256).hexdigest()
177+
178+
return (
179+
'{} Credential={}/{}, SignedHeaders={}, Signature={}'.format(
180+
self.SIG_ALGORITHM,
181+
self.access_key,
182+
credential_scope,
183+
signed_headers,
184+
signature)
187185
)
188186

189187
def get_response(self, request):
@@ -222,80 +220,62 @@ def make_request(self, call, *args, **kwargs):
222220
# Calculate URL before request_params value is modified
223221
url = self.get_url(call, request_params)
224222

225-
credential_scope = '/'.join(
226-
[self.datestamp, self.region, self.API_NAME, self.REQUEST_TYPE]
227-
)
228-
229223
if self.method == 'GET':
230-
canonical_headers = '\n'.join(
231-
['host:' + self.host, 'x-amz-date:' + self.date, '']
232-
)
233-
signed_headers = 'host;x-amz-date'
224+
headers = {
225+
'host': self.host,
226+
'x-amz-date': self.date,
227+
}
234228
payload_hash = hashlib.sha256(''.encode('utf-8')).hexdigest()
235-
canonical_request = '\n'.join(
236-
[
237-
self.method,
238-
self.get_canonical_uri(call),
239-
request_params,
240-
canonical_headers,
241-
signed_headers,
242-
payload_hash,
243-
]
244-
)
229+
canonical_params = request_params
245230
request_params = None
246231
else:
247-
amz_target = '{}_{}.{}'.format(
248-
self.API_NAME, datetime.date.today().strftime("%Y%m%d"), call
249-
)
250-
canonical_headers = (
251-
'content-type:{}\n'
252-
'host:{}\n'
253-
'x-amz-date:{}\n'
254-
'x-amz-target:{}\n'.format(
255-
self.CONTENT_TYPE, self.host, self.date, amz_target
256-
)
257-
)
258-
signed_headers = 'content-type;host;x-amz-date;x-amz-target'
259-
260-
payload_hash = hashlib.sha256(
261-
request_params.encode('utf-8')
262-
).hexdigest()
263-
canonical_request = '\n'.join(
264-
[
265-
self.method,
266-
self.get_canonical_uri(call),
267-
'',
268-
canonical_headers,
269-
signed_headers,
270-
payload_hash,
271-
]
232+
headers = {
233+
'content-type': self.CONTENT_TYPE,
234+
'host': self.host,
235+
'x-amz-date': self.date,
236+
'x-amz-target':
237+
'{}_{}.{}'.format(self.API_NAME,
238+
datetime.date.today().strftime('%Y%m%d'),
239+
call),
240+
}
241+
242+
payload_hash = (
243+
hashlib.sha256(request_params.encode('utf-8')).hexdigest()
272244
)
245+
canonical_params = ''
246+
247+
canonical_headers = ''.join('{}:{}\n'.format(k, v)
248+
for k, v in headers.items())
249+
signed_headers = ';'.join(headers)
250+
canonical_request = '\n'.join(
251+
[
252+
self.method,
253+
self.get_canonical_uri(call),
254+
canonical_params,
255+
canonical_headers,
256+
signed_headers,
257+
payload_hash,
258+
]
259+
)
273260

274261
authorization_header = self.get_authorization_header(
275-
self.date,
276-
credential_scope,
277262
canonical_request,
278263
signed_headers,
279-
self.datestamp,
280264
)
281265

282-
headers = {
266+
headers.update({
283267
'Authorization': authorization_header,
284-
'x-amz-date': self.date,
285268
'User-agent': USER_AGENT,
286-
}
287-
if self.method == 'POST':
288-
headers['content-type'] = self.CONTENT_TYPE
289-
headers['x-amz-target'] = amz_target
290-
291-
self.response = self.get_response(
292-
requests.request(
293-
method=self.method,
294-
url=url,
295-
data=request_params,
296-
headers=headers,
297-
verify=self.ssl_verify,
298-
)
269+
})
270+
271+
self.response = (
272+
self.get_response(
273+
requests.request(
274+
data=request_params,
275+
headers=headers,
276+
method=self.method,
277+
url=url,
278+
verify=self.ssl_verify))
299279
)
300280

301281

@@ -375,10 +355,6 @@ def make_request(self, call, *args, **kwargs):
375355
request_params = self.get_parameters(kwargs, call)
376356
json_params = json.dumps(request_params)
377357

378-
credential_scope = '/'.join(
379-
[self.datestamp, self.region, self.API_NAME, self.REQUEST_TYPE]
380-
)
381-
382358
target = '.'.join([self.SERVICE, call])
383359

384360
signed_headers, canonical_headers, headers = self.build_headers(
@@ -400,11 +376,8 @@ def make_request(self, call, *args, **kwargs):
400376
or request_params['AuthenticationMethod'] == 'accesskey'
401377
):
402378
headers['Authorization'] = self.get_authorization_header(
403-
self.date,
404-
credential_scope,
405379
canonical_request,
406380
signed_headers,
407-
self.datestamp,
408381
)
409382

410383
self.response = self.get_response(

0 commit comments

Comments
 (0)