#ifndef _CONTENTTYPE_H #define _CONTENTTYPE_H #include "debug.h" #include "StringMap.h" #include #include #include //language is not hidden by this class (no translation) enum contentLanguage { unknownContentLanguage = 0, notStatedLanguage, en_GB }; enum protocol { unknownProtocol = 0, notStatedProtocol, http, https, ftp }; class ContentType { static StringMapCI m_contentTypes; //text lookup static StringMapCI m_extensions; //file extension lookup static unsigned int m_count; //for generating the id unsigned int m_id; //for switch statements const char *m_MIMETypeText; //e.g. "application/pdf" const char *m_extension; //e.g. "exe" const bool m_process; //e.g. PDFs are not processed yet public: static ContentType //special unknownContentType, notStatedContentType, //extra application_xml, unknown_script, image_png, video_x_ms_wmv, application_rss_xml, //from IIS 5 (http://www.w3schools.com/media/media_mimeref.asp) application_envoy, application_fractals, application_futuresplash, application_hta, application_internet_property_stream, application_mac_binhex40, application_msword, application_octet_stream, application_oda, application_olescript, application_pdf, application_pics_rules, application_pkcs10, application_pkix_crl, application_postscript, application_rtf, application_set_payment_initiation, application_set_registration_initiation, application_vnd_ms_excel, application_vnd_ms_outlook, application_vnd_ms_pkicertstore, application_vnd_ms_pkiseccat, application_vnd_ms_pkistl, application_vnd_ms_powerpoint, application_vnd_ms_project, application_vnd_ms_works, application_winhlp, application_x_bcpio, application_x_cdf, application_x_compress, application_x_compressed, application_x_cpio, application_x_csh, application_x_director, application_x_dvi, application_x_gtar, application_x_gzip, application_x_hdf, application_x_internet_signup, application_x_iphone, application_x_javascript, application_x_latex, application_x_msaccess, application_x_mscardfile, application_x_msclip, application_x_msdownload, application_x_msmediaview, application_x_msmetafile, application_x_msmoney, application_x_mspublisher, application_x_msschedule, application_x_msterminal, application_x_mswrite, application_x_netcdf, application_x_perfmon, application_x_pkcs12, application_x_pkcs7_certificates, application_x_pkcs7_certreqresp, application_x_pkcs7_mime, application_x_pkcs7_signature, application_x_sh, application_x_shar, application_x_shockwave_flash, application_x_stuffit, application_x_sv4cpio, application_x_sv4crc, application_x_tar, application_x_tcl, application_x_tex, application_x_texinfo, application_x_troff, application_x_troff_man, application_x_troff_me, application_x_troff_ms, application_x_ustar, application_x_wais_source, application_x_x509_ca_cert, application_ynd_ms_pkipko, application_zip, audio_basic, audio_mid, audio_mpeg, audio_x_aiff, audio_x_mpegurl, audio_x_pn_realaudio, audio_x_wav, image_bmp, image_cis_cod, image_gif, image_ief, image_jpeg, image_pipeg, image_svg_xml, image_tiff, image_x_cmu_raster, image_x_cmx, image_x_icon, image_x_portable_anymap, image_x_portable_bitmap, image_x_portable_graymap, image_x_portable_pixmap, image_x_rgb, image_x_xbitmap, image_x_xpixmap, image_x_xwindowdump, message_rfc822, text_css, text_h323, text_html, text_iuls, text_plain, text_richtext, text_scriptlet, text_tab_separated_values, text_webviewhtml, text_x_component, text_x_setext, text_x_vcard, video_mpeg, video_quicktime, video_x_la_asf, video_x_ms_asf, video_x_msvideo, video_x_sgi_movie, x_world_x_vrml; ContentType(const char *_MIMETypeText, const char *_extension = 0, const bool _process = false, unsigned int extraMIMETypes = 0, unsigned int extraExtensions = 0, ...); //... for multiple MIMEType texts and extensions //exceptions class ExtensionExists { const char *m_extension; public: ExtensionExists(const char *_extension): m_extension(_extension) {} }; class MIMETypeExists { const char *m_MIMEType; public: MIMETypeExists(const char *_MIMEType): m_MIMEType(_MIMEType) {} }; //accessors const char *MIMETypeText() const {return m_MIMETypeText;} const char *extension() const {return m_extension;} bool process() const {return m_process;} unsigned int id() const {return m_id;} //operators const bool operator== (const ContentType *t) const {return this == t;} //compare address as these are singletons const bool operator!= (const ContentType *t) const {return !(this->operator == (t));} void addMIMETypeText(const char *MIMETypeText); void addExtension( const char *extension); //lookups static ContentType *contentType(const char *textstart); static ContentType *fromextension( const char *textstart); }; #endif