HTTP-MobileAttribute
view release on metacpan or search on metacpan
lib/HTTP/MobileAttribute/Agent/AirHPhone.pm view on Meta::CPAN
use warnings;
use HTTP::MobileAttribute::Agent::Base;
__PACKAGE__->mk_accessors(qw/name vendor model model_version browser_version cache_size/);
sub parse {
my ($self, ) = @_;
$self->user_agent =~ m!^Mozilla/3\.0\((WILLCOM|DDIPOCKET);(.*)\)! or return $self->no_match;
$self->{name} = $1;
@{$self}{qw(vendor model model_version browser_version cache_size)} = split m!/!, $2;
$self->{cache_size} =~ s/^c//i;
}
1;
lib/HTTP/MobileAttribute/Agent/DoCoMo.pm view on Meta::CPAN
my ( $main, $foma_or_comment ) = split / /, $self->user_agent, 2;
if ( $foma_or_comment && $foma_or_comment =~ s/^\((.*)\)$/$1/ ) {
# DoCoMo/1.0/P209is (Google CHTML Proxy/1.0)
$self->{comment} = $1;
$self->_parse_main($main);
}
elsif ($foma_or_comment) {
# DoCoMo/2.0 N2001(c10;ser0123456789abcde;icc01234567890123456789)
@{$self}{qw(name version)} = split m!/!, $main;
$self->_parse_foma($foma_or_comment);
}
else {
# DoCoMo/1.0/R692i/c10
$self->_parse_main($main);
}
}
sub _parse_main {
my ( $self, $main ) = @_;
my ( $name, $version, $model, $selfache, @rest ) = split m!/!, $main;
$self->{name} = $name;
$self->{version} = $version;
$self->{model} = $model;
$self->{model} = 'SH505i' if $self->{model} eq 'SH505i2';
if ($selfache) {
$selfache =~ s/^c// or return $self->no_match;
$self->{cache_size} = $selfache;
}
lib/HTTP/MobileAttribute/Agent/EZweb.pm view on Meta::CPAN
sub parse {
my ( $self, ) = @_;
my $ua = $self->user_agent;
if ( $ua =~ s/^KDDI\-// ) {
# KDDI-TS21 UP.Browser/6.0.2.276 (GUI) MMP/1.1
my ( $device, $browser, $opt, $server ) = split / /, $ua, 4;
$self->{device_id} = $device;
my ( $name, $version ) = split m!/!, $browser;
$self->{name} = $name;
$self->{version} = "$version $opt";
$self->{server} = $server;
}
else {
# UP.Browser/3.01-HI01 UP.Link/3.4.5.2
my ( $browser, $server, $selfomment ) = split / /, $ua, 3;
my ( $name, $software ) = split m!/!, $browser;
$self->{name} = $name;
@{$self}{qw(version device_id)} = split /-/, $software;
$self->{server} = $server;
if ($selfomment) {
$selfomment =~ s/^\((.*)\)$/$1/;
$self->{comment} = $selfomment;
}
}
$self->{model} = $self->{device_id};
}
lib/HTTP/MobileAttribute/Agent/ThirdForce.pm view on Meta::CPAN
return $self->_parse_3gc() if($user_agent =~ /^Vodafone/);
return $self->_parse_softbank_3gc() if($user_agent =~ /^SoftBank/);
return $self->_parse_motorola_3gc() if($user_agent =~ /^MOT-/);
return $self->_parse_crawler() if($user_agent =~ /^Nokia/); # ad hoc
my($main, @rest) = split / /, _subtract_ua($user_agent);
if (@rest) {
# J-PHONE/4.0/J-SH51/SNJSHA3029293 SH/0001aa Profile/MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.1.0
$self->{packet_compliant} = 1;
@{$self}{qw(name version model serial_number)} = split m!/!, $main;
if ($self->{serial_number}) {
$self->{serial_number} =~ s/^SN// or return $self->no_match;
}
my $vendor = shift @rest;
@{$self}{qw(vendor vendor_version)} = split m!/!, $vendor;
my %java_info = map split(m!/!), @rest;
$self->{java_info} = \%java_info;
} else {
# J-PHONE/2.0/J-DN02
@{$self}{qw(name version model)} = split m!/!, $main;
$self->{name} = 'J-PHONE' if $self->{name} eq 'J-Phone'; # for J-Phone/5.0/J-SH03 (YahooSeeker)
$self->{vendor} = ($self->{model} =~ /J-([A-Z]+)/)[0] if $self->{model};
}
if ($self->version =~ /^2\./) {
$self->{type} = 'C2';
} elsif ($self->version =~ /^3\./) {
if ($self->request->get('x-jphone-java')) {
$self->{type} = 'C4';
} else {
lib/HTTP/MobileAttribute/Agent/ThirdForce.pm view on Meta::CPAN
sub _parse_3gc {
my ($self, ) = @_;
# Vodafone/1.0/V802SE/SEJ001 Browser/SEMC-Browser/4.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
# Vodafone/1.0/V702NK/NKJ001 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1
# SoftBank/1.0/910T/TJ001 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
my($main, @rest) = split / /, $self->user_agent;
$self->{packet_compliant} = 1;
$self->{type} = '3GC';
@{$self}{qw(name version model _maker serial_number)} = split m!/!, $main;
if ($self->{serial_number}) {
$self->{serial_number} =~ s/^SN// or return $self->no_match;
}
my($java_info) = $self->user_agent =~ /(Profile.*)$/;
if ($java_info) {
my %java_info = map split(m!/!), split / /,$java_info;
$self->{java_info} = \%java_info;
}
}
lib/HTTP/MobileAttribute/Agent/ThirdForce.pm view on Meta::CPAN
sub _parse_motorola_3gc{
my ($self, ) = @_;
my($main, @rest) = split / /, $self->user_agent;
#MOT-V980/80.2B.04I MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
$self->{packet_compliant} = 1;
$self->{type} = '3GC';
@{$self}{qw(name)} = split m!/!, $main;
shift @rest;
my %java_info = map split(m!/!), @rest;
$self->{java_info} = \%java_info;
$self->{model} = 'V702MO' if $self->{name} eq 'MOT-V980';
$self->{model} = 'V702sMO' if $self->{name} eq 'MOT-C980';
$self->{model} ||= $self->request->get('x-jphone-msname');
}
# for crawler
sub _parse_crawler {
my ($self, ) = @_;
my($main, @rest) = split / /, _subtract_ua($self->user_agent);
# Nokia6820/2.0 (4.83) Profile/MIDP-1.0 Configuration/CLDC-1.0
@{$self}{qw(model)} = split m!/!, $main;
$self->{name} = 'Vodafone';
$self->{type} = '3GC';
shift @rest;
my %java_info = map split(m!/!), @rest;
$self->{java_info} = \%java_info;
}
sub _subtract_ua {
my $user_agent = shift;
( run in 0.654 second using v1.01-cache-2.11-cpan-71847e10f99 )