Ejemplo n.º 1
0
 public function __construct()
 {
     global $BOS_TEST_CONFIG;
     parent::__construct();
     $this->client = new BosClient($BOS_TEST_CONFIG);
     $this->logger = LogFactory::getLogger(get_class($this));
 }
Ejemplo n.º 2
0
 public function log($message, $priority = LOG_INFO, $extras = array())
 {
     // All guzzle logs should be DEBUG, regardless of its own priority.
     if (LogFactory::isDebugEnabled()) {
         $this->logger->log(LogLevel::DEBUG, $message, $extras);
     }
 }
Ejemplo n.º 3
0
 public static function setLogLevel($logLevel)
 {
     if (isset(LogFactory::$logLevelMapping[$logLevel])) {
         LogFactory::$logLevel = LogFactory::$logLevelMapping[$logLevel];
     } else {
         throw new \InvalidArgumentException("Unrecognized log level {$logLevel}");
     }
 }
Ejemplo n.º 4
0
<?php

/*
* Copyright (c) 2014 Baidu.com, Inc. All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* Http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
error_reporting(-1);
date_default_timezone_set('UTC');
define('__BOS_CLIENT_ROOT', dirname(__DIR__));
$BOS_TEST_CONFIG = array('credentials' => array('ak' => '6FfqKaQi8Ukg7063eRGL1Io9', 'sk' => 'ai1p58cj7InbBXlgeEyydUYZQI65vMOu'), 'endpoint' => 'http://bj.bcebos.com');
$STDERR = fopen('php://stderr', 'w+');
$__handler = new \Monolog\Handler\StreamHandler($STDERR, \Monolog\Logger::DEBUG);
$__handler->setFormatter(new \Monolog\Formatter\LineFormatter(null, null, false, true));
\BaiduBce\Log\LogFactory::setInstance(new \BaiduBce\Log\MonoLogFactory(array($__handler)));
\BaiduBce\Log\LogFactory::setLogLevel(\Psr\Log\LogLevel::DEBUG);
 public function __construct(BosClient $client, $bucket)
 {
     $this->client = $client;
     $this->bucket = $bucket;
     $this->logger = LogFactory::getLogger('BaiduBos');
 }
Ejemplo n.º 6
0
 /**
  * Send request to BCE.
  *
  * @param array $config
  * @param string $httpMethod The Http request method, uppercase.
  * @param string $path The resource path.
  * @param string|resource $body The Http request body.
  * @param array $headers The extra Http request headers.
  * @param array $params The extra Http url query strings.
  * @param SignerInterface $signer This function will generate authorization header.
  * @param resource|string $outputStream Write the Http response to this stream.
  *
  * @return \Guzzle\Http\Message\Response body and http_headers
  *
  * @throws BceClientException
  * @throws BceServiceException
  */
 public function sendRequest(array $config, $httpMethod, $path, $body, array $headers, array $params, SignerInterface $signer, $outputStream = null, $options = array())
 {
     $headers[HttpHeaders::USER_AGENT] = sprintf('bce-sdk-php/%s/%s/%s', Bce::SDK_VERSION, php_uname(), phpversion());
     if (!isset($headers[HttpHeaders::BCE_DATE])) {
         $now = new \DateTime();
         $now->setTimezone(DateUtils::$UTC_TIMEZONE);
         $headers[HttpHeaders::BCE_DATE] = DateUtils::formatAlternateIso8601Date($now);
     }
     list($hostUrl, $hostHeader) = HttpUtils::parseEndpointFromConfig($config);
     $headers[HttpHeaders::HOST] = $hostHeader;
     $url = $hostUrl . HttpUtils::urlEncodeExceptSlash($path);
     $queryString = HttpUtils::getCanonicalQueryString($params, false);
     if ($queryString !== '') {
         $url .= "?{$queryString}";
     }
     if (!isset($headers[HttpHeaders::CONTENT_LENGTH])) {
         $headers[HttpHeaders::CONTENT_LENGTH] = $this->guessContentLength($body);
     }
     $entityBody = null;
     if ($headers[HttpHeaders::CONTENT_LENGTH] == 0) {
         //if passing a stream and content length is 0, guzzle will remove
         //"Content-Length:0" from header, to work around this, we have to
         //set body to a empty string
         $entityBody = "";
     } else {
         if (is_resource($body)) {
             $offset = ftell($body);
             $original = EntityBody::factory($body);
             $entityBody = new ReadLimitEntityBody($original, $headers[HttpHeaders::CONTENT_LENGTH], $offset);
         } else {
             $entityBody = $body;
         }
     }
     $headers[HttpHeaders::AUTHORIZATION] = $signer->sign($config[BceClientConfigOptions::CREDENTIALS], $httpMethod, $path, $headers, $params, $options);
     if (LogFactory::isDebugEnabled()) {
         $this->logger->debug('HTTP method: ' . $httpMethod);
         $this->logger->debug('HTTP url: ' . $url);
         $this->logger->debug('HTTP headers: ' . print_r($headers, true));
     }
     $guzzleRequestOptions = array('exceptions' => false);
     if (isset($config[BceClientConfigOptions::CONNECTION_TIMEOUT_IN_MILLIS])) {
         $guzzleRequestOptions['connect_timeout'] = $config[BceClientConfigOptions::CONNECTION_TIMEOUT_IN_MILLIS] / 1000.0;
     }
     if (isset($config[BceClientConfigOptions::SOCKET_TIMEOUT_IN_MILLIS])) {
         $guzzleRequestOptions['timeout'] = $config[BceClientConfigOptions::SOCKET_TIMEOUT_IN_MILLIS] / 1000.0;
     }
     $guzzleRequest = $this->guzzleClient->createRequest($httpMethod, $url, $headers, $entityBody, $guzzleRequestOptions);
     if ($outputStream !== null) {
         $guzzleRequest->setResponseBody($outputStream);
     }
     // Send request
     try {
         $guzzleResponse = $this->guzzleClient->send($guzzleRequest);
     } catch (\Exception $e) {
         throw new BceClientException($e->getMessage());
     }
     if ($guzzleResponse->isInformational()) {
         throw new BceClientException('Can not handle 1xx Http status code');
     } elseif (!$guzzleResponse->isSuccessful()) {
         $requestId = $guzzleResponse->getHeader(HttpHeaders::BCE_REQUEST_ID);
         $message = $guzzleResponse->getReasonPhrase();
         $code = null;
         if ($guzzleResponse->isContentType('json')) {
             try {
                 $responseBody = $guzzleResponse->json();
                 if (isset($responseBody['message'])) {
                     $message = $responseBody['message'];
                 }
                 if (isset($responseBody['code'])) {
                     $code = $responseBody['code'];
                 }
             } catch (\Exception $e) {
                 // ignore this error
                 $this->logger->warning('Fail to parse error response body: ' . $e->getMessage());
             }
         }
         throw new BceServiceException($requestId, $code, $message, $guzzleResponse->getStatusCode());
     }
     if ($outputStream === null) {
         $body = $guzzleResponse->getBody(true);
     } else {
         $body = null;
         // detach the stream so that it will not be closed when the response
         // is garbage collected.
         $guzzleResponse->getBody()->detachStream();
     }
     return array('headers' => $this->parseHeaders($guzzleResponse), 'body' => $body);
 }