Пример #1
0
 /**
  * {@inheritdoc}
  */
 public function valid()
 {
     if (!isset($this->result[$this->offset]) && $this->offset < $this->max) {
         ++$this->current;
         $url = preg_replace('/page=[0-9]+/', 'page=' . $this->current, $this->url);
         $result = $this->client->request($this->method, $url, $this->params);
         $this->result = array_merge($this->result, $result[$this->key]);
         return true;
     }
     return $this->offset < $this->max;
 }
Пример #2
0
 public function message_put($proxy_at, $from, $body, $srv_addr, $srv_at, $mod_params)
 {
     $channelId = 1;
     $priority = 100;
     $text = $body;
     $url = 'http://botq.localhost/api/textMessage/' . $channelId . '/' . $priority . '/' . urlencode($text);
     $hc = new \HttpClient();
     $hc->request($url);
 }
Пример #3
0
 protected function _checkUser()
 {
     if (fnGet($this->input, 'access_token') == '') {
         $this->_ajaxReturn(array('error_code' => '600020', 'error_msg' => '参数[access_token]不能为空'), 400);
     }
     // 设置当前用户和客户端
     $this->session->setUser($user = new User())->setClient($client = new Client());
     $passportConfig = $this->config->get("api.passport");
     // 尝试从缓存获取 userInfo
     if ($this->_userInfo = S($cacheKey = 'access_token_info.' . fnGet($this->input, 'access_token'))) {
         $user->find(fnGet($this->_userInfo, 'user_id'));
         $client->find(fnGet($this->_userInfo, 'client_id'));
         return;
     }
     // 向 passport 请求 userInfo
     $time = time();
     $url = str_replace('internal-resource/user-info?', '', $passportConfig->passportUrl) . 'internal-resource/user-info';
     $params = array('access_token' => fnGet($this->input, 'access_token'), 'app' => $passportConfig->passportApp, 'time' => $time);
     $sign = md5(implode('', $params) . $passportConfig->passportSecret);
     $params['sign'] = $sign;
     $http = new HttpClient();
     $response = $http->request($url, $params);
     $data = json_decode($response, true);
     if (fnGet($data, 'id')) {
         //检测用户是否已经保存
         $user->getByUsername($username = fnGet($data, 'username'));
         if (!($userId = $user->getId()) || !$user->getData('passport_id') || $user->getData('mobile') != fnGet($data, 'mobile')) {
             $user->addData(array('username' => $username, 'email' => fnGet($data, 'email'), 'mobile' => fnGet($data, 'mobile'), 'passport_id' => fnGet($data, 'passport_id'), 'avatar' => fnGet($data, 'avatar'), 'nickname' => fnGet($data, 'nickname')));
             $user->save();
             $userId = $user->getId();
         }
         //检测客户端是否已经保存
         $client->getByAppId($appId = fnGet($data, 'client_info/id'));
         if (!($clientId = $client->getId()) || $client->getScopes() != fnGet($data, 'client_info/scopes')) {
             $client->addData(array('client' => $appId, 'name' => fnGet($data, 'client_info/name'), 'app_secret' => fnGet($data, 'client_info/secret'), 'developerurl' => fnGet($data, 'client_info/endpoint'), 'scopes' => fnGet($data, 'client_info/scopes')));
             $client->save();
             $clientId = $client->getId();
         }
         $this->_userInfo = array('user_id' => $userId, 'client_id' => $clientId, 'username' => $username, 'session_data' => fnGet($data, 'session_data'));
         S($cacheKey, $this->_userInfo, 3600);
         return;
     }
     $this->_ajaxReturn(array('error_code' => '600020', 'error_msg' => '用户无效'), 400);
 }
Пример #4
0
 function post($host, $data, $timeout = 5)
 {
     return HttpClient::request($host, $data, 'POST', $timeout);
 }
 /**
  * send request to Smartling Service
  *
  * @param string $uri
  * @param array $requestData
  * @param string $method
  * @return string
  */
 protected function sendRequest($uri, $requestData, $method, $needUploadFile = false, $needUploadContent = false)
 {
     $connection = new HttpClient($this->_baseUrl . "/" . $uri, 443);
     $data['apiKey'] = $this->_apiKey;
     $data['projectId'] = $this->_projectId;
     $request = array_replace_recursive($data, $requestData);
     $connection->setMethod($method)->setNeedUploadFile($needUploadFile)->setNeedUploadContent($needUploadContent);
     if ($res = $connection->request($request)) {
         return $this->_response = $connection->getContent();
     } else {
         return new Exception("Can't connect to server");
     }
 }
Пример #6
0
 /**
  * Set Google authentication credentials.
  * Must be done before trying to do any Google Data operations that
  * require authentication.
  * For example, viewing private data, or posting or deleting entries.
  *
  * @param string $email
  * @param string $password
  * @param string $service
  * @param \Zend\GData\HttpClient $client
  * @param string $source
  * @param string $loginToken The token identifier as provided by the server.
  * @param string $loginCaptcha The user's response to the CAPTCHA challenge.
  * @param string $accountType An optional string to identify whether the
  * account to be authenticated is a google or a hosted account. Defaults to
  * 'HOSTED_OR_GOOGLE'. See: http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html#Request
  * @throws \Zend\GData\App\AuthException
  * @throws \Zend\GData\App\HttpException
  * @throws \Zend\GData\App\CaptchaRequiredException
  * @return \Zend\GData\HttpClient
  */
 public static function getHttpClient($email, $password, $service = 'xapi', $client = null, $source = self::DEFAULT_SOURCE, $loginToken = null, $loginCaptcha = null, $loginUri = self::CLIENTLOGIN_URI, $accountType = 'HOSTED_OR_GOOGLE')
 {
     if (!($email && $password)) {
         throw new App\AuthException('Please set your Google credentials before trying to ' . 'authenticate');
     }
     if ($client == null) {
         $client = new HttpClient();
     }
     if (!$client instanceof \Zend\Http\Client) {
         throw new App\HttpException('Client is not an instance of Zend\\Http\\Client.');
     }
     // Build the HTTP client for authentication
     $client->setUri($loginUri);
     $useragent = $source . ' Zend_Framework_Gdata/' . \Zend\Version::VERSION;
     $client->setConfig(array('maxredirects' => 0, 'strictredirects' => true, 'useragent' => $useragent));
     $client->setParameterPost('accountType', $accountType);
     $client->setParameterPost('Email', (string) $email);
     $client->setParameterPost('Passwd', (string) $password);
     $client->setParameterPost('service', (string) $service);
     $client->setParameterPost('source', (string) $source);
     if ($loginToken || $loginCaptcha) {
         if ($loginToken && $loginCaptcha) {
             $client->setParameterPost('logintoken', (string) $loginToken);
             $client->setParameterPost('logincaptcha', (string) $loginCaptcha);
         } else {
             throw new App\AuthException('Please provide both a token ID and a user\'s response ' . 'to the CAPTCHA challenge.');
         }
     }
     // Send the authentication request
     // For some reason Google's server causes an SSL error. We use the
     // output buffer to supress an error from being shown. Ugly - but works!
     ob_start();
     try {
         $response = $client->request('POST');
     } catch (\Zend\Http\Client\Exception $e) {
         throw new App\HttpException($e->getMessage(), $e);
     }
     ob_end_clean();
     // Parse Google's response
     $goog_resp = array();
     foreach (explode("\n", $response->getBody()) as $l) {
         $l = rtrim($l);
         if ($l) {
             list($key, $val) = explode('=', rtrim($l), 2);
             $goog_resp[$key] = $val;
         }
     }
     if ($response->getStatus() == 200) {
         $client->setClientLoginToken($goog_resp['Auth']);
         $useragent = $source . ' Zend_Framework_Gdata/' . \Zend\Version::VERSION;
         $client->setConfig(array('strictredirects' => true, 'useragent' => $useragent));
         return $client;
     } elseif ($response->getStatus() == 403) {
         // Check if the server asked for a CAPTCHA
         if (array_key_exists('Error', $goog_resp) && $goog_resp['Error'] == 'CaptchaRequired') {
             throw new App\CaptchaRequiredException($goog_resp['CaptchaToken'], $goog_resp['CaptchaUrl']);
         } else {
             throw new App\AuthException('Authentication with Google failed. Reason: ' . (isset($goog_resp['Error']) ? $goog_resp['Error'] : 'Unspecified.'));
         }
     }
 }
 /**
  * {@inheritdoc}
  */
 public function request($method, $path, $body = null, array $options = [])
 {
     $authorizationHeader = $this->isTokenAuthentication() ? $this->getTokenAuthorizationString() : $this->getBasicAuthorizationString();
     $options = array_merge_recursive(['headers' => ['Authorization' => $authorizationHeader]], $options);
     return $this->httpClient->request($method, $path, $body, $options);
 }
Пример #8
0
 protected function get($uri, $params = array())
 {
     $params = array_merge($params, array('from' => $this->getFrom(), 'user' => $this->getUser(), 'pass' => $this->getPass()));
     $url = self::ENDPOINT . $uri . '?' . http_build_query($params);
     $httpClient = $this->getHttpClient();
     if (null === $httpClient) {
         $httpClient = new HttpClient();
     }
     return $httpClient->request($url);
 }