function initialize()
 {
     if (!$this->fetched) {
         $config =& get_config();
         $assetUrl = $config['asset_service'] . $this->node['AssetID'];
         $curl = new Curl();
         $curl->create($assetUrl);
         $curl->option(CURLOPT_HEADER, true);
         $curl->option(CURLOPT_NOBODY, true);
         $response = $curl->execute();
         if ($response) {
             $headers = http_parse_headers($response);
             $this->size = $headers['Content-Length'];
             $this->contentType = $headers['Content-Type'];
             if (isset($headers['ETag'])) {
                 $this->etag = $headers['ETag'];
             } else {
                 if (isset($headers['Etag'])) {
                     $this->etag = $headers['Etag'];
                 } else {
                     $this->etag = '';
                 }
             }
         } else {
             log_message('error', "InventoryFile: Failed to fetch headers from {$assetUrl}");
         }
         $this->fetched = true;
     }
 }
Example #2
0
 function execute($method, $url, $fields = '', $userAgent = '', $httpHeaders = '', $username = '', $password = '')
 {
     $ch = Curl::create();
     if (false === $ch) {
         return false;
     }
     if (is_string($url) && strlen($url)) {
         $ret = curl_setopt($ch, CURLOPT_URL, $url);
     } else {
         return false;
     }
     //是否显示头部信息
     curl_setopt($ch, CURLOPT_HEADER, false);
     //
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     if ($username != '') {
         curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
     }
     $method = strtolower($method);
     if ('post' == $method) {
         curl_setopt($ch, CURLOPT_POST, true);
         if (is_array($fields)) {
             $sets = array();
             foreach ($fields as $key => $val) {
                 $sets[] = $key . '=' . urlencode($val);
             }
             $fields = implode('&', $sets);
         }
         curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
     } else {
         if ('put' == $method) {
             curl_setopt($ch, CURLOPT_PUT, true);
         }
     }
     //curl_setopt($ch, CURLOPT_PROGRESS, true);
     //curl_setopt($ch, CURLOPT_VERBOSE, true);
     //curl_setopt($ch, CURLOPT_MUTE, false);
     curl_setopt($ch, CURLOPT_TIMEOUT, 10);
     //设置curl超时秒数,例如将信息POST出去3秒钟后自动结束运行。
     if (strlen($userAgent)) {
         curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
     }
     if (is_array($httpHeaders)) {
         curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeaders);
     }
     $ret = curl_exec($ch);
     if (curl_errno($ch)) {
         curl_close($ch);
         return array(curl_error($ch), curl_errno($ch));
     } else {
         curl_close($ch);
         if (!is_string($ret) || !strlen($ret)) {
             return false;
         }
         return $ret;
     }
 }
function create_asset($assetID, $creatorID, $contentType, $filename)
{
    $CI =& get_instance();
    $CI->load->library('Curl');
    $CI->load->helper('path');
    $filename = rtrim(set_realpath($filename), '/');
    $params = array('AssetID' => $assetID, 'CreatorID' => $creatorID, 'Asset' => "@{$filename};type={$contentType}");
    echo 'Posting ' . $filename . ' to ' . $CI->config->item('asset_service') . '<br/>';
    $curl = new Curl();
    $curl->create($CI->config->item('asset_service'));
    $curl->option(CURLOPT_POST, TRUE);
    $curl->option(CURLOPT_POSTFIELDS, $params);
    $curl->http_method('post');
    $response = json_decode($curl->execute(), TRUE);
    if (!isset($response)) {
        $response = array('Message' => 'Invalid or missing response. ' . $curl->error_string);
    }
    return $response;
}
Example #4
0
 /**
  * 请求
  * @param type $data
  * @return type
  */
 private function run($data)
 {
     $curl = new \Curl();
     $fields = array('data' => json_encode($data), 'version' => SHUIPF_VERSION, 'act' => $this->act, 'identity' => $this->getIdentity(), 'token' => $this->token);
     //curl支持 检测
     if ($curl->create() == false) {
         $this->error = '服务器不支持Curl扩展!';
         return false;
     }
     //请求
     $status = $curl->post(self::serverHot, $fields);
     if (false == $status) {
         $this->error = '无法联系服务器,请稍后再试!';
         return false;
     }
     return $this->returnResolve($status);
 }
Example #5
0
 $sql = "SELECT Resource FROM Capabilities WHERE ID=:ID AND ExpirationDate > NOW() LIMIT 1";
 $sth = $db->prepare($sql);
 if ($sth->execute(array(':ID' => $_GET['cap']))) {
     if ($sth->rowCount() > 0) {
         $obj = $sth->fetchObject();
         $resourceURL = $obj->Resource;
         // TODO: Handle relative resource URLs
         if (stripos($_SERVER['REQUEST_METHOD'], 'POST') !== FALSE) {
             // FIXME: Implement POST capability routing
             $curl = new Curl();
             $curl->create($resourceURL);
         } else {
             if (stripos($_SERVER['REQUEST_METHOD'], 'GET') !== FALSE) {
                 // FIXME: Properly proxy response codes
                 $curl = new Curl();
                 $curl->create($resourceURL);
                 echo $curl->execute();
                 exit;
             } else {
                 log_message('warn', "Don't know how to route method " . $_SERVER['REQUEST_METHOD'] . " for capability {$resourceURL}");
                 header("HTTP/1.1 400 Bad Request");
                 echo 'Request method not understood';
                 exit;
             }
         }
     } else {
         log_message('warn', "Capability " . $_GET['cap'] . " not found");
         header("HTTP/1.1 404 Not Found");
         echo 'Capability not found';
         exit;
     }