Show
Ignore:
Timestamp:
04/18/08 16:58:49 (8 months ago)
Author:
daisuke
Message:

lang/perl/WebService-Simple; make the test accept a flickr API, and actually parse the response

Location:
lang/perl/WebService-Simple/branch/lwp-base
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/WebService-Simple/branch/lwp-base/lib/WebService/Simple.pm

    r9686 r9687  
    55use warnings; 
    66use base qw(LWP::UserAgent Class::Data::ConfigHash); 
     7use WebService::Simple::Response; 
    78use UNIVERSAL::require; 
    89 
     
    7576        Carp::croak("request to $url failed"); 
    7677    } 
    77     # まだできてない 
    78     # WebService::Simple::Response->new_from_response( 
    79     #   response => $response, 
    80     #   parser   => $self->reponse_parser 
    81     # ); 
    82     return $response; 
     78 
     79    return WebService::Simple::Response->new_from_response( 
     80        response => $response, 
     81        parser   => $self->response_parser 
     82    ); 
    8383} 
    8484 
  • lang/perl/WebService-Simple/branch/lwp-base/lib/WebService/Simple/Response.pm

    r8953 r9687  
     1# $Id$ 
     2 
    13package WebService::Simple::Response; 
     4use strict; 
     5use warnings; 
     6use base qw(HTTP::Response); 
    27 
    3 use warnings; 
    4 use strict; 
    5 use Carp; 
    6 use XML::Simple; 
    7 our $VERSION = '0.01'; 
     8sub new_from_response 
     9{ 
     10    # XXX hack. This probably should be changed... 
     11    my $class = shift; 
     12    my %args  = @_; 
     13    my $self = bless $args{response}, $class; 
     14    $self->{__parser} = $args{parser}; 
     15    return $self; 
     16} 
    817 
    9 sub HTTP::Response::parse_xml { 
    10     my ($self, $opt) = @_; 
    11     my $xs = XML::Simple->new( %$opt ); 
    12     my $results; 
    13     eval { $results = $xs->XMLin($self->content) }; 
    14     croak("can't parse xml") if ($@); 
    15     return $results; 
     18sub parse_response 
     19{ 
     20    my $self = shift; 
     21    return $self->{__parser}->parse_response($self); 
    1622} 
    1723 
  • lang/perl/WebService-Simple/branch/lwp-base/t/01_basic.t

    r9681 r9687  
    11use strict; 
    2 use Test::More (tests => 5); 
     2use Test::More; 
    33 
     4my ($flickr_api_key); 
    45BEGIN 
    56{ 
     7    $flickr_api_key = $ENV{FLICKR_API_KEY}; 
     8    if (! $flickr_api_key ) { 
     9        plan( skip_all => "Please set FLICKR_API_KEY to enable this test" ); 
     10    } else { 
     11        plan( tests => 10 ); 
     12    } 
     13 
    614    use_ok("WebService::Simple"); 
    715} 
     
    1018    my $simple = WebService::Simple->new( 
    1119        base_url => "http://api.flickr.com/services/rest/", 
     20        params   => { 
     21            api_key => $flickr_api_key 
     22        } 
    1223    ); 
    1324 
     
    1627    ok( $simple->response_parser, "parser ok" ); 
    1728    isa_ok( $simple->response_parser, "WebService::Simple::Parser::XML::Simple", "parser isa WebService::Simple::Parser::XML::Simple" ); 
     29 
     30    my $response = $simple->get( { method => "flickr.test.echo", name => "value" } ); 
     31 
     32    ok( $response ); 
     33    isa_ok( $response, "WebService::Simple::Response" ); 
     34 
     35    my $h = $response->parse_response; 
     36    ok($h); 
     37    isa_ok($h, 'HASH'); 
     38 
     39    is( $h->{name}, 'value' ); 
    1840}