The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use strict;
use warnings;
use Test::Most;

use WebService::Tumblr;
use Try::Tiny;

my ( $tumblr, $dispatch, $request, $response, $content );

sub request (&) {
    my $code = shift;
    try {
        $code->();
    }
    catch {
        diag $tumblr->error_result->request->as_string;
        diag $tumblr->error_result->response->as_string;
        die $_[0];
    };
}

$tumblr = WebService::Tumblr->new( url => 'rokekr' );
$tumblr->identity( 'rokekr+tumblr@gmail.com', 'tumblrtumblr' );

ok( $tumblr );
is( $tumblr->url, 'http://rokekr.tumblr.com' );
is( $tumblr->name, 'rokekr' );

$tumblr->url( 'xyzzy.tumblr.com' );
is( $tumblr->url, 'http://xyzzy.tumblr.com' );
is( $tumblr->name, 'xyzzy' );

$tumblr->name( 'rokekr-tumblr' );
is( $tumblr->url, 'http://rokekr-tumblr.tumblr.com' );
is( $tumblr->name, 'rokekr-tumblr' );

$dispatch = $tumblr->posts;
is( $dispatch->request->as_string, "GET http://rokekr-tumblr.tumblr.com/api/read\n\n" );

$dispatch = $tumblr->write;
is( $dispatch->method, 'POST' );
$request = $dispatch->request->as_string;
like( $request, qr!^POST https://www.tumblr.com/api/write! );
like( $request, qr!Content-Length: \d{1,}! );

use WebService::Tumblr::Dispatch;
use WebService::Tumblr::Result;

done_testing;

__END__

$dispatch = $tumblr->posts( url => 'rokekr' );
diag $dispatch->response->as_string;

ok( $dispatch );

$dispatch = $tumblr->authenticate;
diag $dispatch->response->as_string;

#request { $content = $tumblr->pages };

#$tumblr->blog( 'rokekr' );
#is( $tumblr->blog, 'http://rokekr.tumblr.com' );

#request { $content = $tumblr->authenticate };
#ok( $content );
#explain( $content );

#request { $content = $tumblr->posts };
#ok( $content );
#explain( $content );

#request { $content = $tumblr->pages };
#ok( $content );
#explain( $content );

done_testing;