Best laravel framework open-source packages.

Snufkin

PHP lib_curl OOP wrapper
Updated 3 months ago
Snufkin, the OOP wrapper for PHP lib_curl


Goods

— Simple syntax;
— Methods chaining support;
— Parsing of common http-request info into OOP-interface;
— Cookies support;
— Simple SSL support;
— Response body encoding;
— User-defined extra-parsers are available.


System requirements

– PHP ≥ 5;
– libcurl;
– iconv.


Config options

 Alias     | Type     | Description
=================================================================================
 timeout   | Optional | timeout for waiting in seconds
 redirects | Optional | maximum number of redirects lib_curl will follow
 agent     | Optional | one of the keywords for the real user agent emulation
 referer   | Optional | referer link for the real browser emulation too
 cookies   | Optional | absolute path to cookie.jar file (with a file name)
           |          | you will need to set 777 permission on a directory with
           |          | a cookie-file
 charset   | Optional | default charset for encoding
 encoding  | Optional | usually it`s gzip/deflate
 headers   | Optional | common request headers
 ssl       | Optional | true to use default ssl settings or an array with custom
           |          | ssl settings
=================================================================================


SSL settings

 Alias   | Type     | Description
==========================================================
 version | Optional | ssl protocol version
 peer    | Optional | false to prohibit sertificate check
         |          | true in other case
 host    | Optional | false to prohibit host check
         |          | 1 to check host existing only
         |          | 2 to check host host name
 cert    | Optional | full path to sertificate .pem file
         |          | (use with the «pass» option)
 pass    | Optional | password for the .pem sertificate
==========================================================


List of available user agents

 Alias         | OS       | Browser
================================================
 win.ie.5      | Windows  | Internet Explorer 5
 win.ie.6      | Windows  | Internet Explorer 6
 win.ie.7      | Windows  | Internet Explorer 7
 win.ie.8      | Windows  | Internet Explorer 8
 win.ie.9      | Windows  | Internet Explorer 9
 win.ff.3      | Windows  | Firefox 3.0.6
 win.ff.4      | Windows  | Firefox 4.0.1
 win.ff.5      | Windows  | Firefox 5.0
 win.opera.9   | Windows  | Opera 9.63
 win.opera.11  | Windows  | Opera 11.50
 win.safari.3  | Windows  | Safari 3.1.2
 win.chrome.1  | Windows  | Chrome 1.0
------------------------------------------------
 lin.ff.3      | Linux    | Firefox 3.1;
 lin.kq.3      | Linux    | Conqueror 3.5.10;
 lin.opera.9   | Linux    | Opera 9.63;
------------------------------------------------
 bsd.lynx      | Free BSD | Lynx
 bsd.links     | Free BSD | Links
------------------------------------------------
 mac.ff.3      | Mac OS   | Firefox 3.0.6
 mac.ff.5      | Mac OS   | Firefox 5.0.1
 mac.opera.9   | Mac OS   | Opera 9.62
 mac.opera.11  | Mac OS   | Opera 11.50
 mac.chrome.12 | Mac OS   | Chrome 12.0
 mac.safari.3  | Mac OS   | Safari 3.2.1
 mac.safari.5  | Mac OS   | Safari 5.1
================================================


Code examples


 1. Simple init

<code>
	$Browser = new Snufkin;
	$Browser->get('http://www.google.com');

	$Browser->dump_get();
</code>


 2. Init using the custom config

<code>
	$conf = array(
		'timeout'   => 5,
		'redirects' => 10,
		'agent'     => 'win.ff.3',
		'referer'   => 'http://www.google.com/',
		'encoding'  => 'gzip,deflate',
		'headers'   => array(
			'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
			'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
			'Accept-Language: ru,en-us;q=0.7,en;q=0.3',
			'Connection: keep-alive"',
			'Keep-Alive: 300',
			'Cache-Control: max-age=0',
			'Pragma: ',
		),
	);

	$Browser = new Snufkin($conf);
	$Browser->get('http://www.google.com');

	$Browser->dump_get();
</code>


 3. Make a GET-request

<code>
	$Browser->get('http://www.google.com');

	$Browser->dump_get();
</code>

Params for get()

     | Param    | Description
=============================================================
  1. | URL      | site url
  2. | nobody   | true if you want headers only,
     |          | false in other case
  5. | raw_save | true if you want to save unparsed response
=============================================================


 4. Make a POST-request

<code>
	$Browser->post(
		'http://www.google.com',
		array(
			'param1' => 'value1',
			'param2' => 'value2',
		)
	);

	$Browser->dump_get();
</code>

Params for post()

     | Param    | Description
=============================================================
  1. | URL      | site url
  2. | params   | POST params array
  3. | nobody   | true if you want headers only,
     |          | false in other case
  6. | raw_save | true if you want to save unparsed response
=============================================================


 5. Set a custom referer for a single http request

<code>
	$Browser->set('referer', 'http://www.google.com')->get('http://www.google.com');

	$Browser->dump_get();
</code>

Params for set()

     | Param  | Description
==========================================================
  1. | setion | 'headers' or 'referer'
  2. | value  | string for 'referer', array for 'headers'
==========================================================


 6. Make a HEAD-request

<code>
	$Browser->get('http://www.google.com', true);

	$Browser->dump_get();
</code>


 7. Get the section of http-response

<code>
	$Browser->get('http://www.google.com');

	$raw     = $Browser->raw();
	$body    = $Browser->body();
	$heads   = $Browser->heads();
	$head    = $Browser->head();
	$headers = $Browser->headers();
	$header  = $Browser->header('Content-Type');
	$cookies = $Browser->cookies();
	$cookie  = $Browser->cookie('lsd');

	$Browser->dump_get();
</code>

Sections methods description

     | Method    | Description
===============================================================
  1. | raw()     | unparsed response (exists only if you`ve
     |           | set raw_save param using get() or post()
     |           | methods)
  2. | body()    | response body
  3. | heads()   | headers for all redirects
  4. | head()    | headers for the last response
  5. | http()    | http section of head()
  6. | headers() | headers section of head()
  7. | header()  | value of the header given in param or false
  7. | cookies() | cookies section of head()
  8. | cookie()  | value of the cookie given in param or false
===============================================================


 8. Change the response encoding:

<code>
	$Browser->get('http://www.google.com')->charset('utf-8', 'windows-1251');

	$Browser->dump_get();
</code>

Params for charset()

     | Param    | Description
=================================================================
  1. | given    | given encoding, use false to take it from
     |          | response Charset header
  2. | needed   | encoding you need to encode the response body,
     |          | use false to take it from the common config
=================================================================


 9. Clean response body from line skews, tabs and spaces

<code>
	$Browser->get('http://www.google.com')->trim();

	$Browser->dump_get();
</code>


10. Make a https request using default SSL settings

<code>
	$conf = array(
		'timeout'   => 5,
		'redirects' => 10,
		'agent'     => 'win.ff.3',
		'referer'   => 'http://www.google.com/',
		'ssl'       => true,
	);

	$Browser = new Snufkin($conf);

	$Browser->get(
		'https://somehost.com'
	);

	$Browser->dump_get();
</code>


11. Make a https request using custom SSL settings

<code>
	$conf = array(
		'timeout'   => 5,
		'redirects' => 10,
		'agent'     => 'win.ff.3',
		'referer'   => 'http://www.google.com/',
		'ssl'       => array(
			'version' => 2,
			'host'    => 1,
			'peer'    => true,
		),
	);

	$Browser = new Snufkin($conf);

	$Browser->get('https://somehost.com');

	$Browser->dump_get();
</code>


12. Add extra user defined parsers

<code>
	include('Snufkin.3.3.php');

	class Snufkin_X extends Snufkin {
		public function
			x_headers_parse() {
			}

		public function
			x_body_parse() {
			}
	}

	$Browser = new Snufkin_X;
</code>

Both methods will be running automaticly with every request and will
be having direct access to OOP properties.
Tags curl php