package WWW::CurlOO;

use strict;
use warnings;
use XSLoader;
use Exporter ();

our $VERSION;
BEGIN {
	$VERSION = '0.03';
	XSLoader::load(__PACKAGE__, $VERSION);
}
END {
    _global_cleanup();
}

our @ISA = qw(Exporter);
our @EXPORT_OK = (
# @CURLOPT_INCLUDE@
);

our %EXPORT_TAGS = ( constants => \@EXPORT_OK );

1;

__END__

=head1 NAME

WWW::CurlOO - Perl interface for libcurl

=head1 WARNING

B<THIS MODULE IS UNDER HEAVY DEVELOPEMENT AND SOME INTERFACE MAY CHANGE YET.>

=head1 SYNOPSIS

    use WWW::CurlOO;
    print $WWW::CurlOO::VERSION;


=head1 DESCRIPTION

WWW::CurlOO is a Perl interface for libcurl.

=head1 DOCUMENTATION

This module provides a Perl interface to libcurl. It is not intended to be a standalone module
and because of this, the main libcurl documentation should be consulted for API details at
L<http://curl.haxx.se>. The documentation you're reading right now only contains the Perl specific
details, some sample code and the differences between the C API and the Perl one.

=head1 WWW::CurlOO

This package contains some static functions and version-releated constants.
It does not export by default anything, but constants can be exported upon
request.

	use WWW::CurlOO qw(:constants);

=head2 FUNCTIONS

=over

=item version

Returns libcurl version string. See L<curl_version(3)> for more info.

	my $libcurl_verstr = WWW::CurlOO::version();
	# prints something like:
	# libcurl/7.21.4 GnuTLS/2.10.4 zlib/1.2.5 c-ares/1.7.4 libidn/1.20 libssh2/1.2.7 librtmp/2.3
	print $libcurl_verstr;

=item version_info

Returns a hashref with the same information as L<curl_version_info(3)>.
	
	my $libcurl_ver = WWW::CurlOO::version_info();

	print Dumper( $libcurl_ver );

Example for version_info with age CURLVERSION_FOURTH:

	'age' => 3,
	'version' => '7.21.4',
	'version_num' => 464132,
	'host' => 'x86_64-pld-linux-gnu',
	'features' => 18109,
	'ssl_version' => 'GnuTLS/2.10.4'
	'ssl_version_num' => 0,
	'libz_version' => '1.2.5',
	'protocols' => [ 'dict', 'file', 'ftp', 'ftps', 'gopher', 'http', 'https',
		'imap', 'imaps', 'ldap', 'ldaps', 'pop3', 'pop3s', 'rtmp', 'rtsp',
		'scp', 'sftp', 'smtp', 'smtps', 'telnet', 'tftp' ],
	'ares' => '1.7.4',
	'ares_num' => 67332,
	'libidn' => '1.20',
	'iconv_ver_num' => 0,
	'libssh_version' => 'libssh2/1.2.7',
	
You can import constants if you want to check libcurl features:

	use WWW::CurlOO qw(:constants);
	unless ( WWW::CurlOO::version_info()->{features} & CURL_VERSION_SSL ) {
		die "SSL support is required
	}

=item getdate

Decodes date string returning its numerical value, in seconds.

	my $time = WWW::CurlOO::getdate( "GMT 08:49:37 06-Nov-94 Sunday" );
	my $timestr = gmtime $time;
	print "$timestr\n";
	# Sun Nov  6 08:49:37 1994

See L<curl_getdate(3)> for more info on supported input formats.

=item constant

Unused.

=back

=head1 AUTHORS

This package was mostly rewritten by Przemyslaw Iskra <sparky at pld-linux.org>.

It is based on WWW::Curl developed by Cris Bailiff <c.bailiff+curl at devsecure.com>
and Balint Szilakszi <szbalint at cpan.org>.

Original Author Georg Horn <horn@koblenz-net.de>, with additional callback,
pod and test work by Cris Bailiff <c.bailiff+curl@devsecure.com> and
Forrest Cahoon <forrest.cahoon@merrillcorp.com>. Sebastian Riedel added ::Multi
and Anton Fedorov (datacompboy <at> mail.ru) added ::Share. Balint Szilakszi
repackaged the module into a more modern form.

=head1 COPYRIGHT

Copyright (c) 2011 Przemyslaw Iskra.

Copyright (C) 2000-2005,2008-2010 Daniel Stenberg, Cris Bailiff,
Sebastian Riedel, Balint Szilakszi et al.

You may opt to use, copy, modify, merge, publish, distribute and/or sell
copies of the Software, and permit persons to whom the Software is furnished
to do so, under the terms of the MPL or the MIT/X-derivate licenses. You may
pick one of these licenses.

=head1 SEE ALSO

L<http://curl.haxx.se>

L<libcurl(3)>