Example #1
0
 public function sign(W3TCG_Google_Http_Request $request)
 {
     $key = $this->client->getClassConfig($this, 'developer_key');
     if ($key) {
         $request->setQueryParam('key', $key);
     }
     return $request;
 }
 /**
  * @param $meta
  * @param $params
  * @return array|bool
  * @visible for testing
  */
 private function process()
 {
     $postBody = false;
     $contentType = false;
     $meta = $this->request->getPostBody();
     $meta = is_string($meta) ? json_decode($meta, true) : $meta;
     $uploadType = $this->getUploadType($meta);
     $this->request->setQueryParam('uploadType', $uploadType);
     $this->transformToUploadUrl();
     $mimeType = $this->mimeType ? $this->mimeType : $this->request->getRequestHeader('content-type');
     if (self::UPLOAD_RESUMABLE_TYPE == $uploadType) {
         $contentType = $mimeType;
         $postBody = is_string($meta) ? $meta : json_encode($meta);
     } else {
         if (self::UPLOAD_MEDIA_TYPE == $uploadType) {
             $contentType = $mimeType;
             $postBody = $this->data;
         } else {
             if (self::UPLOAD_MULTIPART_TYPE == $uploadType) {
                 // This is a multipart/related upload.
                 $boundary = $this->boundary ? $this->boundary : mt_rand();
                 $boundary = str_replace('"', '', $boundary);
                 $contentType = 'multipart/related; boundary=' . $boundary;
                 $related = "--{$boundary}\r\n";
                 $related .= "Content-Type: application/json; charset=UTF-8\r\n";
                 $related .= "\r\n" . json_encode($meta) . "\r\n";
                 $related .= "--{$boundary}\r\n";
                 $related .= "Content-Type: {$mimeType}\r\n";
                 $related .= "Content-Transfer-Encoding: base64\r\n";
                 $related .= "\r\n" . base64_encode($this->data) . "\r\n";
                 $related .= "--{$boundary}--";
                 $postBody = $related;
             }
         }
     }
     $this->request->setPostBody($postBody);
     if (isset($contentType) && $contentType) {
         $contentTypeHeader['content-type'] = $contentType;
         $this->request->setRequestHeaders($contentTypeHeader);
     }
 }
Example #3
0
 /**
  * Include an accessToken in a given apiHttpRequest.
  * @param W3TCG_Google_Http_Request $request
  * @return W3TCG_Google_Http_Request
  * @throws W3TCG_Google_Auth_Exception
  */
 public function sign(W3TCG_Google_Http_Request $request)
 {
     // add the developer key to the request before signing it
     if ($this->client->getClassConfig($this, 'developer_key')) {
         $request->setQueryParam('key', $this->client->getClassConfig($this, 'developer_key'));
     }
     // Cannot sign the request without an OAuth access token.
     if (null == $this->token && null == $this->assertionCredentials) {
         return $request;
     }
     // Check if the token is set to expire in the next 30 seconds
     // (or has already expired).
     if ($this->isAccessTokenExpired()) {
         if ($this->assertionCredentials) {
             $this->refreshTokenWithAssertion();
         } else {
             if (!array_key_exists('refresh_token', $this->token)) {
                 throw new W3TCG_Google_Auth_Exception("The OAuth 2.0 access token has expired," . " and a refresh token is not available. Refresh tokens" . " are not returned for responses that were auto-approved.");
             }
             $this->refreshToken($this->token['refresh_token']);
         }
     }
     // Add the OAuth2 header to the request
     $request->setRequestHeaders(array('Authorization' => 'Bearer ' . $this->token['access_token']));
     return $request;
 }