build signed parameters following http://docs.amazonwebservices.com/AmazonCloudWatch/latest/APIReference/API_PutMetricData.html
(self)
| 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() |