Skip to content

Purli (PHP Url Interface) is lightweight library with object-oriented interface for sending HTTP requests.

License

Notifications You must be signed in to change notification settings

ACTIV8-Developers/Purli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Purli

DUB Version

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.

About

Purli (PHP Url Interface) is lightweight library with object-oriented interface for sending HTTP requests.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages