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.