とある HTTP::MobileAgent を wrap してるクラスにあった、ブラウザのキャッシュサイズ取得するところを、プチリファクタ。
sub new { my $class = shift; my $query = shift; bless { query => $query, agent => HTTP::MobileAgent->new, }, $class; } sub get_cache_size { my $self = shift; return $self->{__cache_size} ||= sub { if ($self->{agent}->is_docomo) { return $self->{agent}->cache_size; } elsif ($self->{agent}->is_ezweb) { if (my $byte = $self->{query}->header_in('x-up-devcap-max-pdu')) { return int($byte/1024); } elsif ($self->{query}->header_in('x-up-devcap-screenpixels')) { my ($w) = $self->_get_ezweb_device_size; return $w >= 240 ? 20 : 9; } } elsif ($self->{agent}->is_softbank) { my $version = $self->{agent}->version; return ($self->{agent}->name ne 'J-PHONE') ? 300 : ($version =~ /^[23]\./) ? 6 : ($version =~ /^4\.[0-2]/) ? 12 : ($version =~ /^4\.3/) ? 30 : ($version =~ /^5\./) ? 200 : 100 ; } return 20; }->() * 1024; }
Softbank のあたりは怪しい。。
そんな遠くない未来に『J-PHONE/\d\.\d/』な端末の考慮はきえるであろうことを期待(え、もうしてない?)。