AMF-Perl
view release on metacpan or search on metacpan
lib/AMF/Perl/IO/Serializer.pm view on Meta::CPAN
$self->writeString($d);
}
# DOUBLES
elsif ($type eq "double")
{
$self->writeNumber($d);
}
# INTEGERS
elsif ($type eq "integer")
{
$self->writeNumber($d);
}
# OBJECTS
elsif ($type eq "object")
{
$self->writeHash($d);
}
# ARRAYS
elsif ($type eq "array")
{
$self->writeArray($d);
}
# HASHAS
elsif ($type eq "hash")
{
$self->writeHash($d);
}
# NULL
elsif ($type eq "NULL")
{
$self->writeNull();
}
# UDF's
elsif ($type eq "user function")
{
}
elsif ($type eq "resource")
{
my $resource = get_resource_type($d); # determine what the resource is
$self->writeData($d, $resource); # resend with $d's specific resource type
}
# XML
elsif (lc($type) eq "xml")
{
$self->writeXML($d);
}
# Dates
elsif (lc($type) eq "date")
{
$self->writeDate($d);
}
# mysql recordset resource
elsif (lc($type) eq "amfobject") # resource type
{
# write the record set to the output stream
$self->writeAMFObject($d); # writes recordset formatted for Flash
}
else
{
print STDERR "Unsupported Datatype $type in AMF::Perl::IO::Serializer";
die;
}
}
sub deduceType
{
my ($self, $scalar) = @_;
my $type = "string";
if ($scalar =~ m/^(\d{4})\-(\d{2})\-(\d{2})( (\d{2}):(\d{2}):(\d{2}))?$/)
{
# Handle "YYYY-MM-DD" and "YYYY-MM-DD HH:MM:SS"
require POSIX;
if ($4) {
$scalar = POSIX::mktime($7,$6,$5,$3,$2 - 1,$1 - 1900) * 1000;
} else {
$scalar = POSIX::mktime(0,0,0,$3,$2 - 1,$1 - 1900) * 1000;
}
$type = "date";
} elsif ($scalar =~ m/[^0-9\.\-]/) {
$type = "string";
} elsif ($scalar =~ m/\..*\./) {
# More than 1 period (e.g. IP address)
$type = "string";
} elsif (($scalar =~ m/.\-/) or ($scalar eq '-')) {
# negative anywhere but at the beginning
$type = "string";
} elsif ($scalar =~ m/\./) {
$type = "double";
} elsif ($scalar eq '') {
$type = "string";
} else {
$type = "integer";
}
return ($type, $scalar);
}
1;
( run in 1.635 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )