Apache2-API

 view release on metacpan or  search on metacpan

lib/Apache2/API/Status.pm  view on Meta::CPAN

        410 => "Zdroj již není dále dostupný!",
        411 => "Chybná hlavička Content-Length!",
        412 => "Předběžná podmínka nesplněna!",
        413 => "Požadovaná entita je příliš velká!",
        414 => "Požadované URI je příliš dlouhé!",
        415 => "Nepodporovaný typ média!",
        416 => "Požadovanému rozsahu nelze vyhovět!",
        417 => "Očekávání nesplněno!",
        418 => "Jsem čajník",
        421 => "Chybně směrovaný požadavek",
        422 => "Nezpracovatelná entita!",
        423 => "Zámek zdroje!",
        424 => "Selhávající závislost!",
        425 => "Příliš brzy!",
        426 => "Vyžadována aktualizace!",
        428 => "Vyžadována předpodmínka",
        429 => "Příliš mnoho požadavků!",
        431 => "Hlavičky požadavku příliš velké!",
        444 => "Připojení ukončeno bez odpovědi",
        451 => "Nedostupné z právních důvodů!",
        499 => "Požadavek ukončen klientem",
        500 => "Chyba serveru!",
        501 => "Nelze zpracovat požadavek!",
        502 => "Chybná brána!",
        503 => "Služba není dostupná!",
        504 => "Vypršel čas brány!",
        505 => "Nepodporovaná verze HTTP",
        506 => "Varianta rovněž variuje!",
        507 => "Nedostatek úložného prostoru!",
        508 => "Zjištěna smyčka!",
        509 => "Překročeno omezení šířky pásma",
        510 => "Nerozšířeno",
        511 => "Vyžadováno síťové ověření",
        599 => "Chyba časového limitu síťového připojení",
    },
    # Ref: <https://developer.mozilla.org/de/docs/Web/HTTP/Status/100>
    # <https://www.dotcom-monitor.com/wiki/de/knowledge-base/http-status-codes/>
    de_DE => {
        100 => "Weiter",
        101 => "Protokolle wechseln",
        102 => "Verarbeitung",
        103 => "Frühe Hinweise",
        200 => "OK",
        201 => "Erstellt",
        202 => "Akzeptiert",
        203 => "Nicht autorisierende Informationen",
        204 => "Kein Inhalt",
        205 => "Inhalt zurücksetzen",
        206 => "Teilinhalt",
        207 => "Multi-Status",
        208 => "Bereits gemeldet",
        226 => "IM verwendet",
        300 => "Mehrfachauswahlmöglichkeiten",
        301 => "Dauerhaft verschoben!",
        302 => "Vorübergehend verschoben!",
        303 => "Andere sehen",
        304 => "Nicht geändert",
        305 => "Proxy verwenden",
        307 => "Vorübergehende Umleitung!",
        308 => "Dauerhafte Umleitung!",
        400 => "Fehlerhafte Anfrage!",
        401 => "Authentifizierung erforderlich!",
        402 => "Zahlung erforderlich!",
        403 => "Zugriff verweigert!",
        404 => "Objekt nicht gefunden!",
        405 => "Methode nicht erlaubt!",
        406 => "Nicht akzeptabel!",
        407 => "Proxy-Authentifizierung erforderlich!",
        408 => "Zeitlimit überschritten!",
        409 => "Konflikt!",
        410 => "Objekt nicht mehr verfügbar!",
        411 => "Content-Length-Angabe fehlerhaft!",
        412 => "Vorbedingung nicht erfüllt!",
        413 => "Übergebene Daten zu groß!",
        414 => "Übergebener URI zu lang!",
        415 => "Nicht unterstützter Medientyp!",
        416 => "Bereich nicht erfüllbar!",
        417 => "Erwartung fehlgeschlagen!",
        418 => "Ich bin eine Teekanne",
        421 => "Fehlgeleitete Anfrage",
        422 => "Unverarbeitbare Entität!",
        423 => "Ressource gesperrt!",
        424 => "Fehlende Abhängigkeit!",
        425 => "Zu früh!",
        426 => "Upgrade erforderlich!",
        428 => "Vorbedingung erforderlich",
        429 => "Zu viele Anfragen!",
        431 => "Anfrage-Header zu groß!",
        444 => "Verbindung ohne Antwort geschlossen",
        451 => "Aus rechtlichen Gründen nicht verfügbar!",
        499 => "Client die Verbindung schließt",
        500 => "Serverfehler!",
        501 => "Anfrage nicht ausführbar!",
        502 => "Fehlerhaftes Gateway!",
        503 => "Dienst nicht verfügbar!",
        504 => "Gateway-Zeitüberschreitung!",
        505 => "HTTP-Version nicht unterstützt",
        506 => "Variante variiert ebenfalls!",
        507 => "Unzureichender Speicherplatz!",
        508 => "Endlosschleife erkannt!",
        509 => "Bandbreitenlimit überschritten",
        510 => "Nicht erweitert",
        511 => "Netzwerkauthentifizierung erforderlich",
        599 => "Timeout-Fehler bei Netzwerkverbindung",
    },
    en_GB => {
        100 => "Continue",
        101 => "Switching Protocols",
        102 => "Processing",
        103 => "Early Hints",
        200 => "OK",
        201 => "Created",
        202 => "Accepted",
        203 => "Non-authoritative Information",
        204 => "No Content",
        205 => "Reset Content",
        206 => "Partial Content",
        207 => "Multi-Status",
        208 => "Already Reported",
        226 => "IM Used",
        300 => "Multiple Choices",
        301 => "Moved permanently!",
        302 => "Found (temporary redirect)!",
        303 => "See Other",
        304 => "Not Modified",
        305 => "Use Proxy",
        307 => "Temporary redirect!",
        308 => "Permanent redirect!",
        400 => "Bad request!",
        401 => "Authentication required!",
        402 => "Payment required!",
        403 => "Access forbidden!",
        404 => "Object not found!",
        405 => "Method not allowed!",
        406 => "Not acceptable!",
        407 => "Proxy authentication required!",
        408 => "Request time-out!",
        409 => "Conflict!",
        410 => "Resource is no longer available!",
        411 => "Bad Content-Length!",
        412 => "Precondition failed!",
        413 => "Request entity too large!",
        414 => "Submitted URI too long!",
        415 => "Unsupported media type!",
        416 => "Range not satisfiable!",
        417 => "Expectation failed!",
        # Humour: April's fool
        # <https://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol>
        418 => "I'm a teapot",
        421 => "Misdirected Request",
        422 => "Unprocessable entity!",
        423 => "Resource locked!",
        424 => "Failed dependency!",

lib/Apache2/API/Status.pm  view on Meta::CPAN

sub status_message
{
    my $self = shift( @_ );
    my( $code, $lang );
    if( scalar( @_ ) == 2 )
    {
        ( $code, $lang ) = @_;
    }
    else
    {
        $code = shift( @_ );
        $lang = 'en_GB';
    }
    return( $self->error( "No language code was provided." ) ) if( !defined( $lang ) || !CORE::length( $lang ) );
    $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

    v0.2.1

=head1 DESCRIPTION

This module allows to get the localised version of the HTTP status for a given code for currently supported languages: fr_FR (French), en_GB (British English) and ja_JP (Japanese), de_DE (German), ko_KR (Korean), ru_RU (Russian), zh_CN (simplified Ch...

It also provides some functions to check if a given code is an information, success, redirect, error, client error or server error code.

It provides a full set of constants to use and import.

Finally, it adds a few more C<Apache2::Const>. See L</CONSTANTS> below.

=head1 METHODS

=head2 init



( run in 1.240 second using v1.01-cache-2.11-cpan-b16cb0d3907 )