WWW-Suffit-Plugin-CommonHelpers

 view release on metacpan or  search on metacpan

lib/WWW/Suffit/Plugin/CommonHelpers.pm  view on Meta::CPAN

        );
}
sub _reply_noapi {
    my $self = shift;
    my %args = @_;
    my $status  = $args{status} || 200;         # HTTP status code
    my $code    = $args{code} || "E0$status";   # The Suffit error code
    my $message = $args{error} // $args{message} // ''; # Error message
    my $data    = $args{data}; # Payload data
    my $html    = $args{html}; # HTML options

    # Correct code and message
    unless ($args{code}) {
        if ($message =~ s/^(E[0-9]{4})[:]?\s+//) {
            $code = $1;
        }
    }

    # Log
    if ($status >= 400) {
        $self->log->error(sprintf("[%s] %s", $code, $message)) if length $message;
    }

    # Clean message
    $message =~ s/^(E[0-9]{4})[:]?\s+//;

    # Respond (extended render)
    return $self->respond_to(
        json    => {
                    json    => {
                            status => $status < 400 ? \1 : \0,
                            length $message ? (message => $message) : (),
                            code => $code,
                            defined $data ? (is_hash_ref($data) ? (%$data) : is_array_ref($data) ? (data => $data) : ()) : (),
                        },
                    status  => $status,
                },
        html    => {
                    message => $message // '',
                    code    => $code,
                    http_status => $status,
                    defined $html ? (is_hash_ref($html) ? (%$html) : ()) : (),
                    defined $data ? (is_hash_ref($data) ? (%$data) : is_array_ref($data) ? (data => $data) : ()) : (),
                    status  => $status,
                },
        text    => {
                    text    => length $message ? $message : defined $data ? $self->dumper($data) : '',
                    status  => $status,
                },
        any     => {
                    text    => length $message ? $message : defined $data ? $self->dumper($data) : '',
                    status  => $status,
                },
    )
}
sub _client_ip {
    my $self = shift;
    my $trustedproxies = shift;
    $self->req->trusted_proxies($trustedproxies)
        if defined($trustedproxies) && is_array_ref($trustedproxies) && $self->req->can("trusted_proxies");
    return $self->tx->remote_address; # X-Forwarded-For
}
sub _base_url {
    my $self = shift;
    my $base_url = $self->req->url->base->path_query('/')->to_string // '';
       $base_url =~ s/\/+$//;
    return $base_url;
}

1;

__END__



( run in 1.738 second using v1.01-cache-2.11-cpan-39bf76dae61 )