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; };