Show
Ignore:
Timestamp:
04/18/08 08:33:07 (7 years ago)
Author:
tokuhirom
Message:

絵文字じ までは復活した。そして、プラグインよびだしまわりの規約もいろいろかえた。

Location:
lang/perl/Moxy/branches/CC
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Moxy/branches/CC/config.yaml

    r9654 r9664  
    1616  - module: Filter::XMLisHTML 
    1717  - module: Filter::UserAgentSwitcher 
    18 # - module: Filter::Pictogram 
     18  - module: Filter::Pictogram 
    1919# - module: Filter::HTMLWidth 
    2020# - module: Filter::HTTPEnv 
  • lang/perl/Moxy/branches/CC/lib/Moxy/Plugin/Filter/Pictogram.pm

    r9648 r9664  
    22use strict; 
    33use warnings; 
    4 use base qw/Class::Component::Plugin/; 
     4use base qw/Moxy::Plugin/; 
    55use Moxy::Util; 
    66use Path::Class; 
    77use HTML::ReplacePictogramMobileJp; 
     8use HTTP::MobileAttribute; 
    89 
    9 sub register { 
    10     my ($class, $context) = @_; 
     10sub response_filter :Hook('response_filter') { 
     11    my ( $self, $context, $args, ) = @_; 
     12    return unless ( ( $args->{response}->header('Content-Type') || '' ) =~ /html/ ); 
     13    return if $args->{mobile_attribute}->is_non_mobile; 
    1114 
    12     # registering pictogram replacer. 
    13     for my $carrier (qw/I E V H/) { 
    14         $context->register_hook( "response_filter_$carrier" => sub { 
    15             my ($context, $args, ) = @_; 
    16             return unless (($args->{response}->header('Content-Type')||'') =~ /html/); 
     15    my $carrier = $args->{mobile_attribute}->carrier; 
    1716 
    18             my $charset = Moxy::Util->detect_charset($args->{response}, $args->{content_ref}); 
    19             $charset = ($charset =~ /utf-?8/i) ? 'utf8' : 'sjis'; 
     17    my $charset = 
     18        Moxy::Util->detect_charset( $args->{response}, $args->{content_ref} ); 
     19    $charset = ( $charset =~ /utf-?8/i ) ? 'utf8' : 'sjis'; 
    2020 
    21             ${ $args->{content_ref} } = HTML::ReplacePictogramMobileJp->replace( 
    22                 html     => ${ $args->{content_ref} }, 
    23                 carrier  => $carrier, 
    24                 charset  => $charset, 
    25                 callback => sub { 
    26                     my ( $unicode, $carrier ) = @_; 
     21    $args->{response}->content( 
     22        HTML::ReplacePictogramMobileJp->replace( 
     23            html     => $args->{response}->content, 
     24            carrier  => $carrier, 
     25            charset  => $charset, 
     26            callback => sub { 
     27                my ( $unicode, $carrier ) = @_; 
    2728 
    28                     my $pict_html = $class->render_template( $context, 'pict.tmpl' ); 
    29                     return sprintf( $pict_html, $carrier, $unicode, $unicode ); 
    30                 } 
    31             ); 
    32             ${ $args->{content_ref} }; 
    33         }); 
     29                my $pict_html = 
     30                    $self->render_template( $context, 'pict.tmpl' ); 
     31                return sprintf( $pict_html, $carrier, $unicode, $unicode ); 
     32            } 
     33        ) 
     34    ); 
     35} 
     36 
     37sub deliver_pictogram :Hook('request_filter') { 
     38    my ($self, $context, $args) = @_; 
     39    die "request missing" unless $args->{request}; 
     40 
     41    if ($args->{request}->uri =~ m{http://pictogram\.moxy/([IEV])/([0-9A-F]{4}).gif}) { 
     42        my $content = file($self->assets_path($context), 'image', $1, "$2.gif")->slurp; 
     43 
     44        my $response = HTTP::Response->new( 200, 'ok' ); 
     45        $response->header( 'Expires' => 'Thu, 15 Apr 2030 20:00:00 GMT' ); 
     46        $response->content_type("image/gif"); 
     47        $response->content($content); 
     48        $response; 
    3449    } 
    35  
    36     # deliver pictogram 
    37     $context->register_hook(request_filter => sub { 
    38         my ($context, $args) = @_; 
    39         die "request missing" unless $args->{request}; 
    40  
    41         if ($args->{request}->uri =~ m{http://pictogram\.moxy/([IEV])/([0-9A-F]{4}).gif}) { 
    42             my $content = file($class->assets_path($context), 'image', $1, "$2.gif")->slurp; 
    43  
    44             my $response = HTTP::Response->new( 200, 'ok' ); 
    45             $response->header( 'Expires' => 'Thu, 15 Apr 2030 20:00:00 GMT' ); 
    46             $response->content_type("image/gif"); 
    47             $response->content($content); 
    48             $response; 
    49         } 
    50     }); 
    5150} 
    5251 
  • lang/perl/Moxy/branches/CC/lib/Moxy/Plugin/Server.pm

    r9654 r9664  
    1515use URI::Heuristic qw(uf_uristr); 
    1616use HTTP::MobileAttribute plugins => [ 
    17     qw/CarrierLetter/ 
     17    qw/CarrierLetter IS/ 
    1818]; 
    1919our @EXPORT = qw/rewrite handle_request render_control_panel/; 
     
    216216        } 
    217217    ); 
     218    my $mobile_attribute = HTTP::MobileAttribute->new($req->header('User-Agent')); 
    218219    my $agent = $context->get_ua_info($req->header('User-Agent')); 
    219     my $carrier = $agent->{agent} ? HTTP::MobileAttribute->new($agent->{agent})->carrier : 'N'; 
     220    my $carrier = $mobile_attribute->carrier; 
    220221    for my $hook ('request_filter', "request_filter_$carrier") { 
    221222        my $response = $context->run_hook_and_get_response( 
    222223            $hook, 
    223224            +{ 
    224                 request => $req,    # HTTP::Request object 
    225                 agent   => $agent, 
    226                 user    => $args{user_id}, 
     225                request          => $req,              # HTTP::Request object 
     226                mobile_attribute => $mobile_attribute, 
     227                user             => $args{user_id}, 
    227228            } 
    228229        ); 
     
    239240    ); 
    240241    my $response = $ua->request($req); 
    241     for my $hook ('response_filter', "response_filter_$carrier") { 
     242    for my $hook ( 'response_filter', "response_filter_$carrier" ) { 
    242243        $context->run_hook( 
    243244            $hook, 
    244             {   response    => $response, # HTTP::Response object 
    245                 agent       => $agent, 
    246                 user        => $args{user_id}, 
     245            { 
     246                response         => $response,           # HTTP::Response object 
     247                mobile_attribute => $mobile_attribute, 
     248                user             => $args{user_id}, 
    247249            } 
    248250        ); 
  • lang/perl/Moxy/branches/CC/lib/Moxy/Util.pm

    r3964 r9664  
    2323 
    2424sub detect_charset { 
    25     my ($class, $response, $body) = @_; 
     25    my ($class, $response) = @_; 
    2626 
    2727    my $charset; 
     
    2929        $charset = $1; 
    3030    } 
    31     $charset ||= ( $body =~ /<\?xml version="1.0" encoding="([\w\-]+)"\?>/ )[0];  
    32     $charset ||= ( $body =~ m!<meta http-equiv="Content-Type" content=".*charset=([\w\-]+)"!i )[0];  
    33     $charset ||= $Detector->($body);  
     31    $charset ||= ( $response->content() =~ /<\?xml version="1.0" encoding="([\w\-]+)"\?>/ )[0];  
     32    $charset ||= ( $response->content() =~ m!<meta http-equiv="Content-Type" content=".*charset=([\w\-]+)"!i )[0];  
     33    $charset ||= $Detector->($response->content());  
    3434    $charset ||= 'utf-8';  
    3535