Changeset 7513

Show
Ignore:
Timestamp:
03/05/08 21:37:14 (5 years ago)
Author:
takemaru
Message:

lang/perl/Catalyst-Controller-Atompub: new branches, delay-reading-media

Location:
lang/perl/Catalyst-Controller-Atompub/branches
Files:
1 added
1 modified
5 copied

Legend:

Unmodified
Added
Removed
  • lang/perl/Catalyst-Controller-Atompub/branches/delay-reading-media/lib/Catalyst/Controller/Atompub/Collection.pm

    r7264 r7513  
    88use Atompub::Util qw( is_acceptable_media_type is_allowed_category ); 
    99use Catalyst::Utils; 
    10 use File::Slurp; 
    1110use HTTP::Status; 
    1211use NEXT; 
     
    226225            unless $c->req->body; 
    227226 
    228         my $media 
    229             = read_file( $c->req->body, binmode => ':raw', err_mode => 'carp' ) 
    230                 || return $self->error( $c, RC_BAD_REQUEST, 'No media resource' ); 
    231  
    232227        my $entry = XML::Atom::Entry->new; 
    233228 
     
    252247        $rc->edited( $self->edited ); # XXX DEPRECATED 
    253248        $rc->uri( $media_uri ); 
    254         $rc->body( $media ); 
     249        $rc->body( $c->req->body ); 
    255250        $rc->type( $media_type ); 
    256251        $self->media_resource( $rc ); 
     
    398393    } 
    399394    else { 
    400         $content 
    401             = read_file( $c->req->body, binmode => ':raw', err_mode => 'carp' ) 
    402                 || return $self->error( $c, RC_BAD_REQUEST, 'No media' ); 
     395        $content = $c->req->body; 
    403396    } 
    404397 
     
    503496 
    504497use Atompub::MediaType qw( media_type ); 
     498use File::Slurp; 
    505499 
    506500use base qw( Class::Accessor::Fast ); 
     
    539533sub serialize { 
    540534    my $self = shift; 
    541     my $body = $self->body; 
    542     UNIVERSAL::can( $body, 'as_xml' ) ? $body->as_xml : $body; 
     535    if (UNIVERSAL::isa( $self->body, 'XML::Atom::Base' )) { 
     536        return $self->body->as_xml; 
     537    } 
     538    elsif (UNIVERSAL::isa( $self->body, 'File::Temp' )) { 
     539        return $self->body( scalar read_file( $self->body, binmode => ':raw' ) ); 
     540    } 
     541    else { 
     542        return $self->body; 
     543    } 
    543544} 
    544545 
  • lang/perl/Catalyst-Controller-Atompub/branches/delay-reading-media/samples/MyBlog/lib/MyBlog/Controller/MediaCollection.pm

    r6742 r7513  
    77use Atompub::DateTime qw( datetime ); 
    88use Atompub::MediaType qw( media_type ); 
    9 use MIME::Base64; 
    109use HTTP::Status; 
    1110use POSIX qw( strftime ); 
     
    7069        media_uri  => $media_uri, 
    7170        media_etag => $self->calculate_new_etag( $c, $media_uri ), 
    72         media_body => MIME::Base64::encode( $self->media_resource->body ), 
     71        media_body => $self->media_resource->serialize, 
    7372        media_type => $self->media_resource->type, 
    7473    }; 
     
    9695    } 
    9796    else { 
    98         $self->media_resource->body( MIME::Base64::decode( $rs->media_body ) ); 
     97        $self->media_resource->body( $rs->media_body ); 
    9998        $self->media_resource->type( $rs->media_type ); 
    10099    } 
     
    129128 
    130129        $vals->{media_etag} = $self->calculate_new_etag( $c, $rs->media_uri ); 
    131         $vals->{media_body} = MIME::Base64::encode( $self->media_resource->body ); 
     130        $vals->{media_body} = $self->media_resource->serialize; 
    132131        $vals->{media_type} = $media_type = $self->media_resource->type; 
    133132