uselesshttp.d/util.d

98 lines
3.7 KiB
D
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

module util;
char[] intToStr(T)(T num) {
char[] buf;
for(short i; num > 0; ++i) {
buf = (num % 10 + '0')~buf;
num /= 10;
}
return buf;
}
void err(int e, string msg) {
if (e != 0)
throw new Exception("Something went wrong: failed to "~msg~'.');
}
// UDA
struct Location { string path; }
// enum method;
string getStatus(short status) {
static foreach(mmbr; __traits(allMembers, Statuses))
if (__traits(getMember, Statuses, mmbr) == status)
return __traits(getAttributes, __traits(getMember, Statuses, mmbr))[0];
return "";
}
private static enum Statuses: short { // спизженно с https://github.com/zigzap/zap/blob/675c65b509d48c21a8d1fa4c5ec53fc407643a3b/src/http.zig#L6
// Information responses
@("Continue") continuee = 100,
@("Switching Protocols") switching_protocols = 101,
@("Processing") processing = 102, // (WebDAV)
@("Early Hints") early_hints = 103,
// Successful responses
@("OK") ok = 200,
@("Created") created = 201,
@("Accepted") accepted = 202,
@("Non-Authoritative Information") non_authoritative_information = 203,
@("No Content") no_content = 204,
@("Reset Content") reset_content = 205,
@("Partial Content") partial_content = 206,
@("Multi-Status") multi_status = 207, // (WebDAV)
@("Already Reported") already_reported = 208, // (WebDAV)
@("IM Used") im_used = 226, // (HTTP Delta encoding)
// Redirection messages
@("Multiple Choices") multiple_choices = 300,
@("Moved Permanently") moved_permanently = 301,
@("Found") found = 302,
@("See Other") see_other = 303,
@("Not Modified") not_modified = 304,
@("Use Proxy") use_proxy = 305,
@("Unused") unused = 306,
@("Temporary Redirect") temporary_redirect = 307,
@("Permanent Redirect") permanent_redirect = 308,
// Client error responses
@("Bad Request") bad_request = 400,
@("Unauthorized") unauthorized = 401,
@("Payment Required") payment_required = 402,
@("Forbidden") forbidden = 403,
@("Not Found") not_found = 404,
@("Method Not Allowed") method_not_allowed = 405,
@("Not Acceptable") not_acceptable = 406,
@("Proxy Authentication Required") proxy_authentication_required = 407,
@("Request Timeout") request_timeout = 408,
@("Conflict") conflict = 409,
@("Gone") gone = 410,
@("Length Required") length_required = 411,
@("Precondition Failed") precondition_failed = 412,
@("Payload Too Large") payload_too_large = 413,
@("URI Too Long") uri_too_long = 414,
@("Unsupported Media Type") unsupported_media_type = 415,
@("Range Not Satisfiable") range_not_satisfiable = 416,
@("Expectation Failed") expectation_failed = 417,
@("I'm a teapot") im_a_teapot = 418,
@("Misdirected Request") misdirected_request = 421,
@("Unprocessable Content") unprocessable_content = 422, // (WebDAV)
@("Locked") locked = 423, // (WebDAV)
@("Failed Dependency") failed_dependency = 424, // (WebDAV)
@("Too Early") too_early = 425,
@("Upgrade Required") upgrade_required = 426,
@("Precondition Required") precondition_required = 428,
@("Too Many Requests") too_many_requests = 429,
@("Request Header Fields Too Large") request_header_fields_too_large = 431,
@("Unavailable For Legal Reasons") unavailable_for_legal_reasons = 451,
// Server error responses
@("Internal Server Error") internal_server_error = 500,
@("Not Implemented") not_implemented = 501,
@("Bad Gateway") bad_gateway = 502,
@("Service Unavailable") service_unavailable = 503,
@("Gateway Timeout") gateway_timeout = 504,
@("HTTP Version Not Supported") http_version_not_supported = 505,
@("Variant Also Negotiates") variant_also_negoti
}