Skip to content
Browse files

First version.

  • Loading branch information...
0 parents commit 271581cd2e38b48666a8c01d69194551b5984360 @supernovus committed
Showing with 129 additions and 0 deletions.
  1. +4 −0 .gitignore
  2. +7 −0 META.info
  3. +15 −0 README
  4. +88 −0 lib/HTTP/Status.pm6
  5. +15 −0 t/01-basic.t
4 .gitignore
@@ -0,0 +1,4 @@
+blib/
+Makefile
+*.swp
+*~
7 META.info
@@ -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 README
@@ -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 lib/HTTP/Status.pm6
@@ -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 t/01-basic.t
@@ -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.
Something went wrong with that request. Please try again.