| 
<?php
/**
 * Request-related data and methods to prepare the request
 *
 * @package gCurl
 * @author Grigori Kochanov
 * @version 2
 */
 class gCurlRequest{
 /**
 * request type (GET, POST, HEAD, OPTIONS)
 *
 * @var string
 */
 public $method = 'GET';
 /**
 * address of the proxy to use or NULL to use a direct connection
 *
 * @var string
 */
 public $proxy;
 /**
 * port of the proxy
 *
 * @var numeric
 */
 public $proxy_port = 3128;
 /**
 * login for the proxy authorisation
 *
 * @var string
 */
 public $proxyuser = '';
 /**
 * password for the proxy authorisation
 *
 * @var string
 */
 public $proxypwd = '';
 /**
 * cookies joined and ready to be sent
 *
 * @var string
 */
 public $cookie_string = '';
 
 /**
 * History of requests and data sent
 *
 * @var array
 */
 public $history = array(
 'requests_count'=>0,
 'request_headers'=>array(),
 'sent_data'=>''
 );
 /**
 *  array of custom headers provided by the user
 *
 * @var array
 */
 public $custom_headers = array();
 
 /**
 * data to send with POST request
 *
 * @var string
 */
 public $post_data  = '';
 
 /**
 * Assign the data prepared for the POST request
 *
 * @param string $data
 */
 function setRawPostData($data){
 $this->post_data = &$data;
 }
 
 /**
 * Add a variable to send in a query
 *
 * @param string $var
 * @param string $var_value
 */
 function addGetVar($var, $var_value){
 //check parameters
 if (!$var || !is_string($var) || !is_scalar($var_value)){
 throw new gCurlException(51);
 }
 $query=$this->URI->query;
 $query.=($query?'&':'?').urlencode($var).'='.urlencode($var_value);
 
 $this->URI->query = $query;
 }
 
 /**
 * Add a variable to the  POST request
 *
 * @param string $var
 * @param string $var_value
 */
 function addPostVar($var, $var_value = ''){
 if (!$var || !is_string($var) || !is_scalar($var_value)){
 throw new gCurlException(51);
 }
 $this->post_data & ($this->post_data.='&');
 $this->post_data .= rawurlencode($var). '=' .rawurlencode($var_value);
 }
 
 /**
 * Add a name/value pair to the request coookie
 *
 * @param string $name
 * @param string $value
 */
 function addCookieVar($name,$value){
 if (!$name || !is_string($name) || !is_scalar($value)){
 throw new gCurlException(51);
 }
 if ($this->cookie_string){
 $this->cookie_string.=';';
 }
 $this->cookie_string.=urlencode($name).'='.urlencode($value);
 }
 
 /**
 * Define the request method
 *
 * @param string $method
 */
 function setRequestMethod($method){
 $method = strtoupper($method);
 if (!in_array($method,array('GET','POST','HEAD','OPTIONS'))){
 throw new gCurlException(50);
 }
 $this->method=$method;
 }
 
 /**
 * Add a custom request header
 *
 * @param string $header
 */
 function registerCustomHeader($header){
 $this->custom_headers[] = $header;
 }
 
 /**
 * Add a bunch of custom request headers
 *
 * @param array $headers
 */
 function registerCustomHeadersArray(array $headers){
 for ($i=0,$len=sizeof($headers);$i<$len;++$i){
 $this->custom_headers[] = $headers[$i];
 }
 }
 
 /**
 * Set parameters to use proxy
 *
 * @param string $proxy IP address
 * @param string $port
 * @param string $user
 * @param string $password
 */
 function useProxy($proxy,$port,$user='',$password=''){
 $this->proxy = $proxy;
 $this->proxy_port = $port;
 $this->proxyuser = $user;
 $this->proxypwd = $password;
 }
 
 //end of the class
 }
 
 
 |