Changeset 224

Show
Ignore:
Timestamp:
08/21/06 17:16:46 (2 years ago)
Author:
miya
Message:

Plagger::Enclosure: copy from plagger.org trunk.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • plagger/trunk/lib/Plagger/Enclosure.pm

    r119 r224  
    11package Plagger::Enclosure; 
    2  
    32use strict; 
    43 
    5 use base qw( Plagger::Thing ); 
    6 __PACKAGE__->mk_accessors(qw( url size content_type )); 
     4use base qw( Class::Accessor::Fast ); 
     5__PACKAGE__->mk_accessors(qw( length type local_path is_inline )); 
    76 
    8 sub new { 
    9     bless {}, $_[0]; 
     7use Plagger::Util; 
     8use URI; 
     9 
     10sub url { 
     11    my $self = shift; 
     12    if (@_) { 
     13        $self->{url} = URI->new($_[0]); 
     14    } 
     15    $self->{url}; 
    1016} 
    1117 
    12 sub media { 
    13     my $self = shift; 
    14     if($self->{media}){ 
    15         return $self->{media}; 
     18sub auto_set_type { 
     19    my($self, $type) = @_; 
     20 
     21    if (defined $type) { 
     22        return $self->type($type); 
    1623    } 
    17     else { 
    18         my $media = Plagger::Enclosure::Media->new; 
    19         $self->{media} = $media; 
    20         return $media; 
    21     } 
     24 
     25    # set MIME type via URL extension 
     26    my $mime = Plagger::Util::mime_type_of($self->url); 
     27    $self->type($mime->type) if $mime; 
    2228} 
    2329 
    24 package Plagger::Enclosure::Media; 
     30sub media_type { 
     31    my $self = shift; 
     32    ( split '/', $self->type )[0] || 'unknown'; 
     33
    2534 
    26 use strict; 
    27 use base qw( Plagger::Thing ); 
     35sub sub_type { 
     36    my $self = shift; 
     37    ( split '/', $self->type )[1] || 'unknown'; 
     38
    2839 
    29 __PACKAGE__->mk_accessors(qw( artist album title year )); 
    30  
    31 sub new { 
    32     bless {}, $_[0]; 
     40sub filename { 
     41    my $self = shift; 
     42    if (@_) { 
     43        $self->{filename} = shift; 
     44    } 
     45    $self->{filename} || (split '/', $self->url->path)[-1]; 
    3346} 
    3447 
    35481; 
     49