// ⚡️ Fiber is an Express inspired web framework written in Go with ☕️// 🤖 Github Repository: https://github.com/gofiber/fiber// 📌 API Documentation: https://docs.gofiber.iopackage utilsimport ()constMIMEOctetStream = "application/octet-stream"// GetMIME returns the content-type of a file extensionfunc ( string) string {iflen() == 0 {return"" }varstringif [0] == '.' { = mimeExtensions[[1:]] } else { = mimeExtensions[] }iflen() == 0 {if [0] != '.' { = mime.TypeByExtension("." + ) } else { = mime.TypeByExtension() }if == "" {returnMIMEOctetStream } }return}// ParseVendorSpecificContentType check if content type is vendor specific and// if it is parsable to any known types. If its not vendor specific then returns// the original content type.func ( string) string { := strings.Index(, "+")if == -1 {return }varstringif := strings.Index(, ";"); == -1 { = [+1:] } elseif < { = [+1 : ] } else {return [:] } := strings.Index(, "/")if == -1 {return }return [0:+1] + }// limits for HTTP statuscodesconst ( statusMessageMin = 100 statusMessageMax = 511)// StatusMessage returns the correct message for the provided HTTP statuscodefunc ( int) string {if < statusMessageMin || > statusMessageMax {return"" }returnstatusMessage[]}// NOTE: Keep this in sync with the status code listvar statusMessage = []string{100: "Continue", // StatusContinue101: "Switching Protocols", // StatusSwitchingProtocols102: "Processing", // StatusProcessing103: "Early Hints", // StatusEarlyHints200: "OK", // StatusOK201: "Created", // StatusCreated202: "Accepted", // StatusAccepted203: "Non-Authoritative Information", // StatusNonAuthoritativeInformation204: "No Content", // StatusNoContent205: "Reset Content", // StatusResetContent206: "Partial Content", // StatusPartialContent207: "Multi-Status", // StatusMultiStatus208: "Already Reported", // StatusAlreadyReported226: "IM Used", // StatusIMUsed300: "Multiple Choices", // StatusMultipleChoices301: "Moved Permanently", // StatusMovedPermanently302: "Found", // StatusFound303: "See Other", // StatusSeeOther304: "Not Modified", // StatusNotModified305: "Use Proxy", // StatusUseProxy306: "Switch Proxy", // StatusSwitchProxy307: "Temporary Redirect", // StatusTemporaryRedirect308: "Permanent Redirect", // StatusPermanentRedirect400: "Bad Request", // StatusBadRequest401: "Unauthorized", // StatusUnauthorized402: "Payment Required", // StatusPaymentRequired403: "Forbidden", // StatusForbidden404: "Not Found", // StatusNotFound405: "Method Not Allowed", // StatusMethodNotAllowed406: "Not Acceptable", // StatusNotAcceptable407: "Proxy Authentication Required", // StatusProxyAuthRequired408: "Request Timeout", // StatusRequestTimeout409: "Conflict", // StatusConflict410: "Gone", // StatusGone411: "Length Required", // StatusLengthRequired412: "Precondition Failed", // StatusPreconditionFailed413: "Request Entity Too Large", // StatusRequestEntityTooLarge414: "Request URI Too Long", // StatusRequestURITooLong415: "Unsupported Media Type", // StatusUnsupportedMediaType416: "Requested Range Not Satisfiable", // StatusRequestedRangeNotSatisfiable417: "Expectation Failed", // StatusExpectationFailed418: "I'm a teapot", // StatusTeapot421: "Misdirected Request", // StatusMisdirectedRequest422: "Unprocessable Entity", // StatusUnprocessableEntity423: "Locked", // StatusLocked424: "Failed Dependency", // StatusFailedDependency425: "Too Early", // StatusTooEarly426: "Upgrade Required", // StatusUpgradeRequired428: "Precondition Required", // StatusPreconditionRequired429: "Too Many Requests", // StatusTooManyRequests431: "Request Header Fields Too Large", // StatusRequestHeaderFieldsTooLarge451: "Unavailable For Legal Reasons", // StatusUnavailableForLegalReasons500: "Internal Server Error", // StatusInternalServerError501: "Not Implemented", // StatusNotImplemented502: "Bad Gateway", // StatusBadGateway503: "Service Unavailable", // StatusServiceUnavailable504: "Gateway Timeout", // StatusGatewayTimeout505: "HTTP Version Not Supported", // StatusHTTPVersionNotSupported506: "Variant Also Negotiates", // StatusVariantAlsoNegotiates507: "Insufficient Storage", // StatusInsufficientStorage508: "Loop Detected", // StatusLoopDetected510: "Not Extended", // StatusNotExtended511: "Network Authentication Required", // StatusNetworkAuthenticationRequired}// MIME types were copied from https://github.com/nginx/nginx/blob/67d2a9541826ecd5db97d604f23460210fd3e517/conf/mime.types with the following updates:// - Use "application/xml" instead of "text/xml" as recommended per https://datatracker.ietf.org/doc/html/rfc7303#section-4.1// - Use "text/javascript" instead of "application/javascript" as recommended per https://www.rfc-editor.org/rfc/rfc9239#name-text-javascriptvar mimeExtensions = map[string]string{"html": "text/html","htm": "text/html","shtml": "text/html","css": "text/css","xml": "application/xml","gif": "image/gif","jpeg": "image/jpeg","jpg": "image/jpeg","js": "text/javascript","atom": "application/atom+xml","rss": "application/rss+xml","mml": "text/mathml","txt": "text/plain","jad": "text/vnd.sun.j2me.app-descriptor","wml": "text/vnd.wap.wml","htc": "text/x-component","avif": "image/avif","png": "image/png","svg": "image/svg+xml","svgz": "image/svg+xml","tif": "image/tiff","tiff": "image/tiff","wbmp": "image/vnd.wap.wbmp","webp": "image/webp","ico": "image/x-icon","jng": "image/x-jng","bmp": "image/x-ms-bmp","woff": "font/woff","woff2": "font/woff2","jar": "application/java-archive","war": "application/java-archive","ear": "application/java-archive","json": "application/json","hqx": "application/mac-binhex40","doc": "application/msword","pdf": "application/pdf","ps": "application/postscript","eps": "application/postscript","ai": "application/postscript","rtf": "application/rtf","m3u8": "application/vnd.apple.mpegurl","kml": "application/vnd.google-earth.kml+xml","kmz": "application/vnd.google-earth.kmz","xls": "application/vnd.ms-excel","eot": "application/vnd.ms-fontobject","ppt": "application/vnd.ms-powerpoint","odg": "application/vnd.oasis.opendocument.graphics","odp": "application/vnd.oasis.opendocument.presentation","ods": "application/vnd.oasis.opendocument.spreadsheet","odt": "application/vnd.oasis.opendocument.text","pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation","xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document","wmlc": "application/vnd.wap.wmlc","wasm": "application/wasm","7z": "application/x-7z-compressed","cco": "application/x-cocoa","jardiff": "application/x-java-archive-diff","jnlp": "application/x-java-jnlp-file","run": "application/x-makeself","pl": "application/x-perl","pm": "application/x-perl","prc": "application/x-pilot","pdb": "application/x-pilot","rar": "application/x-rar-compressed","rpm": "application/x-redhat-package-manager","sea": "application/x-sea","swf": "application/x-shockwave-flash","sit": "application/x-stuffit","tcl": "application/x-tcl","tk": "application/x-tcl","der": "application/x-x509-ca-cert","pem": "application/x-x509-ca-cert","crt": "application/x-x509-ca-cert","xpi": "application/x-xpinstall","xhtml": "application/xhtml+xml","xspf": "application/xspf+xml","zip": "application/zip","bin": "application/octet-stream","exe": "application/octet-stream","dll": "application/octet-stream","deb": "application/octet-stream","dmg": "application/octet-stream","iso": "application/octet-stream","img": "application/octet-stream","msi": "application/octet-stream","msp": "application/octet-stream","msm": "application/octet-stream","mid": "audio/midi","midi": "audio/midi","kar": "audio/midi","mp3": "audio/mpeg","ogg": "audio/ogg","m4a": "audio/x-m4a","ra": "audio/x-realaudio","3gpp": "video/3gpp","3gp": "video/3gpp","ts": "video/mp2t","mp4": "video/mp4","mpeg": "video/mpeg","mpg": "video/mpeg","mov": "video/quicktime","webm": "video/webm","flv": "video/x-flv","m4v": "video/x-m4v","mng": "video/x-mng","asx": "video/x-ms-asf","asf": "video/x-ms-asf","wmv": "video/x-ms-wmv","avi": "video/x-msvideo",}
The pages are generated with Goldsv0.6.7. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds.