diff php/read/aws_signed_request.php @ 6:077b0a0a3e6d

remaining originals according to dependency walk
author Robert Boland <robert@markup.co.uk>
date Thu, 16 Feb 2017 22:29:02 +0000
parents
children 2c0c95bd97a6
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/php/read/aws_signed_request.php	Thu Feb 16 22:29:02 2017 +0000
@@ -0,0 +1,106 @@
+<?php
+
+//20090627/Jaap van Ganswijk: This is a modified version, see the
+//return statement some lines before the end of the last function.
+
+if (!function_exists("aws_signed_request")) {
+function aws_signed_request($region, $params, $public_key, $private_key)
+{
+    /*
+    Copyright (c) 2009 Ulrich Mierendorff
+
+    Permission is hereby granted, free of charge, to any person obtaining a
+    copy of this software and associated documentation files (the "Software"),
+    to deal in the Software without restriction, including without limitation
+    the rights to use, copy, modify, merge, publish, distribute, sublicense,
+    and/or sell copies of the Software, and to permit persons to whom the
+    Software is furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+    DEALINGS IN THE SOFTWARE.
+    */
+    
+    /*
+    Parameters:
+        $region - the Amazon(r) region (ca,com,co.uk,de,fr,jp)
+        $params - an array of parameters, eg. array("Operation"=>"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"] = "2011-08-01";
+    
+    // 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;
+
+//20090627 and 20090804/Jaap van Ganswijk: I added the next lines
+//and commented out the others to prevent getting the file and
+//interpreting the XML because my script likes to do that itself.
+    
+    return $request;
+
+//  // 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;
+//      }
+//  }
+}
+}
+?>