Skip to content

Commit

Permalink
First version.
Browse files Browse the repository at this point in the history
  • Loading branch information
supernovus committed Sep 30, 2011
0 parents commit 271581c
Show file tree
Hide file tree
Showing 5 changed files with 129 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
blib/
Makefile
*.swp
*~
7 changes: 7 additions & 0 deletions META.info
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name" : "HTTP::Status",
"version" : "*",
"description" : "Get the text message associated with an HTTP status code",
"depends" : [ ],
"source-url" : "git://github.com/supernovus/perl6-http-status.git"
}
15 changes: 15 additions & 0 deletions README
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
HTTP::Status -- Get the text message representing an HTTP status code.

This is a module that exports a single subroutine:

get_http_status_msg()

It's usage is simple:

get_http_status_msg($code);

Where $code is the numeric HTTP status code, such as 200 or 404.
It will return the text message that the code represents.

Author: Timothy Totten
License: Artistic License 2.0
88 changes: 88 additions & 0 deletions lib/HTTP/Status.pm6
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
use v6;

module HTTP::Status;

## Exports a function get_http_status_msg($code)
## Returns the plain text message that belongs to that code.
## Info from http://en.wikipedia.org/wiki/Http_status_codes

my %HTTPCODES = {
## 1xx Informational
100 => 'Continue',
101 => 'Switching Protocols',
102 => 'Processing',
103 => 'Checkpoint',
122 => 'Request-URI Too Long',
## 2xx Success
200 => 'OK',
201 => 'Created',
202 => 'Accepted',
203 => 'Non-Authoritative Information',
204 => 'No Content',
205 => 'Reset Content',
206 => 'Partial Content',
207 => 'Multi-Status',
226 => 'IM Used',
## 3xx Redirection
300 => 'Multiple Choices',
301 => 'Moved Permanently',
302 => 'Found',
303 => 'See Other',
304 => 'Not Modified',
305 => 'Use Proxy',
306 => 'Switch Proxy',
307 => 'Temporary Redirect',
308 => 'Resume Incomplete',
## 4xx Client Error
400 => 'Bad Request',
401 => 'Unauthorized',
402 => 'Payment Required',
403 => 'Forbidden',
404 => 'Not Found',
405 => 'Method Not Allowed',
406 => 'Not Acceptable',
407 => 'Proxy Authentication Required',
408 => 'Request Timeout',
409 => 'Conflict',
410 => 'Gone',
411 => 'Length Required',
412 => 'Recondition Failed',
413 => 'Request Entity Too Large',
414 => 'Request-URI Too Long',
415 => 'Unsupported Media Type',
416 => 'Requested Range Not Satisfiable',
417 => 'Expectation Failed',
418 => "I'm a teapot",
422 => 'Unprocessable Entity',
423 => 'Locked',
424 => 'Failed Dependency',
425 => 'Unordered Collection',
426 => 'Upgrade Required',
444 => 'No Response',
449 => 'Retry With',
450 => 'Blocked by Parental Controls',
499 => 'Client Closed Request',
## 5xx Server Error
500 => 'Internal Server Error',
501 => 'Not Implemented',
502 => 'Bad Gateway',
503 => 'Service Unavailable',
504 => 'Gateway Timeout',
505 => 'HTTP Version Not Supported',
506 => 'Variant Also Negotiates',
507 => 'Insufficient Storage',
509 => 'Bandwidth Limit Exceeded',
510 => 'Not Extended',
598 => 'Network Read Timeout Error',
599 => 'Network Connect Timeout Error',
## End of defined codes.
};

our sub get_http_status_msg ($code) is export {
if %HTTPCODES.exists($code) {
return %HTTPCODES{$code};
}
return 'Unknown';
}


15 changes: 15 additions & 0 deletions t/01-basic.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env perl6
use v6;

BEGIN { @*INC.unshift: './lib'; }

use HTTP::Status;
use Test;

plan 4;

is get_http_status_msg(200), 'OK', 'Known code 1';
is get_http_status_msg(404), 'Not Found', 'Known code 2';
is get_http_status_msg(289), 'Unknown', 'Unknown code 1';
is get_http_status_msg(607), 'Unknown', 'Unknown code 2';

0 comments on commit 271581c

Please sign in to comment.