HTTP-MobileAgent

 view release on metacpan or  search on metacpan

lib/HTTP/MobileAgent/AirHPhone.pm  view on Meta::CPAN


sub carrier { 'H' }

sub carrier_longname { 'AirH' }

sub parse {
    my $self = shift;
    my $ua = $self->user_agent;
    $ua =~ 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;
}

sub _make_display {
    # XXX
}

sub user_id {
    # XXX
}

lib/HTTP/MobileAgent/DoCoMo.pm  view on Meta::CPAN

    my $self = shift;
    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->{is_foma} = 1;
	@{$self}{qw(name version)} = split m!/!, $main;
	$self->_parse_foma($foma_or_comment);
    } else {
	# DoCoMo/1.0/R692i/c10
	$self->_parse_main($main);
    }

    $self->{xhtml_compliant} =
      ( $self->is_foma && !( $self->html_version && $self->html_version == 3.0 ) )
      ? 1
      : 0;
}

sub _parse_main {
    my($self, $main) = @_;
    my($name, $version, $model, $cache, @rest) = split m!/!, $main;
    $self->{name}    = $name;
    $self->{version} = $version;
    $self->{model}   = $model;
    $self->{model}   = 'SH505i' if $self->{model} eq 'SH505i2';

    if ($cache) {
	$cache =~ s/^c// or return $self->no_match;
	$self->{cache_size} = $cache;
    }

lib/HTTP/MobileAgent/EZweb.pm  view on Meta::CPAN


sub parse {
    my $self = shift;
    my $ua = $self->user_agent;
    if ($ua =~ s/^KDDI\-//) {
	# KDDI-TS21 UP.Browser/6.0.2.276 (GUI) MMP/1.1
	$self->{xhtml_compliant} = 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, $comment) = split / /, $ua, 3;
	my($name, $software) = split m!/!, $browser;
	$self->{name} = $name;
	@{$self}{qw(version device_id)} = split /-/, $software;
	$self->{server} = $server;
	if ($comment) {
	    $comment =~ s/^\((.*)\)$/$1/;
	    $self->{comment} = $comment;
	}
    }
    $self->{model} = $self->{device_id};
}

lib/HTTP/MobileAgent/NonMobile.pm  view on Meta::CPAN

use vars qw($VERSION);
$VERSION = 0.03;
use base qw(HTTP::MobileAgent);

__PACKAGE__->make_accessors(
    qw(model device_id)
);

sub parse {
    my $self = shift;
    my($name, $version) = split m!/!, $self->user_agent;
    $self->{name} = $name;
    $self->{version} = $version;
    $self->{device_id} = '';
	$self->{model} = '';
}

sub is_non_mobile { 1 }

sub carrier { 'N' }

lib/HTTP/MobileAgent/Vodafone.pm  view on Meta::CPAN

    return $self->_parse_3gc if($self->user_agent =~ /^Vodafone/);
    return $self->_parse_softbank_3gc if($self->user_agent =~ /^SoftBank/);
    return $self->_parse_motorola_3gc if($self->user_agent =~ /^MOT-/);
    return $self->_parse_crawler if($self->user_agent =~ /^Nokia/); # ad hoc

    my($main, @rest) = split / /, _subtract_ua($self->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->get_header('x-jphone-java')) {
            $self->{type} = 'C4';
        } else {

lib/HTTP/MobileAgent/Vodafone.pm  view on Meta::CPAN

sub _parse_3gc {
    my $self = shift;

    # 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.*)$/;
    my %java_info = map split(m!/!), split / /,$java_info;
    $self->{java_info} = \%java_info;
}

# for softbank 3gc

lib/HTTP/MobileAgent/Vodafone.pm  view on Meta::CPAN

# for motorola 3gc
sub _parse_motorola_3gc{
    my $self = shift;
    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->get_header('x-jphone-msname');
}

# for crawler
sub _parse_crawler {
    my $self = shift;
    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 _make_display {
    my $self = shift;



( run in 0.739 second using v1.01-cache-2.11-cpan-71847e10f99 )