· 4 years ago · Feb 03, 2021, 06:22 AM
1 def status(self) :
2
3 params = {
4 'status' : 'hola'
5 }
6
7 headers = {
8 'authorization' : 'OAuth',
9 'oauth_consumer_key' : os.getenv("API_KEY"),
10 'oauth_nonce' : str(secrets.token_hex(16)),
11 'oauth_signature_method' : 'HMAC-SHA1',
12 'oauth_timestamp' : str(int(time.time())),
13 'oauth_token' : os.getenv('ACCESS_TOKEN'),
14 'oauth_version' : '1.0'
15
16 }
17
18 signature_key = self.get_signature('POST', self.status_endpoint, headers)
19
20 headers['oauth_signature'] = (signature_key)
21
22 res = requests.post('https://api.twitter.com/1.1/statuses/update.json', headers = headers, data=params)
23
24 print(res.json())
25
26
27
28
29 def get_signature(self, method, url, headers) :
30
31 for key, value in headers.items() :
32 key = parse.quote(key, safe='')
33 value = parse.quote(value, safe='')
34
35 print(key, value)
36
37
38 headers = dict(sorted(headers.items(), key = lambda item : item[0]))
39
40 param_string = ''
41
42 for key, value in headers.items() :
43 param_string += f'{key}={value}&'
44
45 param_string = param_string[:-1]
46
47 signature_base_string = f'{method}&{parse.quote(url, safe="")}&{parse.quote(param_string, safe="")}'
48 print(signature_base_string)
49
50 signing_key = parse.quote(os.getenv('API_SECRET'), safe='') + '&' + parse.quote(os.getenv('ACCESS_TOKEN_SECRET'), safe='')
51
52 print(signing_key)
53
54 sig_key = hmac.new(bytearray(signing_key, 'utf-8'), bytearray(param_string, 'utf-8'), sha1)
55
56 print(base64.b64encode(sig_key.digest()))
57
58 return base64.b64encode(sig_key.digest())
59