MCPcopy
hub / github.com/etsy/logster / get_signed_url

Method get_signed_url

logster/outputs/cloudwatch.py:72–92  ·  view source on GitHub ↗

build signed parameters following http://docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html

(self)

Source from the content-addressed store, hash-verified

70 return self
71
72 def get_signed_url(self):
73 """ build signed parameters following
74 http://docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html """
75 keys = sorted(self.url_params)
76 values = map(self.url_params.get, keys)
77 url_string = urlencode(list(zip(keys,values)))
78
79 string_to_sign = "GET\n%s\n/\n%s" % (self.base_url, url_string)
80 try:
81 if sys.version_info[:2] == (2, 5):
82 signature = hmac.new( key=self.secret_key, msg=string_to_sign, digestmod=hashlib.sha256).digest()
83 else:
84 signature = hmac.new( key=bytes(self.secret_key), msg=bytes(string_to_sign), digestmod=hashlib.sha256).digest()
85 except TypeError:
86 signature = hmac.new( key=self.secret_key.encode("utf-8"), msg=string_to_sign.encode("utf-8"), digestmod=hashlib.sha256).digest()
87
88 signature = base64.encodestring(signature).strip()
89 urlencoded_signature = quote_plus(signature)
90 url_string += "&Signature=%s" % urlencoded_signature
91
92 return "/?" + url_string
93
94 def put_data(self):
95 signedURL = self.set_params().get_signed_url()

Callers 2

setUpMethod · 0.80
put_dataMethod · 0.80

Calls

no outgoing calls

Tested by 1

setUpMethod · 0.64