Пример #1
0
 /**
  * download a media
  * @param string $filename - file for downloading to
  * @param string $mediaId - mediaId of file
  * @param bool $https(optional default true) - if downloading video-type file, 
  *		set $https to false for http request
  * @return int - filesize of the media or string - json for error message(if error)
  */
 public function download($filename, $mediaId, $https = true)
 {
     if ($https) {
         $client = new HttpClient("https://api.weixin.qq.com/cgi-bin/media/get?access_token={$this->access_token}&media_id={$mediaId}");
     } else {
         $client = new HttpClient("http://api.weixin.qq.com/cgi-bin/media/get?access_token={$this->access_token}&media_id={$mediaId}");
     }
     $client->get();
     if ($client->getState() == 200) {
         if (!is_null(json_decode($client->getResponse()))) {
             //data of json format(error here)
             return $client->getResponse();
         } else {
             file_put_contents($filename, $client->getResponse());
             return filesize($filename);
         }
     } else {
         return false;
     }
 }
Пример #2
0
 /**
  * call an api endpoint. automatically adds needed authorization headers with access token or parameters
  *
  * @param string $endpoint
  * @param string $method default 'GET'
  * @param array $uriParameters optional
  * @param mixed $postBody optional, can be string or array
  * @param array $additionalHeaders
  * @return string
  */
 public function callApiEndpoint($endpoint, $method = 'GET', array $uriParameters = array(), $postBody = null, array $additionalHeaders = array())
 {
     $token = $this->_dataStore->retrieveAccessToken();
     //check if token is invalid
     if ($token->getLifeTime() && $token->getLifeTime() < time()) {
         $token = $this->refreshAccessToken($token);
     }
     $parameters = null;
     $authorizationMethod = $this->_configuration->getAuthorizationMethod();
     switch ($authorizationMethod) {
         case Service\Configuration::AUTHORIZATION_METHOD_HEADER:
             $additionalHeaders = array_merge(array('Authorization: OAuth ' . $token->getAccessToken()), $additionalHeaders);
             break;
         case Service\Configuration::AUTHORIZATION_METHOD_ALTERNATIVE:
             if ($method !== 'GET') {
                 if (is_array($postBody)) {
                     $postBody['oauth_token'] = $token->getAccessToken();
                 } else {
                     $postBody .= '&oauth_token=' . urlencode($token->getAccessToken());
                 }
             } else {
                 $uriParameters['oauth_token'] = $token->getAccessToken();
             }
             break;
         default:
             throw new Exception("Invalid authorization method specified");
             break;
     }
     if ($method !== 'GET') {
         if (is_array($postBody)) {
             $parameters = http_build_query($postBody);
         } else {
             $parameters = $postBody;
         }
     }
     if (!empty($uriParameters)) {
         $endpoint .= (strpos($endpoint, '?') !== false ? '&' : '?') . http_build_query($uriParameters);
     }
     $http = new HttpClient($endpoint, $method, $parameters, $additionalHeaders);
     $http->execute();
     return $http->getResponse();
 }