kajna / purli
Lightweight library with Object-Oriented interface for sending HTTP requests
Installs: 4 141
Dependents: 2
Suggesters: 0
Security: 0
Stars: 3
Watchers: 3
Forks: 1
Open Issues: 0
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: 4.0.*
This package is auto-updated.
Last update: 2024-10-18 13:13:45 UTC
README
Purli (PHP Url Interface) is the lightweight library with the object-oriented interface for sending HTTP requests.
Installing
This package is available via Composer:
{ "require": { "kajna/purli": "dev-master" } }
Usage examples
Fetching data using GET method and CURL handler
Minimal example, Purli by default uses CURL handler if available otherwise fallback to the socket.
try { $purli = (new \Purli\Purli()) ->get('http://www.example.com') ->close(); $response = $purli->response(); echo $response->asText(); } catch(\Exception $e) { echo $e->getMessage(); }
Fetching data using GET method and socket handler
If explicitly set Purli will use PHP sockets to make requests regardless if CURL is installed or not
try { $purli = (new \Purli\Purli(\Purli\Purli::SOCKET)) ->get('http://example.com') ->close(); $response = $purli->response(); echo $response->asText(); } catch(\Exception $e) { echo $e->getMessage(); }
Fetching data using POST method
try { $data = array('foo' => 'bar'); $purli = (new \Purli\Purli()) ->setParams($data) ->post('http://www.example.com') ->close(); $response = $purli->response(); print_r($response->asText()); } catch(\Exception $e) { echo $e->getMessage(); }
Sending and receiving XML data using POST method
try { $data = '<root><foo>bar</foo></root>'; $purli = (new \Purli\Purli()) ->setUserAgent('curl 7.16.1 (i386-portbld-freebsd6.2) libcurl/7.16.1 OpenSSL/0.9.7m zlib/1.2.3') ->setHeader('Content-Type', 'text/xml') ->setParams($data) ->post('http://www.example.com') ->close(); $response = $purli->response(); print_r($response->asArray()); } catch(\Exception $e) { echo $e->getMessage(); }
Sending and receiving JSON data using PUT method
try { $data = array('foo' => 'bar'); $json = json_encode($data); $purli = (new \Purli\Purli(\Purli\Purli::SOCKET)) ->setConnectionTimeout(3) ->setHeader('Content-Type', 'application/json') ->setParams($json) ->put('http://www.example.com') ->close(); $response = $purli->response(); print_r($response->asObject()); } catch(\Exception $e) { echo $e->getMessage(); }
Using proxy server to make request
try { $purli = (new \Purli\Purli()); $purli ->setProxy(PROXY_ADDRESS, PROXY_PORT) ->get('http://www.example.com') ->close(); $response = $purli->response(); echo $response->asText(); } catch(\Exception $e) { echo $e->getMessage(); }
Setting custom CURL option
If CURL extension is installed by default Purli will use it, you can always get CURL handler object and set custom option if more flexibility is needed
try { $purli = (new \Purli\Purli()); if ($purli->getHandlerType() === \Purli\Purli::CURL) { curl_setopt($purli->getHandler(), CURLOPT_TIMEOUT, 10); } $purli ->get('http://www.example.com') ->close(); $response = $purli->response(); echo $response->asText(); } catch(\Exception $e) { echo $e->getMessage(); }
Running tests
Purli uses PHPUnit for testing, navigate to project root directory and run command:
cd tests
phpunit
Author
Milos Kajnaco milos@caenazzo.com
Contributors
Nemanja Nikolic nemanja@massvision.net
Licence
Purli is released under the MIT public license.