Exemple #1
0
 private function getCanonicalizedResource(MOXMAN_Http_HttpClientRequest $request)
 {
     $query = array();
     $url = $request->getUrl();
     if (isset($url["query"])) {
         parse_str($url["query"], $query);
     }
     $query = array_change_key_case($query);
     $canonicalizedResource = '/' . $this->getContainerOption("account");
     $canonicalizedResource .= $url["path"];
     if (count($query) > 0) {
         ksort($query);
     }
     foreach ($query as $key => $value) {
         $values = explode(',', $value);
         sort($values);
         $separated = implode(',', $values);
         $canonicalizedResource .= "\n" . $key . ':' . $separated;
     }
     return $canonicalizedResource;
 }
Exemple #2
0
 /**
  * signRequest
  *
  * @param MOXMAN_Http_HttpClientRequest $request Request from HttpClient to sign.
  * @return MOXMAN_Http_HttpClientRequest HttpClient Request returned with right headers signed.
  */
 private function signRequest(MOXMAN_Http_HttpClientRequest $request)
 {
     $signData = array("Content-Encoding", "Content-Language", "Content-Length", "Content-MD5", "Content-Type", "Date", "If-Modified-Since", "If-Match", "If-None-Match", "If-Unmodified-Since", "Range");
     $signed = strtoupper($request->getMethod()) . "\n";
     foreach ($signData as $name) {
         $signed .= $request->getHeader($name) . "\n";
     }
     $request->setHeader("x-ms-date", gmdate('D, d M Y H:i:s T', time()));
     $request->setHeader("x-ms-version", "2009-09-19");
     foreach ($request->getHeaders() as $name => $val) {
         if (strpos($name, "x-ms-") === 0) {
             $signed .= $name . ":" . $val . "\n";
         }
     }
     $url = $request->getUrl();
     $signed .= "/" . $this->getContainerOption("account") . $url["path"];
     if (isset($url["query"])) {
         $queryParts = array();
         parse_str($url["query"], $queryParts);
         $keys = array_keys($queryParts);
         sort($keys);
         foreach ($keys as $key) {
             $signed .= "\n" . $key . ":" . $queryParts[$key];
         }
     }
     $hash = hash_hmac("sha256", $signed, base64_decode($this->getContainerOption("sharedkey")), true);
     $signature = base64_encode($hash);
     $request->setHeader("Authorization", "SharedKey " . $this->getContainerOption("account") . ":" . $signature);
     return $request;
 }
Exemple #3
0
 private function getCanonicalQuery(MOXMAN_Http_HttpClientRequest $request)
 {
     $url = $request->getUrl();
     // Generate Canonical query string
     $canonicalQuery = "";
     $query = array();
     parse_str(isset($url["query"]) ? $url["query"] : "", $query);
     uksort($query, "strcmp");
     foreach ($query as $key => $value) {
         if ($canonicalQuery) {
             $canonicalQuery .= "&";
         }
         $canonicalQuery .= $this->uriEncode($key) . "=" . $this->uriEncode($value);
     }
     return $canonicalQuery;
 }