X-Git-Url: http://git.joshuawise.com/patchfork.git/blobdiff_plain/11c37741edb9fd05951e7a936d86e773b1fe6a6f..6f0e4e7cff60c5fc5a27b38e9b02330c88d71ec2:/player/aws_signed_request.php diff --git a/player/aws_signed_request.php b/player/aws_signed_request.php new file mode 100644 index 0000000..5c685a9 --- /dev/null +++ b/player/aws_signed_request.php @@ -0,0 +1,95 @@ +"ItemLookup", + "ItemId"=>"B000X9FLKM", "ResponseGroup"=>"Small") + $public_key - your "Access Key ID" + $private_key - your "Secret Access Key" + */ + + // some paramters + $method = "GET"; + $host = "ecs.amazonaws.".$region; + $uri = "/onca/xml"; + + // additional parameters + $params["Service"] = "AWSECommerceService"; + $params["AWSAccessKeyId"] = $public_key; + // GMT timestamp + $params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z"); + // API version + $params["Version"] = "2009-03-31"; + + // sort the parameters + ksort($params); + + // create the canonicalized query + $canonicalized_query = array(); + foreach ($params as $param=>$value) + { + $param = str_replace("%7E", "~", rawurlencode($param)); + $value = str_replace("%7E", "~", rawurlencode($value)); + $canonicalized_query[] = $param."=".$value; + } + $canonicalized_query = implode("&", $canonicalized_query); + + // create the string to sign + $string_to_sign = $method."\n".$host."\n".$uri."\n".$canonicalized_query; + + // calculate HMAC with SHA256 and base64-encoding + $signature = base64_encode(hash_hmac("sha256", $string_to_sign, $private_key, True)); + + // encode the signature for the request + $signature = str_replace("%7E", "~", rawurlencode($signature)); + + // create request + $request = "http://".$host.$uri."?".$canonicalized_query."&Signature=".$signature; + + // do request + $response = @file_get_contents($request); + + if ($response === False) + { + return False; + } + else + { + // parse XML + $pxml = simplexml_load_string($response); + if ($pxml === False) + { + return False; // no xml + } + else + { + return $pxml; + } + } +} +?>