AMF-Connection
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/AMF/Connection.pm view on Meta::CPAN
package AMF::Connection;
use AMF::Connection::Message;
use AMF::Connection::MessageBody;
use AMF::Connection::OutputStream;
use AMF::Connection::InputStream;
use LWP::UserAgent;
use HTTP::Cookies;
#use Data::Dumper; #for debug
use Carp;
use strict;
our $VERSION = '0.32';
our $HASMD5 = 0;
{
local $@;
eval { require Digest::MD5; };
$HASMD5 = ($@) ? 0 : 1 ;
};
our $HASUUID;
{
local $@;
eval { require Data::UUID; };
$HASUUID = ($@) ? 0 : 1 ;
}
our $HAS_LWP_PROTOCOL_SOCKS;
{
local $@;
eval { require LWP::Protocol::socks };
$HAS_LWP_PROTOCOL_SOCKS = ($@) ? 0 : 1 ;
}
sub new {
my ($proto, $endpoint) = @_;
my $class = ref($proto) || $proto;
my $self = {
'endpoint' => $endpoint,
'headers' => [],
'http_headers' => {},
'http_cookie_jar' => new HTTP::Cookies(),
'response_counter' => 0,
'encoding' => 0, # default is AMF0 encoding
'ua' => new LWP::UserAgent(),
'append_to_endpoint' => ''
};
$self->{'ua'}->cookie_jar( $self->{'http_cookie_jar'} );
return bless($self, $class);
};
# plus add paramters, referer, user agent, authentication/credentials ( see also SecureAMFChannel stuff ),
# plus timezone on retunred dates to pass to de-serializer - see AMF3 spec saying "it is suggested that time zone be queried independnetly as needed" - unelss local DateTime default to right locale!
# we pass the string, and let Storable::AMF to parse the options into a scalar - see Input/OutputStream and Storable::AMF0 documentation
sub setInputAMFOptions {
my ($class, $options) = @_;
$class->{'input_amf_options'} = $options;
};
sub setOutputAMFOptions {
my ($class, $options) = @_;
$class->{'output_amf_options'} = $options;
};
# useful when input and output options are the same
sub setAMFOptions {
my ($class, $options) = @_;
$class->setInputAMFOptions ($options);
$class->setOutputAMFOptions ($options);
};
sub getInputAMFOptions {
my ($class) = @_;
return $class->{'input_amf_options'};
};
sub getOutputAMFOptions {
my ($class) = @_;
return $class->{'output_amf_options'};
};
sub setEndpoint {
my ($class, $endpoint) = @_;
$class->{'endpoint'} = $endpoint;
};
sub getEndpoint {
my ($class) = @_;
return $class->{'endpoint'};
};
sub setHTTPProxy {
my ($class, $proxy) = @_;
if( ($proxy =~ m!^socks://(.*?):(\d+)!) &&
(!$HAS_LWP_PROTOCOL_SOCKS) ) {
croak "LWP::Protocol::socks is required for SOCKS support";
};
$class->{'http_proxy'} = $proxy;
$class->{'ua'}->proxy( [qw(http https)] => $class->{'http_proxy'} );
};
view all matches for this distributionview release on metacpan - search on metacpan
( run in 2.851 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-72ae3ad1e6da )