summaryrefslogtreecommitdiffstats
path: root/examples/boto3/topic_attributes.py
blob: 3caeb1fec26a32637ba982544fffa12b7f7b7aeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import sys
import urllib
import hmac
import hashlib
import base64
import xmltodict
import http.client
from urllib import parse as urlparse
from time import gmtime, strftime

if len(sys.argv) == 2:
    # topic arn as first argument
    topic_arn = sys.argv[1]
else:
    print ('Usage: ' + sys.argv[0] + ' <topic arn> [region name]')
    sys.exit(1)

# endpoint and keys from vstart
endpoint = '127.0.0.1:8000'
access_key='0555b35654ad1656d804'
secret_key='h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q=='


parameters = {'Action': 'GetTopic', 'TopicArn': topic_arn}
body = urlparse.urlencode(parameters)
string_date = strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
content_type = 'application/x-www-form-urlencoded; charset=utf-8'
resource = '/'
method = 'POST'
string_to_sign = method + '\n\n' + content_type + '\n' + string_date + '\n' + resource 
signature = base64.b64encode(hmac.new(secret_key.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha1).digest()).decode('ascii')
headers = {'Authorization': 'AWS '+access_key+':'+signature,
                   'Date': string_date,
                   'Host': endpoint,
                   'Content-Type': content_type}
http_conn = http.client.HTTPConnection(endpoint)
http_conn.request(method, resource, body, headers)
response = http_conn.getresponse()
data = response.read()
status = response.status
http_conn.close()
dict_response = xmltodict.parse(data)

# getting attributes of a specific topic is an extension to AWS sns

print(dict_response, status)