# Copyright (c) 2023 Yuki Kimoto
# MIT License
class HTTP::Tiny::Response {
version_from HTTP::Tiny;
allow HTTP::Tiny::Handle;
allow HTTP::Tiny;
use Mojo::Headers;
use Mojo::Content::Single;
has response : Mojo::Message::Response;
# Class Methods
private static method new : HTTP::Tiny::Response ($response : Mojo::Message::Response) {
my $self = new HTTP::Tiny::Response;
$self->{response} = $response;
return $self;
}
# Instance Methods
method protocol : string () {
my $res = $self->{response};
my $version = $res->version;
my $protocol = "HTTP/$version";
return $protocol;
}
method status : int () {
my $res = $self->{response};
return $res->code;
}
method success : int () {
my $res = $self->{response};
my $success = $res->is_success;
return $success;
}
method reason : string () {
my $res = $self->{response};
my $reason = $res->message;
return $reason;
}
method headers : Mojo::Headers () {
my $res = $self->{response};
return $res->headers;
}
method content : string () {
my $res = $self->{response};
# my $content = $res->content_v0;
my $content = $res->content->(Mojo::Content::Single)->asset->slurp;
return $content;
}
}