Changeset 5817

Show
Ignore:
Timestamp:
01/30/08 00:51:19 (5 years ago)
Author:
kentaro
Message:

lang/perl/WWW-HatenaDiary?: Merged from Yappo's branch which enhances this module using WWW::HatenaLogin?

Location:
lang/perl/WWW-HatenaDiary/trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/WWW-HatenaDiary/trunk

  • lang/perl/WWW-HatenaDiary/trunk/Makefile.PL

    r4595 r5817  
    99    JSON::Syck 
    1010/); 
     11requires WWW::HatenaLogin => 0.02; 
    1112 
    1213build_requires 'Test::More'; 
  • lang/perl/WWW-HatenaDiary/trunk/lib/WWW/HatenaDiary.pm

    r4606 r5817  
    77use WWW::Mechanize; 
    88use JSON::Syck 'Load'; 
     9use WWW::HatenaLogin; 
    910 
    1011our $VERSION = '0.01'; 
    11  
    12 my $login_uri = 'https://www.hatena.ne.jp/login'; 
    1312 
    1413sub new { 
     
    1918        base     => $base, 
    2019        group    => $args->{group}, 
    21         username => $args->{username}, 
    22         password => $args->{password}, 
    23         mech     => WWW::Mechanize->new( 
    24             $args->{mech_opt} && ref $args->{mech_opt} ? %{$args->{mech_opt}} : () 
    25         ), 
     20        login    => $args->{login} || WWW::HatenaLogin->new({ nologin => 1, %{ $args } }), 
    2621        verbose  => $args->{verbose}, 
    2722    }, $class; 
     
    3126            process '//td[@class="username"]/a', 'username' => 'TEXT'; 
    3227            result 'username'; 
    33         }->scrape($self->{mech}->content, URI->new($login_uri)); 
    34         $self->{username} = $username if !$self->{username}; 
    35         $self->{diary}    = "$self->{base}$self->{username}/"; 
     28        }->scrape($self->{login}->mech->content, $self->{login}->login_uri); 
     29        $self->{login}->username($username) if !$self->{login}->username; 
     30        $self->{diary}    = $self->{base}.$self->{login}->username.'/'; 
    3631    } 
    3732 
     
    4136sub is_loggedin { 
    4237    my $self = shift; 
    43     my $link; 
    44  
    45     $self->{mech}->get($login_uri); 
    46     ($link) = map { $_->url } $self->{mech}->find_link(tag => 'meta'); 
    47  
    48     !!$link; 
     38    $self->{login}->is_loggedin; 
    4939} 
    5040 
     
    5242    my ($self, $args) = @_; 
    5343 
    54     if ($args) { 
    55         if ($args->{username}) { 
    56             $self->{username} = $args->{username}; 
    57         } 
    58         if ($args->{password}) { 
    59             $self->{password} = $args->{password}; 
    60         } 
    61     } 
    62  
    63     $self->{diary} = "$self->{base}$self->{username}/"; 
    64     $self->{mech}->get($login_uri); 
    65     $self->{mech}->submit_form( 
    66         fields => { 
    67             name     => $self->{username}, 
    68             password => $self->{password}, 
    69         } 
    70     ); 
     44    $self->{login}->login($args); 
     45    $self->{diary} = $self->{base}.$self->{login}->username.'/'; 
    7146 
    7247    !!($self->{rkm} = $self->get_rkm) || 
     
    7853    my $rkm; 
    7954 
    80     $self->{mech}->get("$self->{diary}?mode=json"); 
     55    $self->{login}->mech->get("$self->{diary}?mode=json"); 
    8156    eval { 
    82         $rkm = Load($self->{mech}->content)->{rkm}; 
     57        $rkm = Load($self->{login}->mech->content)->{rkm}; 
    8358    }; 
    8459 
     
    10176        if !$args->{uri}; 
    10277 
    103     $self->{mech}->get("$args->{uri}?mode=json"); 
    104     Load($self->{mech}->content); 
     78    $self->{login}->mech->get("$args->{uri}?mode=json"); 
     79    Load($self->{login}->mech->content); 
    10580} 
    10681 
     
    11590 
    11691        my $uri = "$self->{diary}edit?date=$y$m$d"; 
    117         $self->{mech}->get($uri); 
    118         my $form = $self->{mech}->form_name('edit'); 
     92        $self->{login}->mech->get($uri); 
     93        my $form = $self->{login}->mech->form_name('edit'); 
    11994 
    12095        { 
     
    147122 
    148123        my $uri = "$self->{diary}edit?date=$y$m$d"; 
    149         $self->{mech}->get($uri); 
    150         $self->{mech}->submit_form( 
     124        $self->{login}->mech->get($uri); 
     125        $self->{login}->mech->submit_form( 
    151126            form_name => 'edit', 
    152127            fields => { 
     
    163138    } 
    164139 
    165     $self->{mech}->success; 
     140    $self->{login}->mech->success; 
    166141} 
    167142 
     
    206181        my $uri = "$self->{diary}edit?date=$y$m$d"; 
    207182 
    208         $self->{mech}->get($uri); 
     183        $self->{login}->mech->get($uri); 
    209184 
    210185        if ($self->{group}) { 
    211             for my $form ($self->{mech}->forms) { 
     186            for my $form ($self->{login}->mech->forms) { 
    212187                if ($form->action =~ /deletediary$/) { 
    213                     $self->{mech}->request($form->click); 
     188                    $self->{login}->mech->request($form->click); 
    214189                } 
    215190            } 
    216191        } 
    217192        else { 
    218             $self->{mech}->submit_form(form_number => 2); 
     193            $self->{login}->mech->submit_form(form_number => 2); 
    219194        } 
    220195    } 
     
    223198    } 
    224199 
    225     $self->{mech}->success; 
     200    $self->{login}->mech->success; 
    226201} 
    227202 
     
    230205    my $uri = $args->{uri} || $self->{diary}; 
    231206 
    232     $self->{mech}->post($uri, { 
     207    $self->{login}->mech->post($uri, { 
    233208        rkm => $self->{rkm}, 
    234209        %$args, 
  • lang/perl/WWW-HatenaDiary/trunk/t/97_podspell.t

    r4595 r5817  
    1515cpan 
    1616gmail 
     17AtomPub