Hatena::Groupmobilehacker

ziguzaguの日記

2008-10-31

ブラウザキャッシュサイズの取得 15:34 はてなブックマーク -  ブラウザキャッシュサイズの取得 - ziguzaguの日記

とある 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/』な端末の考慮はきえるであろうことを期待(え、もうしてない?)。