Rand Stats

HTTP::Status

zef:lizmat

Actions Status

NAME

HTTP::Status - Information about HTTP Status Codes

SYNOPSIS

use HTTP::Status;

say HTTP::Status(200);          # OK

say HTTP::Status(200).title;    # OK

say HTTP::Status(200).type;     # Success

say HTTP::Status(200).summary;  # Standard response for successful HTTP...

say HTTP::Status(200).origin;   # IANA

say HTTP::Status(200).since;    # HTTP/1.0

say HTTP::Status(200).RFC;      # 7231

say HTTP::Status(200).code;     # 200

say HTTP::Status.source;        # https://en.wikipedia.org/....

# Legacy interface
say get_http_status_msg(200);   # OK

say "Informational" if is-info($code);
say "Success" if is-success($code);
say "Redirection" if is-redirect($code):
say "Error" if  is-error($code);
say "Client Error" if is-client-error($code);
say "Server Error" if is-server-error($code);

my %status := HTTP::Status.Map;

DESCRIPTION

The HTTP::Status class contains information about HTTP Status Codes as can be found on Wikipedia.

To obtain the information about a given HTTP Status Code, one calls the HTTP::Status class with the code in question:

my $status = HTTP::Status(200);

This returns the HTTP::Status object for the given code, or it returns Nil if the code is unknown.

The HTTP::Status object stringifies to its title, and numifies to its code:

say $status;   # OK

say +$status;  # 200

It also contains the type of status code and a summary of additional information about that status code that may be useful as a further help in debugging issues:

say $status.type;     # Success

say $status.summary;  # Standard response for successful...

Apart from title, type, code and summary, the object also contains information about the applicable RFC, its origin and since which version of the HTTP protocol it has been available:

say $status.origin;  # IANA

say $status.RFC;     # 7231

say $status.since;   # HTTP/1.0

Finally, if you want to know the source of the information that is provided by this module, use the source class method, which returns the URL of the Wikipedia page that was used:

say HTTP::Status.source;  # https://en.wikipedia.org/....

CLASS METHODS

In this class methods, the HTTP::Status class could be considered as an Associative.

keys

Returns a Seq with the codes for which there is a defined HTTP status.

values

Returns a Seq with the HTTP::Status objects for which there is a defined HTTP status.

kv

Returns a Seq with code / HTTP::Status object for which there is a defined HTTP Status.

pairs

Returns a Seq with code => HTTP::Status object pairs for which there is a defined HTTP Status.

Hash

Returns a Hash with the code => HTTP::Status object mappings for which there is a defined HTTP Status.

Map

Returns a Map with the code => HTTP::Status object mappings for which there is a defined HTTP Status.

LEGACY INTERFACE

The legacy interface is identical to the version originally created by Timothy Totten.

get_http_status_msg

Returns the string for the given HTTP Status code, or Unknown.

is-info

Returns whether the given HTTP Status code is informational (100..199).

is-success

Returns whether the given HTTP Status code indicates success (200..299).

is-redirect

Returns whether the given HTTP Status code indicates a redirection of some kind (300..399).

is-error

Returns whether the given HTTP Status code indicates a some kind of error (400..599).

is-client-error

Returns whether the given HTTP Status code indicates a some kind of client error (400..499).

is-server-error

Returns whether the given HTTP Status code indicates a some kind of server error (500..599).

ADAPTING INFORMATION

If you want to add or adapt the information as provided by this class, you can easily do that by creating a new HTTP::Status object in sink context.

HTTP::Status.new(
  code    => 137,
  title   => "Very Special Prime",
  summary => "Really the answer!",
  origin  => "Mathematics",
  since   => "HTTP/2.1",
  RFC     => 13377,
);

say HTTP::Status(137);  # Very Special Prime

AUTHOR

Elizabeth Mattijsen

Source can be located at: https://github.com/lizmat/HTTP-Status . Comments and Pull Requests are welcome.

If you like this module, or what I’m doing more generally, committing to a small sponsorship would mean a great deal to me!

COPYRIGHT AND LICENSE

Copyright 2012 - 2020 Timothy Totten

Copyright 2021 - 2022 Elizabeth Mattijsen

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.