123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- <?php
- require_once 'phing/Task.php';
- class HttpRequestTask extends Task
- {
-
- protected $_url = null;
-
- protected $_responseRegex = '';
-
- protected $_verbose = false;
-
- protected $_headers = array();
-
- protected $_configData = array();
-
- protected $_authUser = null;
-
- protected $_authPassword = '';
-
- protected $_authScheme;
-
- protected $_observerEvents = array(
- 'connect',
- 'sentHeaders',
- 'sentBodyPart',
- 'receivedHeaders',
- 'receivedBody',
- 'disconnect',
- );
-
- public function setUrl($url)
- {
- $this->_url = $url;
- }
-
- public function setResponseRegex($regex)
- {
- $this->_responseRegex = $regex;
- }
-
- public function setAuthUser($user)
- {
- $this->_authUser = $user;
- }
-
- public function setAuthPassword($password)
- {
- $this->_authPassword = $password;
- }
-
- public function setAuthScheme($scheme)
- {
- $this->_authScheme = $scheme;
- }
-
- public function setVerbose($verbose)
- {
- $this->_verbose = StringHelper::booleanValue($verbose);
- }
-
- public function setObserverEvents($observerEvents)
- {
- $this->_observerEvents = array();
- $token = ' ,;';
- $ext = strtok($observerEvents, $token);
- while ($ext !== false) {
- $this->_observerEvents[] = $ext;
- $ext = strtok($token);
- }
- }
-
- public function createHeader()
- {
- $num = array_push($this->_headers, new Parameter());
- return $this->_headers[$num-1];
- }
-
- public function createConfig()
- {
- $num = array_push($this->_configData, new Parameter());
- return $this->_configData[$num-1];
- }
-
- public function init()
- {
- @include_once 'HTTP/Request2.php';
- if (! class_exists('HTTP_Request2')) {
- throw new BuildException(
- 'HttpRequestTask depends on HTTP_Request2 being installed '
- . 'and on include_path.',
- $this->getLocation()
- );
- }
- $this->_authScheme = HTTP_Request2::AUTH_BASIC;
-
-
- require_once 'HTTP/Request2/Observer/Log.php';
- }
-
- public function main()
- {
- if (!isset($this->_url)) {
- throw new BuildException("Missing attribute 'url' set");
- }
- $request = new HTTP_Request2($this->_url);
-
- if (!empty($this->_authUser)) {
- $request->setAuth(
- $this->_authUser,
- $this->_authPassword,
- $this->_authScheme
- );
- }
- foreach ($this->_configData as $config) {
- $request->setConfig($config->getName(), $config->getValue());
- }
- foreach ($this->_headers as $header) {
- $request->setHeader($header->getName(), $header->getValue());
- }
- if ($this->_verbose) {
- $observer = new HTTP_Request2_Observer_Log();
-
- $observer->events = $this->_observerEvents;
- $request->attach($observer);
- }
- $response = $request->send();
- if ($this->_responseRegex !== '') {
- $matches = array();
- preg_match($this->_responseRegex, $response->getBody(), $matches);
- if (count($matches) === 0) {
- throw new BuildException(
- 'The received response body did not match the '
- . 'given regular expression'
- );
- } else {
- $this->log('The response body matched the provided regex.');
- }
- }
- }
- }
|