/** * Create a request or response object from an HTTP message string * * @param string $message Message to parse * * @return puzzle_message_RequestInterface|puzzle_message_ResponseInterface * @throws InvalidArgumentException if unable to parse a message */ public function fromMessage($message) { static $parser; if (!$parser) { $parser = new puzzle_message_MessageParser(); } // Parse a response if (strtoupper(substr($message, 0, 4)) == 'HTTP') { $data = $parser->parseResponse($message); return $this->createResponse($data['code'], $data['headers'], $data['body'] === '' ? null : $data['body'], $data); } // Parse a request if (!($data = $parser->parseRequest($message))) { throw new InvalidArgumentException('Unable to parse request'); } return $this->createRequest($data['method'], puzzle_Url::buildUrl($data['request_url']), array('headers' => $data['headers'], 'body' => $data['body'] === '' ? null : $data['body'], 'config' => array('protocol_version' => $data['protocol_version']))); }
/** * {@inheritdoc} */ public function __toString() { $parts = $this->_delegateUrl->getParts(); if ($this->_query) { $parts['query'] = $this->_query; } else { unset($parts['query']); } return puzzle_Url::buildUrl($parts); }
public function testAddsQueryIfPresent() { $this->assertEquals('?foo=bar', puzzle_Url::buildUrl(array('query' => 'foo=bar'))); }