Apache2-API
view release on metacpan or search on metacpan
lib/Apache2/API/Status.pm view on Meta::CPAN
HTTP_UPGRADE_REQUIRED => 426,
HTTP_PRECONDITION_REQUIRED => 428,
HTTP_TOO_MANY_REQUESTS => 429,
HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE => 431,
HTTP_CONNECTION_CLOSED_WITHOUT_RESPONSE => 444,
HTTP_UNAVAILABLE_FOR_LEGAL_REASONS => 451,
HTTP_CLIENT_CLOSED_REQUEST => 499,
HTTP_INTERNAL_SERVER_ERROR => 500,
HTTP_NOT_IMPLEMENTED => 501,
HTTP_BAD_GATEWAY => 502,
HTTP_SERVICE_UNAVAILABLE => 503,
HTTP_GATEWAY_TIME_OUT => 504,
HTTP_VERSION_NOT_SUPPORTED => 505,
HTTP_VARIANT_ALSO_VARIES => 506,
HTTP_INSUFFICIENT_STORAGE => 507,
HTTP_LOOP_DETECTED => 508,
HTTP_BANDWIDTH_LIMIT_EXCEEDED => 509,
HTTP_NOT_EXTENDED => 510,
HTTP_NETWORK_AUTHENTICATION_REQUIRED => 511,
HTTP_NETWORK_CONNECT_TIMEOUT_ERROR => 599,
};
our @EXPORT_OK = qw(
HTTP_ACCEPTED HTTP_ALREADY_REPORTED HTTP_BAD_GATEWAY HTTP_BAD_REQUEST
HTTP_BANDWIDTH_LIMIT_EXCEEDED HTTP_CLIENT_CLOSED_REQUEST HTTP_CONFLICT
HTTP_CONNECTION_CLOSED_WITHOUT_RESPONSE HTTP_CONTINUE HTTP_CREATED
HTTP_EARLY_HINTS HTTP_EXPECTATION_FAILED HTTP_FAILED_DEPENDENCY
HTTP_FORBIDDEN HTTP_GATEWAY_TIME_OUT HTTP_GONE HTTP_IM_USED
HTTP_INSUFFICIENT_STORAGE HTTP_INTERNAL_SERVER_ERROR
HTTP_I_AM_A_TEAPOT HTTP_I_AM_A_TEA_POT HTTP_LENGTH_REQUIRED
HTTP_LOCKED HTTP_LOOP_DETECTED HTTP_METHOD_NOT_ALLOWED
HTTP_MISDIRECTED_REQUEST HTTP_MOVED_PERMANENTLY HTTP_MOVED_TEMPORARILY
HTTP_MULTIPLE_CHOICES HTTP_MULTI_STATUS
HTTP_NETWORK_AUTHENTICATION_REQUIRED
HTTP_NETWORK_CONNECT_TIMEOUT_ERROR HTTP_NON_AUTHORITATIVE
HTTP_NOT_ACCEPTABLE HTTP_NOT_EXTENDED HTTP_NOT_FOUND
HTTP_NOT_IMPLEMENTED HTTP_NOT_MODIFIED HTTP_NO_CODE HTTP_NO_CONTENT
HTTP_OK HTTP_PARTIAL_CONTENT HTTP_PAYLOAD_TOO_LARGE
HTTP_PAYMENT_REQUIRED HTTP_PERMANENT_REDIRECT HTTP_PRECONDITION_FAILED
HTTP_PRECONDITION_REQUIRED HTTP_PROCESSING
HTTP_PROXY_AUTHENTICATION_REQUIRED HTTP_RANGE_NOT_SATISFIABLE
HTTP_REQUEST_ENTITY_TOO_LARGE HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE
HTTP_REQUEST_RANGE_NOT_SATISFIABLE HTTP_REQUEST_TIME_OUT
HTTP_REQUEST_URI_TOO_LARGE HTTP_RESET_CONTENT HTTP_SEE_OTHER
HTTP_SERVICE_UNAVAILABLE HTTP_SWITCHING_PROTOCOLS
HTTP_TEMPORARY_REDIRECT HTTP_TOO_EARLY HTTP_TOO_MANY_REQUESTS
HTTP_UNAUTHORIZED HTTP_UNAVAILABLE_FOR_LEGAL_REASONS
HTTP_UNORDERED_COLLECTION HTTP_UNPROCESSABLE_ENTITY
HTTP_UNSUPPORTED_MEDIA_TYPE HTTP_UPGRADE_REQUIRED HTTP_URI_TOO_LONG
HTTP_USE_PROXY HTTP_VARIANT_ALSO_VARIES HTTP_VERSION_NOT_SUPPORTED
);
our %EXPORT_TAGS = (
all => [@EXPORT_OK],
common => [qw( HTTP_NETWORK_AUTHENTICATION_REQUIRED HTTP_FORBIDDEN HTTP_NOT_FOUND HTTP_OK HTTP_TEMPORARY_REDIRECT HTTP_INTERNAL_SERVER_ERROR )],
);
our $VERSION = 'v0.2.1';
};
use strict;
use warnings;
use utf8;
# Ref:
# <https://datatracker.ietf.org/doc/html/rfc7231#section-8.2>
# <http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml>
our $CODES =
{
# Info 1xx
100 => Apache2::Const::HTTP_CONTINUE,
101 => Apache2::Const::HTTP_SWITCHING_PROTOCOLS,
102 => Apache2::Const::HTTP_PROCESSING,
# Success 2xx
200 => Apache2::Const::HTTP_OK,
201 => Apache2::Const::HTTP_CREATED,
202 => Apache2::Const::HTTP_ACCEPTED,
203 => Apache2::Const::HTTP_NON_AUTHORITATIVE,
204 => Apache2::Const::HTTP_NO_CONTENT,
205 => Apache2::Const::HTTP_RESET_CONTENT,
206 => Apache2::Const::HTTP_PARTIAL_CONTENT,
207 => Apache2::Const::HTTP_MULTI_STATUS,
208 => Apache2::Const::HTTP_ALREADY_REPORTED,
226 => Apache2::Const::HTTP_IM_USED,
# Redirect 3xx
300 => Apache2::Const::HTTP_MULTIPLE_CHOICES,
301 => Apache2::Const::HTTP_MOVED_PERMANENTLY,
302 => Apache2::Const::HTTP_MOVED_TEMPORARILY,
303 => Apache2::Const::HTTP_SEE_OTHER,
304 => Apache2::Const::HTTP_NOT_MODIFIED,
305 => Apache2::Const::HTTP_USE_PROXY,
307 => Apache2::Const::HTTP_TEMPORARY_REDIRECT,
308 => Apache2::Const::HTTP_PERMANENT_REDIRECT,
# Client error 4xx
400 => Apache2::Const::HTTP_BAD_REQUEST,
401 => Apache2::Const::HTTP_UNAUTHORIZED,
402 => Apache2::Const::HTTP_PAYMENT_REQUIRED,
403 => Apache2::Const::HTTP_FORBIDDEN,
404 => Apache2::Const::HTTP_NOT_FOUND,
405 => Apache2::Const::HTTP_METHOD_NOT_ALLOWED,
406 => Apache2::Const::HTTP_NOT_ACCEPTABLE,
407 => Apache2::Const::HTTP_PROXY_AUTHENTICATION_REQUIRED,
408 => Apache2::Const::HTTP_REQUEST_TIME_OUT,
409 => Apache2::Const::HTTP_CONFLICT,
410 => Apache2::Const::HTTP_GONE,
411 => Apache2::Const::HTTP_LENGTH_REQUIRED,
412 => Apache2::Const::HTTP_PRECONDITION_FAILED,
413 => Apache2::Const::HTTP_REQUEST_ENTITY_TOO_LARGE,
414 => Apache2::Const::HTTP_REQUEST_URI_TOO_LARGE,
415 => Apache2::Const::HTTP_UNSUPPORTED_MEDIA_TYPE,
416 => Apache2::Const::HTTP_RANGE_NOT_SATISFIABLE,
417 => Apache2::Const::HTTP_EXPECTATION_FAILED,
# 421 => Apache2::Const::HTTP_MISDIRECTED_REQUEST,
#W WebDAV
422 => Apache2::Const::HTTP_UNPROCESSABLE_ENTITY,
# WebDAV
423 => Apache2::Const::HTTP_LOCKED,
# WebDAV
424 => Apache2::Const::HTTP_FAILED_DEPENDENCY,
426 => Apache2::Const::HTTP_UPGRADE_REQUIRED,
428 => Apache2::Const::HTTP_PRECONDITION_REQUIRED,
429 => Apache2::Const::HTTP_TOO_MANY_REQUESTS,
431 => Apache2::Const::HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE,
# 451 => Apache2::Const::HTTP_UNAVAILABLE_FOR_LEGAL_REASONS,
lib/Apache2/API/Status.pm view on Meta::CPAN
sub status_to_type
{
my $self = shift( @_ );
my $code = shift( @_ );
my $sep = shift( @_ );
if( !defined( $sep ) ||
( defined( $sep ) && $sep eq '_' ) )
{
return( $STATUS_TO_TYPE->{ $code } );
}
( my $type = $STATUS_TO_TYPE->{ $code } ) =~ s/_/$sep/g;
return( $type );
}
# Returns a status line for a given code
# e.g. status_message( 404 ) would yield "Not found"
sub status_message
{
my $self = shift( @_ );
my( $code, $lang );
if( scalar( @_ ) == 2 )
{
( $code, $lang ) = @_;
}
else
{
$code = shift( @_ );
$lang = 'en_GB';
}
$lang = 'en_GB' if( !exists( $HTTP_CODES->{ $lang } ) );
my $ref = $HTTP_CODES->{ $lang };
return( $ref->{ $code } );
}
sub supported_languages
{
my $self = shift( @_ );
return( [sort( keys( %$HTTP_CODES ) )] );
}
sub _min_max
{
my $this = shift( @_ );
my( $min, $max, $code ) = @_;
return( $this->error( "A 3 digit code is required." ) ) if( !defined( $code ) || $code !~ /^\d{3}$/ );
return( $code >= $min && $code < $max );
}
# NOTE: sub FREEZE is inherited
sub STORABLE_freeze { CORE::return( CORE::shift->FREEZE( @_ ) ); }
sub STORABLE_thaw { CORE::return( CORE::shift->THAW( @_ ) ); }
# NOTE: sub THAW is inherited
1;
# NOTE: POD
__END__
=encoding utf8
=head1 NAME
Apache2::API::Status - Apache2 Status Codes
=head1 SYNOPSIS
use Apache2::API::Status ':common';
use Apache2::API::Status ':all';
say Apache2::API::Status::HTTP_TOO_MANY_REQUESTS;
# returns code 429
use Apache2::API::Status;
# in German: Zu viele Anfragen
say $Apache2::API::Status::HTTP_CODES->{de_DE}->{429};
# same
say $Apache2::API::Status::HTTP_CODES->{de}->{429};
# In English: Too Many Requests
say $Apache2::API::Status::HTTP_CODES->{en_GB}->{429};
# same
say $Apache2::API::Status::HTTP_CODES->{en}->{429};
# in French: Trop de requête
say $Apache2::API::Status::HTTP_CODES->{fr_FR}->{429};
# same
say $Apache2::API::Status::HTTP_CODES->{fr}->{429};
# In Japanese: ãªã¯ã¨ã¹ãéå¤§ã§æå¦ãã
say $Apache2::API::Status::HTTP_CODES->{ja_JP}->{429};
# same
say $Apache2::API::Status::HTTP_CODES->{ja}->{429};
# In Korean: ë무 ë§ì ìì²
say $Apache2::API::Status::HTTP_CODES->{ko_KR}->{429};
# same
say $Apache2::API::Status::HTTP_CODES->{ko}->{429};
# In Russian: ÑлиÑком много запÑоÑов
say $Apache2::API::Status::HTTP_CODES->{ru_RU}->{429};
# same
say $Apache2::API::Status::HTTP_CODES->{ru}->{429};
# In simplified Chinese: 太å¤è¯·æ±
say $Apache2::API::Status::HTTP_CODES->{zh_CN}->{429};
# In Taiwanese (traditional) Chinese: 太å¤è«æ±
say $Apache2::API::Status::HTTP_CODES->{zh_TW}->{429};
But maybe more simply:
my $status = Apache2::API::Status->new;
say $status->status_message( 429 => 'ja_JP' );
# Or without the language code parameter, it will default to en_GB
say $status->status_message( 429 );
# Is success
say $status->is_info( 102 ); # true
say $status->is_success( 200 ); # true
say $status->is_redirect( 302 ); # true
say $status->is_error( 404 ); # true
say $status->is_client_error( 403 ); # true
say $status->is_server_error( 501 ); # true
=head1 VERSION
( run in 1.055 second using v1.01-cache-2.11-cpan-39bf76dae61 )