annotate php/read/aws_signed_request.php @ 39:2c0c95bd97a6

pass char for log lines in to doAmazonRequest, move static arrays to aws_s_r
author Charlie Root
date Fri, 04 Jan 2019 18:03:24 -0500
parents 077b0a0a3e6d
children dbc006408d2b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
1 <?php
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
2
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
3 //20090627/Jaap van Ganswijk: This is a modified version, see the
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
4 //return statement some lines before the end of the last function.
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
5
39
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
6
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
7 $Aassociates_id=array(
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
8 'uk' => 'bookwhack-21',
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
9 'us' => 'your02b-20',
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
10 'ca' => 'book009-20',
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
11 'de' => 'book04c-21',
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
12 'fr' => 'book07f-21',
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
13 );
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
14
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
15 $Aserver=array(
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
16 'ca' => array(
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
17 'ext' => 'ca' , //Canadian normal server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
18 'nor' => 'http://www.amazon.ca' , //Canadian normal server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
19 'xml' => 'http://xml.amazon.com' , //Canadian xml server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
20 ),
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
21 'de' => array(
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
22 'ext' => 'de' , //German normal server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
23 'nor' => 'http://www.amazon.de' , //German normal server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
24 'xml' => 'http://xml-eu.amazon.com', //German xml server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
25 ),
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
26 'fr' => array(
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
27 'ext' => 'fr' , //French normal server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
28 'nor' => 'http://www.amazon.fr' , //French normal server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
29 'xml' => 'http://xml-eu.amazon.com', //French xml server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
30 ),
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
31 'jp' => array(
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
32 'ext' => 'jp' , //Japanese normal server, not co.jp!
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
33 'nor' => 'http://www.amazon.co.jp' , //Japanese normal server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
34 'xml' => 'http://xml.amazon.com' , //Japanese xml server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
35 ),
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
36 'uk' => array(
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
37 'ext' => 'co.uk' , //UK normal server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
38 'nor' => 'http://www.amazon.co.uk' , //UK normal server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
39 'xml' => 'http://xml-eu.amazon.com', //UK xml server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
40 ),
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
41 'us' => array(
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
42 'ext' => 'com' , //USA normal server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
43 'nor' => 'http://www.amazon.com' , //USA normal server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
44 'xml' => 'http://xml.amazon.com' , //USA xml server
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
45 ),
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
46 );
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
47
2c0c95bd97a6 pass char for log lines in to doAmazonRequest,
Charlie Root
parents: 6
diff changeset
48
6
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
49 if (!function_exists("aws_signed_request")) {
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
50 function aws_signed_request($region, $params, $public_key, $private_key)
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
51 {
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
52 /*
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
53 Copyright (c) 2009 Ulrich Mierendorff
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
54
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
55 Permission is hereby granted, free of charge, to any person obtaining a
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
56 copy of this software and associated documentation files (the "Software"),
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
57 to deal in the Software without restriction, including without limitation
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
58 the rights to use, copy, modify, merge, publish, distribute, sublicense,
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
59 and/or sell copies of the Software, and to permit persons to whom the
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
60 Software is furnished to do so, subject to the following conditions:
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
61
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
62 The above copyright notice and this permission notice shall be included in
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
63 all copies or substantial portions of the Software.
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
64
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
65 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
66 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
67 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
68 THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
69 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
70 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
71 DEALINGS IN THE SOFTWARE.
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
72 */
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
73
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
74 /*
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
75 Parameters:
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
76 $region - the Amazon(r) region (ca,com,co.uk,de,fr,jp)
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
77 $params - an array of parameters, eg. array("Operation"=>"ItemLookup",
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
78 "ItemId"=>"B000X9FLKM", "ResponseGroup"=>"Small")
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
79 $public_key - your "Access Key ID"
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
80 $private_key - your "Secret Access Key"
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
81 */
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
82
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
83 // some paramters
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
84 $method = "GET";
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
85 $host = "ecs.amazonaws.".$region;
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
86 $uri = "/onca/xml";
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
87
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
88 // additional parameters
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
89 $params["Service"] = "AWSECommerceService";
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
90 $params["AWSAccessKeyId"] = $public_key;
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
91 // GMT timestamp
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
92 $params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z");
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
93 // API version
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
94 $params["Version"] = "2011-08-01";
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
95
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
96 // sort the parameters
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
97 ksort($params);
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
98
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
99 // create the canonicalized query
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
100 $canonicalized_query = array();
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
101 foreach ($params as $param=>$value)
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
102 {
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
103 $param = str_replace("%7E", "~", rawurlencode($param));
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
104 $value = str_replace("%7E", "~", rawurlencode($value));
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
105 $canonicalized_query[] = $param."=".$value;
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
106 }
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
107 $canonicalized_query = implode("&", $canonicalized_query);
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
108
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
109 // create the string to sign
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
110 $string_to_sign = $method."\n".$host."\n".$uri."\n".$canonicalized_query;
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
111
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
112 // calculate HMAC with SHA256 and base64-encoding
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
113 $signature = base64_encode(hash_hmac("sha256", $string_to_sign, $private_key, True));
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
114
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
115 // encode the signature for the request
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
116 $signature = str_replace("%7E", "~", rawurlencode($signature));
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
117
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
118 // create request
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
119 $request = "http://".$host.$uri."?".$canonicalized_query."&Signature=".$signature;
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
120
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
121 //20090627 and 20090804/Jaap van Ganswijk: I added the next lines
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
122 //and commented out the others to prevent getting the file and
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
123 //interpreting the XML because my script likes to do that itself.
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
124
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
125 return $request;
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
126
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
127 // // do request
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
128 // $response = @file_get_contents($request);
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
129 //
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
130 // if ($response === False)
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
131 // {
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
132 // return False;
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
133 // }
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
134 // else
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
135 // {
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
136 // // parse XML
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
137 // $pxml = simplexml_load_string($response);
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
138 // if ($pxml === False)
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
139 // {
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
140 // return False; // no xml
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
141 // }
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
142 // else
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
143 // {
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
144 // return $pxml;
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
145 // }
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
146 // }
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
147 }
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
148 }
077b0a0a3e6d remaining originals according to dependency walk
Robert Boland <robert@markup.co.uk>
parents:
diff changeset
149 ?>