Connection helper
You can view the source on GitHub.
Kind of like Symfony BrowserKit.
Example
Setup:
$connection = new connection();
// $connection->value_set('key', $value);
// $connection->header_set('name', 'value');
// $connection->cookie_set('name', 'value');
Requesting a resource:
$connection->get('https://www.example.com');
// $connection->post('https://www.example.com');
// $connection->put('https://www.example.com');
// $connection->delete('https://www.example.com');
Returning the response:
debug($connection->response_code_get()); debug($connection->response_mime_get()); debug($connection->response_headers_get()); debug($connection->response_data_get()); debug($connection->response_full_get());
If there is a connection problem, by default it will call exit_with_error() automatically.
Error handling
To handle errors yourself, do something like:
$connection = new connection();
$connection->exit_on_error_set(false);
if ($connection->get('https://www.example.com') && $connection->response_code_get() == 200) {
$response = $connection->response_data_get();
} else {
exit($connection->error_message_get());
}
Or perhaps:
$result = $connection->get('https://www.example.com');
if ($result) {
// Success
} else {
exit($connection->error_message_get());
}
Connection browser
Imitate a basic browser
//--------------------------------------------------
// Setup
$browser = new connection_browser();
// $browser->debug_set(true);
//--------------------------------------------------
// Pre-load url and data (testing)
// $browser->url_set('https://www.example.com');
// $browser->data_set(file_get_contents('/folder/file.html'));
//--------------------------------------------------
// Get first page
$browser->get('https://www.example.com');
// debug($browser->url_get());
// debug($browser->data_get());
//--------------------------------------------------
// Follow a link
$browser->link_follow('Home'); // Could also be the number (e.g. link "5"), or an XPath
//--------------------------------------------------
// Setup form
// debug($browser->nodes_get_html('//form')); // Test an XPath
$browser->form_select(); // If more than 1 form, pass in the number or an XPath (e.g. '//form[@id="myId"]')
// debug($browser->form_fields_get());
// $browser->form_field_set('username', 'admin');
// $browser->form_field_set('password', '123');
$browser->form_submit();
//--------------------------------------------------
// GZip encoding
$browser = new connection_browser();
$browser->header_set('User-Agent', 'RSS Reader');
$browser->header_set('Accept', 'application/rss+xml');
$browser->encoding_accept_set('gzip', true);
$browser->get($source_url);
$rss_data = $browser->data_get();