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
     }

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_mobile
         if ($agent->is_mobile) {
             # it's really a mobile agent
         }

       returns if the agent is mobile or not.

   is_docomo, is_j_phone, is_ezweb
       returns if the agent is DoCoMo or J-Phone or EZWeb.

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.

CREDITS
   Satoshi Tanimoto <[email protected]>
   Yoshiki Kurihara <[email protected]>

AUTHOR
   Tatsuhiko Miyagawa <[email protected]>

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

SEE ALSO
   the HTTP::MobileAgent::DoCoMo manpage, the HTTP::MobileAgent::JPhone
   manpage, the HTTP::MobileAgent::EZweb manpage, the
   HTTP::MobileAgent::NonMobile manpage, the HTTP::BrowserDetect manpage

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