Esempio n. 1
0
 /**
  *    Dispatches the value into the form encoded packet.
  *    @param SimpleEncoding $encoding    Form packet.
  *    @access public
  */
 function write($encoding)
 {
     $encoding->add($this->getName(), $this->getValue());
 }
Esempio n. 2
0
 /**
  *    Fetches a URL as a response object. Will keep trying if redirected.
  *    It will also collect authentication realm information.
  *    @param string/SimpleUrl $url      Target to fetch.
  *    @param SimpleEncoding $encoding   Additional parameters for request.
  *    @return SimpleHttpResponse        Hopefully the target page.
  *    @access public
  */
 function fetchResponse($url, $encoding)
 {
     if ($encoding->getMethod() != 'POST') {
         $url->addRequestParameters($encoding);
         $encoding->clear();
     }
     $response = $this->fetchWhileRedirected($url, $encoding);
     if ($headers = $response->getHeaders()) {
         if ($headers->isChallenge()) {
             $this->authenticator->addRealm($url, $headers->getAuthentication(), $headers->getRealm());
         }
     }
     return $response;
 }
Esempio n. 3
0
 /**
  *    Starts empty.
  *    @param array $query       Hash of parameters.
  *                              Multiple values are
  *                              as lists on a single key.
  *    @access public
  */
 function __construct($query = false)
 {
     if (is_array($query) and $this->hasMoreThanOneLevel($query)) {
         $query = $this->rewriteArrayWithMultipleLevels($query);
     }
     parent::__construct($query);
 }
 /**
  *    Renders the request body
  *    @return Encoded entity body
  *    @access protected
  */
 protected function encode()
 {
     return $this->body ? $this->body : parent::encode();
 }
Esempio n. 5
0
 /**
  *    Sends the headers.
  *    @param SimpleSocket $socket           Open socket.
  *    @param SimpleEncoding $encoding   Content to send with request.
  *    @access private
  */
 protected function dispatchRequest($socket, $encoding)
 {
     foreach ($this->headers as $header_line) {
         $socket->write($header_line . "\r\n");
     }
     if (count($this->cookies) > 0) {
         $socket->write("Cookie: " . implode(";", $this->cookies) . "\r\n");
     }
     $encoding->writeHeadersTo($socket);
     $socket->write("\r\n");
     $encoding->writeTo($socket);
 }
Esempio n. 6
0
 /**
  *    Starts empty.
  *    @param array $query       Hash of parameters.
  *                              Multiple values are
  *                              as lists on a single key.
  *    @access public
  */
 function __construct($query = false)
 {
     parent::__construct($query);
 }
Esempio n. 7
0
 /**
  * @param SimpleUrl
  * @param SimpleEncoding
  * @return k_ActingAsSimpleHttpResponse
  */
 protected function fetch(SimpleUrl $url, SimpleEncoding $parameters)
 {
     // extract primitives from SimpleTest abstractions
     $url_path = $url->getPath();
     $url_query = array();
     parse_str(str_replace('?', '', $url->getEncodedRequest()), $url_query);
     $method = $parameters->getMethod();
     $data = array();
     foreach ($parameters->getAll() as $pair) {
         $data[$pair->getKey()] = $pair->getValue();
     }
     if (!in_array($url->getHost(), array("", $this->servername))) {
         return new k_ActingAsSimpleHttpResponse($url, $data, array("HTTP/1.1 502"), "External URL requested: " . $url->asString(), $method);
     }
     // set up a mocked environment
     $server = array('SERVER_NAME' => $this->servername, 'REQUEST_METHOD' => $method, 'REQUEST_URI' => $url_path);
     $headers = new k_VirtualHeaders();
     $this->authenticator->addHeaders($headers, $url);
     foreach ($this->additional_headers as $line) {
         $headers->addHeaderLine($line);
     }
     $socket_buffer = new k_VirtualSocketBuffer();
     $parameters->writeHeadersTo($socket_buffer);
     foreach ($socket_buffer->getLines() as $line) {
         $headers->addHeaderLine($line);
     }
     $superglobals = new k_adapter_MockGlobalsAccess($url_query, $data, $server, $headers->headers());
     $response = k()->setContext(new k_HttpRequest("", null, $this->identity_loader, $this->language_loader, $this->translator_loader, $superglobals, $this->cookie_access, $this->session_access))->setComponentCreator($this->components)->setCharsetStrategy($this->charset_strategy)->run($this->root_class_name);
     $output = new k_SimpleOutputAccess();
     $response->out($output);
     return $output->toSimpleHttpResponse($url, $data, $method);
 }