diff --git a/composer.json b/composer.json index 2021d22..d3e2cf4 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,11 @@ "Essence\\Http\\": "src" } }, + "require-dev": { + "guzzlehttp/guzzle": "~6.2" + }, "suggest": { - "ext-curl": "*" + "ext-curl": "*", + "guzzlehttp/guzzle": "~6.2" } } diff --git a/src/Client/Guzzle.php b/src/Client/Guzzle.php new file mode 100644 index 0000000..2114c6a --- /dev/null +++ b/src/Client/Guzzle.php @@ -0,0 +1,44 @@ +client = new \GuzzleHttp\Client([ + 'base_uri' => $base_uri, + 'timeout' => $timeout, + ]); + + $this->options = []; + } + + public function setUserAgent($agent) { + $this->options = [ + 'User-Agent' => $agent + ]; + } + + public function get($url) { + try { + $response = $this->client->request('GET', $url, $this->options); + + } catch (\GuzzleHttp\Exception\RequestException $e) { + throw new Exception($url, $e->getResponse()->getStatusCode()); + } + + return (string)$response->getBody(); + } +} diff --git a/tests/Client/GuzzleTest.php b/tests/Client/GuzzleTest.php new file mode 100644 index 0000000..2efe4b0 --- /dev/null +++ b/tests/Client/GuzzleTest.php @@ -0,0 +1,34 @@ + + * @license MIT + */ + +namespace Essence\Http\Client; + +use PHPUnit_Framework_TestCase as TestCase; + + + +/** + * Test case for Guzzle. + */ +class GuzzleTest extends TestCase { + + public $Guzzle = null; + + public function setUp() { + $this->Guzzle = new Guzzle(); + } + + public function testGet() { + $content = $this->Guzzle->get('http://example.com/'); + $this->assertRegExp('/This domain is established to be used/', $content); + } + + public function testGetUnreachable() { + $this->setExpectedException('\\Essence\\Http\\Exception'); + $this->Guzzle->get('http://example.com/dfzgdz/czcdcd'); + } +}