Changeset 8740
- Timestamp:
- 04/03/08 15:52:01 (8 months ago)
- Location:
- lang/perl/HTTP-MobileAttribute/trunk/lib/HTTP
- Files:
-
- 7 modified
-
MobileAttribute.pm (modified) (4 diffs)
-
MobileAttribute/Attribute/CarrierMethod.pm (modified) (1 diff)
-
MobileAttribute/Plugin.pm (modified) (1 diff)
-
MobileAttribute/Plugin/Default/AirHPhone.pm (modified) (1 diff)
-
MobileAttribute/Plugin/Default/DoCoMo.pm (modified) (1 diff)
-
MobileAttribute/Plugin/Default/EZweb.pm (modified) (1 diff)
-
MobileAttribute/Plugin/Default/ThirdForce.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/HTTP-MobileAttribute/trunk/lib/HTTP/MobileAttribute.pm
r8738 r8740 8 8 use Scalar::Util qw/refaddr/; 9 9 10 __PACKAGE__->load_components(qw/ Autocall::InjectMethod/);10 __PACKAGE__->load_components(qw/DisableDynamicPlugin Autocall::InjectMethod/); 11 11 __PACKAGE__->load_plugins(qw/ 12 12 Carrier IS GPS 13 Default::DoCoMo Default::ThirdForce Default::EZweb Default::NonMobile Default::AirHPhone 13 14 /); 14 15 … … 22 23 # create a function that does the right thing and use it 23 24 my $carrier_longname = HTTP::MobileAttribute::CarrierDetector::detect($request->get('User-Agent')); 24 my $self = $class->NEXT( 25 my $carrier_class = $class->agent_class($carrier_longname); 26 27 for my $type (qw/ components plugins methods hooks /) { 28 my $method = "class_component_$type"; 29 $carrier_class->$method($class->$method); 30 } 31 32 my $self = $carrier_class->NEXT( 25 33 'new' => +{ 26 34 request => $request, … … 28 36 } 29 37 ); 30 $self = bless {%$self}, "HTTP::MobileAttribute::Agent::$carrier_longname"; # rebless to carrier specific package. 31 $self-> load_plugins("Default::$carrier_longname");38 39 $self->run_hook("instance_clear"); # clear instance data 32 40 $self->run_hook("initialize_$carrier_longname"); 33 41 return $self; … … 40 48 41 49 sub user_agent { shift->request->get('User-Agent') } 50 51 sub agent_class { 'HTTP::MobileAttribute::Agent::' . $_[1] } 42 52 43 53 package # hide from pause -
lang/perl/HTTP-MobileAttribute/trunk/lib/HTTP/MobileAttribute/Attribute/CarrierMethod.pm
r8709 r8740 7 7 my ( $class, $plugin, $c, $method, $carrier, $code ) = @_; 8 8 9 if ($c->carrier_longname eq $carrier) { 10 $c->register_method( $method => $plugin ); 11 } 9 $c->agent_class($carrier)->register_method( $method => $plugin ); 12 10 } 13 11 -
lang/perl/HTTP-MobileAttribute/trunk/lib/HTTP/MobileAttribute/Plugin.pm
r8672 r8740 5 5 6 6 sub mk_register_accessors { 7 my $self = shift;8 my $c = shift;9 my $class = ref $self;7 my $self = shift; 8 my $carrier = shift; 9 my $class = ref $self; 10 10 11 my $pkg = HTTP::MobileAttribute->agent_class($carrier); 11 12 for my $method (@_) { 12 13 no strict 'refs'; 13 14 *{"$class\::$method"} = sub { shift->{$method} } unless *{"$class\::$method"}{CODE}; 14 $ c->register_method( $method => $self );15 $pkg->register_method( $method => $self ); 15 16 } 16 17 } 18 19 sub instance_clear : Hook('instance_clear') { 20 my($self, $c) = @_; 21 for my $key (keys %{ $self }) { 22 delete $self->{$key} unless $key eq 'config'; 23 } 24 } 25 17 26 1; -
lang/perl/HTTP-MobileAttribute/trunk/lib/HTTP/MobileAttribute/Plugin/Default/AirHPhone.pm
r8736 r8740 7 7 my ($self, $c) = @_; 8 8 9 $self->mk_register_accessors( $c=> qw(name vendor model model_version browser_version cache_size));9 $self->mk_register_accessors( AirHPhone => qw(name vendor model model_version browser_version cache_size)); 10 10 $self->parse($c->user_agent); 11 11 } -
lang/perl/HTTP-MobileAttribute/trunk/lib/HTTP/MobileAttribute/Plugin/Default/DoCoMo.pm
r8736 r8740 6 6 our $DefaultCacheSize = 5; 7 7 8 8 9 sub initialize : Hook('initialize_DoCoMo') { 9 10 my ( $self, $c ) = @_; 10 11 11 $self->mk_register_accessors( $c => qw/version model status bandwidth serial_number is_foma card_id xhtml_compliant comment/); 12 12 $self->mk_register_accessors( DoCoMo => qw/version model status bandwidth serial_number is_foma card_id xhtml_compliant comment/); 13 13 $self->parse( $c ); 14 14 } -
lang/perl/HTTP-MobileAttribute/trunk/lib/HTTP/MobileAttribute/Plugin/Default/EZweb.pm
r8736 r8740 7 7 my ( $self, $c ) = @_; 8 8 9 $self->mk_register_accessors( $c=> qw(name version model device_id server xhtml_compliant comment));9 $self->mk_register_accessors( EZweb => qw(name version model device_id server xhtml_compliant comment)); 10 10 11 11 $self->parse( $c ); -
lang/perl/HTTP-MobileAttribute/trunk/lib/HTTP/MobileAttribute/Plugin/Default/ThirdForce.pm
r8736 r8740 7 7 my ($self, $c) = @_; 8 8 9 $self->mk_register_accessors( $c=> qw(name version model type packet_compliant serial_number vendor vendor_version java_info));9 $self->mk_register_accessors( ThirdForce => qw(name version model type packet_compliant serial_number vendor vendor_version java_info)); 10 10 $self->{user_agent} = $c->user_agent; 11 11 $self->parse($c);
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)