NAME

HTTP::MobileAgent - HTTP mobile user agent string parser

SYNOPSIS

use HTTP::MobileAgent;

my $agent = HTTP::MobileAgent->new(Apache->request);
# or $agent = HTTP::MobileAgent->new; to get from %ENV
# or $agent = HTTP::MobileAgent->new($agent_string);

if ($agent->is_docomo) {
    # or if ($agent->name eq 'DoCoMo')
    # or if ($agent->isa('HTTP::MobileAgent::DoCoMo'))
    # it's NTT DoCoMo i-mode.
    # see what's available in H::MA::DoCoMo
} elsif ($agent->is_j_phone) {
    # it's J-Phone.
    # see what's available in H::MA::JPhone
} elsif ($agent->is_ezweb) {
    # it's KDDI/EZWeb.
    # see what's available in H::MA::EZweb
} else {
    # may be PC
    # $agent is H::MA::NonMobile
}

my $display = $agent->display;	# HTTP::MobileAgent::Display
if ($display->color) { ... }

DESCRIPTION

HTTP::MobileAgent parses HTTP_USER_AGENT strings of (mainly Japanese) mobile HTTP user agents. It'll be useful in page dispatching by user agents.

METHODS

Here are common methods of HTTP::MobileAgent subclasses. More agent specific methods are described in each subclasses. Note that some of common methods are also overrided in some subclasses.

new
$agent = HTTP::MobileAgent->new;
$agent = HTTP::MobileAgent->new($r);	# Apache or HTTP::Request
$agent = HTTP::MobileAgent->new($ua_string);

parses HTTP headers and constructs HTTP::MobileAgent subclass instance. If no argument is supplied, $ENV{HTTP_*} is used.

Note that you nees to pass Aapche or HTTP::Requet object to new(), as some mobile agents put useful information on HTTP headers other than only User-Agent: (like x-jphone-msname in J-Phone).

user_agent
print "User-Agent: ", $agent->user_agent;

returns User-Agent string.

name
print "name: ", $agent->name;

returns User-Agent name like 'DoCoMo'.

is_docomo, is_j_phone, is_ezweb, is_wap1, is_wap2, is_non_mobile
if ($agent->is_docomo) { }

returns if the agent is DoCoMo, J-Phone or EZweb.

display
my $display = $agent->display;

returns HTTP::MobileAgent::Display object. See HTTP::MobileAgent::Display for details.

WARNINGS

Following warnings might be raised when $^W is on.

"%s: no match. Might be new variants. please contact the author of HTTP::MobileAgent!"

User-Agent: string does not match patterns provided in subclasses. It may be faked user-agent or a new variant. Feel free to mail me to inform this.

NOTE

"Why not adding this module as an extension of HTTP::BrowserDetect?"

Yep, I tried to do. But the module's code seems hard enough for me to extend and don't want to bother the author for this mobile-specific features. So I made this module as a separated one.

MORE IMPLEMENTATIONS

If you have any idea / request for this module to add new subclass, I'm open to the discussion or (more preferable) patches. Feel free to mail me.

AUTHOR

Tatsuhiko Miyagawa <miyagawa@bulknews.net>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

HTTP::MobileAgent::DoCoMo, HTTP::MobileAgent::JPhone, HTTP::MobileAgent::EZweb, HTTP::MobileAgent::NonMobile, HTTP::MobileAgent::Display, HTTP::BrowserDetect

Reference URL for specification is listed in Pods for each subclass.