new object $http_lib: $libraries;
var $root inited = 1;
var $http_lib version = "HTTP_lib/1.0";
var $http_lib response_phrases = #[[100, "Continue"], [101, "Switching Protocols"], [200, "OK"], [201, "Created"], [202, "Accepted"], [203, "Non-Authoritative Information"], [204, "No Content"], [205, "Reset Content"], [206, "Partial Content"], [300, "Multiple Choices"], [301, "Moved Permanently"], [302, "Moved Temporarily"], [303, "See Other"], [304, "Not Modified"], [305, "Use Proxy"], [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 Time-out"], [409, "Conflict"], [410, "Gone"], [411, "Length Required"], [412, "Precondition Failed"], [413, "Request Entity Too Large"], [414, "Request-URI Too Large"], [415, "Unsupported Media Type"], [500, "Internal Server Error"], [501, "Not Implemented"], [502, "Bad Gateway"], [503, "Service Unavailable"], [504, "Gateway Time-out"], [505, "HTTP Version not supported"]];
var $http_lib RFC1123GMT_datestr = "%a, %d %b %Y %H:%M:%S GMT";
public method .response_phrase() {
arg code;
return response_phrases[code];
};
public method .error() {
arg code, @args;
var dict, text, phrase;
phrase = .response_phrase(code);
text = ["<HEAD><TITLE>" + phrase + "</TITLE></HEAD>",
"<BODY>",
"<H1>" + code + " " + phrase + "</H1>"];
if (args) {
text += [args.join("<P>") + "<P>"];
}
text += ["</BODY>"];
return [code, #[["Content-type", "text/html"]], text];
};
public method server() {
return version + " " + $sys.server_info('core_version_str);
};
public method RFC1123GMT() {
arg @time;
var tzadjust;
if (!time) {
time = [time()];
}
tzadjust = localtime()[12];
return $time.format(RFC1123GMT_datestr, time[1] + tzadjust);
};
public method .explode_http_encoding() {
arg args;
var fields, field, values;
fields = #[];
for field in (args.explode("&")) {
field = field.explode("=");
fields = fields.add($http.decode(field[1]), (listlen(field) == 1) ? "" : ($http.decode(field[2])));
}
return fields;
};