/* ZazouMiniWebServer Copyright (C) 2003-2011 Xavier Garreau This file is part of ZazouMiniWebServer. ZazouMiniWebServer is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. ZazouMiniWebServer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with ZazouMiniWebServer; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ #include "stdafx.h" #include "ZMWSmime.h" std::string ZMWSMIME::defaultMIME = "application/octet-stream"; ZMWSMIME::ZMWSMIME(void){ // Valeur si pas d'extension, ne pas confondre avec valeur par défaut mime_types.insert(MIME_TYPE("", "text/plain")); mime_types.insert(MIME_TYPE("mp3", "audio/mpeg")); mime_types.insert(MIME_TYPE("m3u", "audio/x-mpegurl")); mime_types.insert(MIME_TYPE("m3a", "audio/x-mpegurl-add")); mime_types.insert(MIME_TYPE("ram", "audio/vnd.rn-realaudio")); mime_types.insert(MIME_TYPE("ra", "audio/x-pn-realaudio")); mime_types.insert(MIME_TYPE("rpm", "audio/x-pn-realaudio-plugin")); mime_types.insert(MIME_TYPE("wma", "audio/x-ms-wma")); mime_types.insert(MIME_TYPE("rv", "video/vnd.rn-realvideo")); mime_types.insert(MIME_TYPE("avi", "video/avi")); mime_types.insert(MIME_TYPE("mpg", "video/mpeg")); mime_types.insert(MIME_TYPE("mpeg", "video/mpeg")); mime_types.insert(MIME_TYPE("mov", "video/quicktime")); mime_types.insert(MIME_TYPE("wmv", "video/x-ms-wmv")); mime_types.insert(MIME_TYPE("asf", "video/x-ms-asf")); mime_types.insert(MIME_TYPE("jpg", "image/jpeg")); mime_types.insert(MIME_TYPE("jpeg", "image/jpeg")); mime_types.insert(MIME_TYPE("gif", "image/gif")); mime_types.insert(MIME_TYPE("png", "image/png")); mime_types.insert(MIME_TYPE("psd", "image/psd")); mime_types.insert(MIME_TYPE("dxf", "image/x-autocad")); mime_types.insert(MIME_TYPE("svg", "application/xml+svg")); mime_types.insert(MIME_TYPE("ico", "image/x-icon")); mime_types.insert(MIME_TYPE("blend", "application/x-blender")); mime_types.insert(MIME_TYPE("rtf", "application/rtf")); mime_types.insert(MIME_TYPE("zip", "application/zip")); mime_types.insert(MIME_TYPE("bz2", "application/x-bzip2")); mime_types.insert(MIME_TYPE("gzip", "application/gzip")); mime_types.insert(MIME_TYPE("gz", "application/gzip")); mime_types.insert(MIME_TYPE("rar", "application/rar")); mime_types.insert(MIME_TYPE("tar", "application/tar")); mime_types.insert(MIME_TYPE("swf", "application/x-shockwave-flash")); mime_types.insert(MIME_TYPE("flv", "video/x-flv")); mime_types.insert(MIME_TYPE("dir", "application/x-director")); mime_types.insert(MIME_TYPE("dcr", "application/x-director")); mime_types.insert(MIME_TYPE("dxr", "application/x-director")); mime_types.insert(MIME_TYPE("ttf", "application/x-font-ttf")); mime_types.insert(MIME_TYPE("ogg", "application/ogg")); mime_types.insert(MIME_TYPE("exe", "application/octet-stream")); mime_types.insert(MIME_TYPE("pdf", "application/pdf")); mime_types.insert(MIME_TYPE("sis", "application/vnd.symbian.install")); mime_types.insert(MIME_TYPE("doc", "application/msword")); mime_types.insert(MIME_TYPE("xls", "application/msexcel")); mime_types.insert(MIME_TYPE("ppt", "application/powerpoint")); mime_types.insert(MIME_TYPE("sxw", "application/vnd.sun.xml.writer")); mime_types.insert(MIME_TYPE("stw", "application/vnd.sun.xml.writer.template")); mime_types.insert(MIME_TYPE("sxc", "application/vnd.sun.xml.calc")); mime_types.insert(MIME_TYPE("stc", "application/vnd.sun.xml.calc.template")); mime_types.insert(MIME_TYPE("sxd", "application/vnd.sun.xml.draw")); mime_types.insert(MIME_TYPE("std", "application/vnd.sun.xml.draw.template")); mime_types.insert(MIME_TYPE("sxi", "application/vnd.sun.xml.impress")); mime_types.insert(MIME_TYPE("sti", "application/vnd.sun.xml.impress.template")); mime_types.insert(MIME_TYPE("sxg", "application/vnd.sun.xml.writer.global")); mime_types.insert(MIME_TYPE("sxm", "application/vnd.sun.xml.math")); mime_types.insert(MIME_TYPE("sdw", "application/vnd.stardivision.writer")); mime_types.insert(MIME_TYPE("sgl", "application/vnd.stardivision.writer-global")); mime_types.insert(MIME_TYPE("sdc", "application/vnd.stardivision.calc")); mime_types.insert(MIME_TYPE("sda", "application/vnd.stardivision.draw")); mime_types.insert(MIME_TYPE("sdd", "application/vnd.stardivision.impress")); mime_types.insert(MIME_TYPE("sdp", "application/vnd.stardivision.impress-packed")); mime_types.insert(MIME_TYPE("smf", "application/vnd.stardivision.math")); mime_types.insert(MIME_TYPE("sds", "application/vnd.stardivision.chart")); mime_types.insert(MIME_TYPE("sdm", "application/vnd.stardivision.mail")); mime_types.insert(MIME_TYPE("abw", "application/x-abiword")); mime_types.insert(MIME_TYPE("odt", "application/vnd.oasis.opendocument.text")); mime_types.insert(MIME_TYPE("ods", "application/vnd.oasis.opendocument.spreadsheet")); mime_types.insert(MIME_TYPE("odp", "application/vnd.oasis.opendocument.presentation")); mime_types.insert(MIME_TYPE("odg", "application/vnd.oasis.opendocument.graphics")); mime_types.insert(MIME_TYPE("odc", "application/vnd.oasis.opendocument.chart")); mime_types.insert(MIME_TYPE("odf", "application/vnd.oasis.opendocument.formula")); mime_types.insert(MIME_TYPE("odb", "application/vnd.oasis.opendocument.database")); mime_types.insert(MIME_TYPE("odi", "application/vnd.oasis.opendocument.image")); mime_types.insert(MIME_TYPE("odm", "application/vnd.oasis.opendocument.text-master")); mime_types.insert(MIME_TYPE("ott", "application/vnd.oasis.opendocument.text-template")); mime_types.insert(MIME_TYPE("ots", "application/vnd.oasis.opendocument.spreadsheet-template")); mime_types.insert(MIME_TYPE("otp", "application/vnd.oasis.opendocument.presentation-template")); mime_types.insert(MIME_TYPE("otg", "application/vnd.oasis.opendocument.graphics-template")); mime_types.insert(MIME_TYPE("htm", "text/html")); mime_types.insert(MIME_TYPE("html", "text/html")); mime_types.insert(MIME_TYPE("txt", "text/plain")); mime_types.insert(MIME_TYPE("sh", "text/plain")); mime_types.insert(MIME_TYPE("csh", "text/plain")); mime_types.insert(MIME_TYPE("zsh", "text/plain")); mime_types.insert(MIME_TYPE("tcsh", "text/plain")); mime_types.insert(MIME_TYPE("ksh", "text/plain")); mime_types.insert(MIME_TYPE("bash", "text/plain")); mime_types.insert(MIME_TYPE("c", "text/plain")); mime_types.insert(MIME_TYPE("cpp", "text/plain")); mime_types.insert(MIME_TYPE("cc", "text/plain")); mime_types.insert(MIME_TYPE("c++", "text/plain")); mime_types.insert(MIME_TYPE("h", "text/plain")); mime_types.insert(MIME_TYPE("css", "text/css")); mime_types.insert(MIME_TYPE("smil", "application/smil")); mime_types.insert(MIME_TYPE("xml", "application/xml")); mime_types.insert(MIME_TYPE("xsl", "application/xml")); mime_types.insert(MIME_TYPE("rss", "application/rss+xml")); mime_types.insert(MIME_TYPE("xpi", "application/x-xpinstall")); mime_types.insert(MIME_TYPE("xul", "application/vnd.mozilla.xul+xml")); mime_types.insert(MIME_TYPE("rdf", "text/xml")); mime_types.insert(MIME_TYPE("xbl", "text/xml")); mime_types.insert(MIME_TYPE("cacert", "application/x-x509-ca-cert")); mime_types.insert(MIME_TYPE("wml", "text/vnd.wap.wml")); mime_types.insert(MIME_TYPE("wbmp", "image/vnd.wap.wbmp")); mime_types.insert(MIME_TYPE("wmlc", "application/vnd.wap.wmlc")); mime_types.insert(MIME_TYPE("wmls", "text/vnd.wap.wmlscript")); mime_types.insert(MIME_TYPE("wmlsc", "application/vnd.wap.wmlscriptc")); // learn more ... } ZMWSMIME::~ZMWSMIME(void){ mime_types.clear(); } const std::string ZMWSMIME::getMimeType(const std::string& extension) { if (mime_types.find(extension) != mime_types.end()) { return mime_types[extension]; } return defaultMIME; } void ZMWSMIME::addMimeType(const std::string& extension, const std::string& type) { if (mime_types.find(extension) != mime_types.end()) { mime_types[extension] = type; } else { mime_types.insert(MIME_TYPE(extension, type)); } } void ZMWSMIME::setDefaultMimeType(const std::string& type) { defaultMIME = type; }