Alien-curl
view release on metacpan or search on metacpan
t/alien_curl.t view on Meta::CPAN
'ulong' => 'ssl_version_num',
'string' => 'libz_version',
'opaque' => 'protocols',
);
}
$ffi->function( curl_version_info => ['enum'] => 'record(Curl::Version)' );
};
if(my $error = $@)
{
note "error looking for curl_version_info";
note $error;
}
else
{
my $version = $curl_version_info->call(0);
note "age = ", $version->age;
note "version = ", $version->version;
note "version_num = ", $version->version_num;
note "host = ", $version->host;
note "features = ", $version->features;
note "ssl_version = ", $version->ssl_version;
note "ssl_version_num = ", $version->ssl_version_num;
note "libz_version = ", $version->libz_version;
my @proto = @{ $ffi->cast('opaque', 'string[]', $version->protocols()) };
note "proto = $_" for @proto;
my %proto = map { $_ => 1 } @proto;
is(
\%proto,
$proto_check,
'protocols supported incudes: http, https, and ftp',
) || diag "proto: @proto";
}
}
);
done_testing;
__DATA__
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include <curl/curl.h>
MODULE = Curl PACKAGE = Curl
const char *
curl_version()
AV*
curl_protocols()
PREINIT:
size_t i;
curl_version_info_data *data;
CODE:
data = curl_version_info(CURLVERSION_NOW);
RETVAL = (AV*) sv_2mortal((SV*)newAV());
for(i=0; data->protocols[i] != NULL; i++)
{
av_push(RETVAL, newSVpv(data->protocols[i], strlen(data->protocols[i])));
}
OUTPUT:
RETVAL
( run in 1.038 second using v1.01-cache-2.11-cpan-13bb782fe5a )