const char* getName() const { uint index = stringLastIndexOf( m_pName, '/' ); index = ( index == TIKI_SIZE_T_MAX ? 0u : index + 1u ); return m_pName + index; }
// "http://foo.bar.com/a/b/c.txt?a=b&c=d#lol" => "txt" // "http://foo.bar.com/index.html" => "html" // "http://foo.bar.com/a/b/" => "" std::string getUrlExtension(const std::string& url) { std::string url2 = toLowerCase(trim(url)); int questionMark = stringIndexOf(url2, "?"); if (questionMark >= 0) { url2 = url2.substr(0, questionMark); } int hash = stringIndexOf(url2, "#"); if (hash >= 0) { url2 = url2.substr(0, hash); } int slash = stringLastIndexOf(url2, "/"); if (slash >= 0) { url2 = url2.substr(slash + 1); } int dot = stringLastIndexOf(url2, "."); if (dot >= 0) { url2 = url2.substr(dot + 1); } return url2; }
std::string getContentType(const std::string& extension) { if (extension.empty()) { return CONTENT_TYPE_DEFAULT; } // populate map of content types, if needed if (CONTENT_TYPE_MAP.isEmpty()) { CONTENT_TYPE_MAP["bmp"] = "image/bmp"; CONTENT_TYPE_MAP["bz"] = "application/x-bzip"; CONTENT_TYPE_MAP["bz2"] = "application/x-bzip2"; CONTENT_TYPE_MAP["c"] = "text/plain"; CONTENT_TYPE_MAP["cc"] = "text/plain"; CONTENT_TYPE_MAP["com"] = "application/octet-stream"; CONTENT_TYPE_MAP["cpp"] = "text/plain"; CONTENT_TYPE_MAP["css"] = "text/css"; CONTENT_TYPE_MAP["doc"] = "application/msword"; CONTENT_TYPE_MAP["dot"] = "application/msword"; CONTENT_TYPE_MAP["exe"] = "application/octet-stream"; CONTENT_TYPE_MAP["gif"] = "image/gif"; CONTENT_TYPE_MAP["gz"] = "application/x-gzip"; CONTENT_TYPE_MAP["gzip"] = "application/x-gzip"; CONTENT_TYPE_MAP["h"] = "text/plain"; CONTENT_TYPE_MAP["hh"] = "text/plain"; CONTENT_TYPE_MAP["hpp"] = "text/plain"; CONTENT_TYPE_MAP["htm"] = "text/html"; CONTENT_TYPE_MAP["html"] = "text/html"; CONTENT_TYPE_MAP["htmls"] = "text/html"; CONTENT_TYPE_MAP["ico"] = "image/x-icon"; CONTENT_TYPE_MAP["inf"] = "text/plain"; CONTENT_TYPE_MAP["jar"] = "application/octet-stream"; CONTENT_TYPE_MAP["jav"] = "text/plain"; CONTENT_TYPE_MAP["java"] = "text/plain"; CONTENT_TYPE_MAP["jpe"] = "image/jpeg"; CONTENT_TYPE_MAP["jpeg"] = "image/jpeg"; CONTENT_TYPE_MAP["jpg"] = "image/jpeg"; CONTENT_TYPE_MAP["mid"] = "audio/midi"; CONTENT_TYPE_MAP["midi"] = "audio/midi"; CONTENT_TYPE_MAP["mod"] = "audio/mod"; CONTENT_TYPE_MAP["mov"] = "video/quicktime"; CONTENT_TYPE_MAP["mp3"] = "text/plain"; CONTENT_TYPE_MAP["mpg"] = "video/mpeg"; CONTENT_TYPE_MAP["o"] = "application/octet-stream"; CONTENT_TYPE_MAP["odc"] = "application/vnd.oasis.opendocument.chart"; CONTENT_TYPE_MAP["odp"] = "application/vnd.oasis.opendocument.presentation"; CONTENT_TYPE_MAP["ods"] = "application/vnd.oasis.opendocument.spreadsheet"; CONTENT_TYPE_MAP["odt"] = "application/vnd.oasis.opendocument.text"; CONTENT_TYPE_MAP["pct"] = "image/x-pict"; CONTENT_TYPE_MAP["pcx"] = "image/x-pcx"; CONTENT_TYPE_MAP["pdf"] = "application/pdf"; CONTENT_TYPE_MAP["pl"] = "text/plain"; CONTENT_TYPE_MAP["pm"] = "text/plain"; CONTENT_TYPE_MAP["ppt"] = "application/powerpoint"; CONTENT_TYPE_MAP["ps"] = "application/postscript"; CONTENT_TYPE_MAP["psd"] = "application/octet-stream"; CONTENT_TYPE_MAP["py"] = "text/plain"; CONTENT_TYPE_MAP["qt"] = "video/quicktime"; CONTENT_TYPE_MAP["ra"] = "audio/x-realaudio"; CONTENT_TYPE_MAP["rb"] = "text/plain"; CONTENT_TYPE_MAP["rm"] = "application/vnd.rn-realmedia"; CONTENT_TYPE_MAP["rtf"] = "application/rtf"; CONTENT_TYPE_MAP["s"] = "text/x-asm"; CONTENT_TYPE_MAP["sh"] = "text/plain"; CONTENT_TYPE_MAP["shtml"] = "text/html"; CONTENT_TYPE_MAP["swf"] = "application/x-shockwave-flash"; CONTENT_TYPE_MAP["tcl"] = "application/x-tcl"; CONTENT_TYPE_MAP["tex"] = "application/x-tex"; CONTENT_TYPE_MAP["tgz"] = "application/x-compressed"; CONTENT_TYPE_MAP["tif"] = "image/tiff"; CONTENT_TYPE_MAP["tiff"] = "image/tiff"; CONTENT_TYPE_MAP["txt"] = "text/plain"; CONTENT_TYPE_MAP["voc"] = "audio/voc"; CONTENT_TYPE_MAP["wav"] = "audio/wav"; CONTENT_TYPE_MAP["xls"] = "application/excel"; CONTENT_TYPE_MAP["xlt"] = "application/excel"; CONTENT_TYPE_MAP["xpm"] = "image/xpm"; CONTENT_TYPE_MAP["z"] = "application/x-compressed"; CONTENT_TYPE_MAP["zip"] = "application/zip"; } // "foo.BAZ.BaR" => "bar" std::string ext = toLowerCase(extension); int dot = stringLastIndexOf(ext, "."); if (dot >= 0) { ext = ext.substr(dot + 1); } if (CONTENT_TYPE_MAP.containsKey(ext)) { return CONTENT_TYPE_MAP[ext]; } else { return CONTENT_TYPE_DEFAULT; } }