WebService::BuzzurlAPI::Response - Buzzurl WebService API response package


WebService-BuzzurlAPI documentation Contained in the WebService-BuzzurlAPI distribution.

Index


Code Index:

NAME

Top

WebService::BuzzurlAPI::Response - Buzzurl WebService API response package

VERSION

Top

0.02

DESCRIPTION

Top

Buzzurl WebService API response package

METHOD

Top

new

Create instance

analysis_response

Analysis http response

is_success

Check response

_error

Set error code and message

ACCESSOR METHOD

Top

errstr

Get/Set error message

json

Get json2refrence(Readonly)

res

Get HTTP::Response instance(Readonly)

SEE ALSO

Top

Class::Accessor JSON::Syck

AUTHOR

Top

Akira Horimoto

COPYRIGHT

Top


WebService-BuzzurlAPI documentation Contained in the WebService-BuzzurlAPI distribution.
package WebService::BuzzurlAPI::Response;

use strict;
use base qw(Class::Accessor);
use JSON::Syck;

__PACKAGE__->mk_accessors(qw(errstr));
__PACKAGE__->mk_ro_accessors(qw(json res));

our $VERSION = 0.02;

sub new {

    my($class, $res) = @_;

    if(ref($res) ne "HTTP::Response"){
        croak("\$res is not \"HTTP::Response\" object");
    }
    return bless { json => undef, res => $res }, $class || ref $class;
}

sub analysis_response {

    my $self = shift;
    my $json;

# response check
# for WebService::BuzzurlAPI::Request::Add and 
    if(!$self->res->is_success){
        return $self->_error($self->res->code, $self->res->message);
    }

# for redirect error
    if($self->res->content_type !~ /^application\/json/){
        return $self->_error(0, "invalid_param [" . $self->res->previous->request->uri . "]" );
    }

    $json = JSON::Syck::Load($self->res->content);

# faild json check
# for WebService::BuzzurlAPI::Request::Add
    if(ref($json) eq "HASH" && exists $json->{status} && $json->{status} ne "success"){
        return $self->_error(999, $json->{status} . " " . $json->{reason});       
    }
    
    $self->{json} = $json;
    return 1;
}

sub is_success {

    return shift->res->is_success ? 1 : 0;
}

sub _error {

    my($self, $code, $message) = @_;
    $self->res->code($code);
    $self->res->message($message);
    $self->errstr($message);
    return 0;
}

1;

__END__