The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

use Moose;
has res => (
is => 'ro',
isa => 'Role::REST::Client::Response',
required => 1,
);
has method => (
is => 'ro',
isa => 'Str',
required => 1,
);
has response => (
is => 'ro',
isa => 'HashRef',
lazy => 1,
builder => '_build_response',
);
sub _build_response {
my $self = shift;
return $self->res->data->{response};
}
has status => (
is => 'ro',
isa => 'Str',
lazy => 1,
builder => '_build_status',
);
sub _build_status {
my $self = shift;
return $self->response->{status};
}
has code => (
is => 'ro',
isa => 'Int',
lazy => 1,
builder => '_build_code',
);
sub _build_code {
my $self = shift;
return $self->response->{code};
}
has message => (
is => 'ro',
isa => 'Str',
lazy => 1,
builder => '_build_message',
);
sub _build_message {
my $self = shift;
return $self->response->{message};
}
has _list => (
is => 'ro',
isa => 'ArrayRef',
traits => ['Array'],
lazy => 1,
builder => '_build__list',
handles => {
list => 'elements',
count_list => 'count',
has_list => 'count',
get_list_item => 'get',
},
);
sub _build__list {
my $self = shift;
return $self->res->data->{list} || [];
}
has item => (
is => 'ro',
isa => 'HashRef',
traits => ['Hash'],
lazy => 1,
builder => '_build_item',
handles => {
get_item => 'get',
has_item => 'count',
},
);
sub _build_item {
my $self = shift;
return $self->res->data->{item} || {};
}
has details => (
is => 'ro',
isa => 'HashRef',
traits => ['Hash'],
lazy => 1,
builder => '_build_details',
handles => {
get_detail => 'get',
has_details => 'count',
},
);
sub _build_details {
my $self = shift;
return $self->res->data->{details} || {};
}
has export_url => (
is => 'ro',
isa => 'Str',
lazy => 1,
builder => '_build_export_url',
);
sub _build_export_url {
my $self = shift;
return $self->res->data->{item};
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
WebService::POEditor::Response
=head1 VERSION
version v1.1.0
=head2 res
Instance of L<Role::REST::Client::Response>.
=head2 method
Original request method.
=head2 response
POEditor API response hash.
=head2 status
POEditor API response status.
=head2 code
POEditor API response code.
=head2 message
POEditor API response message.
=head2 list
Returns array of items for responses that return "list" (e.g. List Projects).
my @list = $res->list;
=head3 count_list
Returns number of items in the list.
=head3 has_list
Returns true if list has items, false otherwise.
=head3 get_list_item($index)
Get list item by array index.
=head2 item
Returns item HashRef for responses that provide "item" (e.g. View Project Details).
B<NOTE>: For "Export" method call, even though it provides C<item>, the
response will be stored in L</export_url>.
=head3 get_item($item_key)
my $id = $res->get_item('id');
Returns item by key.
=head3 has_item
Returns true if response has item, false otherwise.
=head2 details
Returns details HashRef for responses that provide "details" (e.g. Add Terms).
=head3 get_detail($key)
Get detail by key.
my $parsed = $self->get_detail('parsed');
=head3 has_details
Return true if response has details, false otherwise.
=head2 export_url
For "Export" method call returns an URL string.
=head1 AUTHOR
Roman F. <romanf@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Roman F..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut