xref: /aoo4110/main/svl/inc/svl/inettype.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef _INETTYPE_HXX
25*b1cdbd2cSJim Jagielski #define _INETTYPE_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include "svl/svldllapi.h"
28*b1cdbd2cSJim Jagielski #include <tools/inetmime.hxx>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/Locale.hpp>
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski //============================================================================
32*b1cdbd2cSJim Jagielski /** Definitions for frequently used media type names.
33*b1cdbd2cSJim Jagielski  */
34*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_OCTSTREAM "application/octet-stream"
35*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_PDF "application/pdf"
36*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_RTF "application/rtf"
37*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_CALC "application/vnd.stardivision.calc"
38*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_CHART "application/vnd.stardivision.chart"
39*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_DRAW "application/vnd.stardivision.draw"
40*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_IMAGE "application/vnd.stardivision.image"
41*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_IMPRESSPACKED \
42*b1cdbd2cSJim Jagielski 	"application/vnd.stardivision.impress-packed"
43*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_IMPRESS \
44*b1cdbd2cSJim Jagielski 	"application/vnd.stardivision.impress"
45*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_MAIL "application/vnd.stardivision.mail"
46*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_MATH "application/vnd.stardivision.math"
47*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_NEWS "application/vnd.stardivision.news"
48*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_OUTTRAY \
49*b1cdbd2cSJim Jagielski 	"application/vnd.stardivision.outtray"
50*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_TEMPLATE \
51*b1cdbd2cSJim Jagielski 	"application/vnd.stardivision.template"
52*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_WRITER_GLOBAL \
53*b1cdbd2cSJim Jagielski 	"application/vnd.stardivision.writer-global"
54*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_WRITER_WEB \
55*b1cdbd2cSJim Jagielski 	"application/vnd.stardivision.writer-web"
56*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_WRITER "application/vnd.stardivision.writer"
57*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_FRAMESET "application/x-frameset"
58*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_GALLERY_THEME "application/x-gallery-theme"
59*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_GALLERY "application/x-gallery"
60*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_JAR "application/x-jar"
61*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_MACRO "application/x-macro"
62*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_MSEXCEL_TEMPL "application/x-msexcel-template"
63*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_MSEXCEL "application/x-msexcel"
64*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_MSPPOINT_TEMPL "application/x-mspowerpoint-template"
65*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_MSPPOINT "application/x-mspowerpoint"
66*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_MSWORD_TEMPL "application/x-msword-template"
67*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_MSWORD "application/x-msword"
68*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_SCHEDULE_EVT "application/x-schedule-event"
69*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_SCHEDULE_FEVT "application/x-schedule-form-event"
70*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_SCHEDULE_FTASK "application/x-schedule-form-task"
71*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_SCHEDULE_TASK "application/x-schedule-task"
72*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_SCHEDULE_CMB "application/x-schedule"
73*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_STARCALC "application/x-starcalc"
74*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_STARCHART "application/x-starchart"
75*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_STARDRAW "application/x-stardraw"
76*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_STARHELP "application/x-starhelp"
77*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_STARIMAGE "application/x-starimage"
78*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_STARIMPRESS "application/x-starimpress"
79*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_STARMAIL_SDM "application/x-starmail-sdm"
80*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_STARMAIL_SMD "application/x-starmail-smd"
81*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_STARMATH "application/x-starmath"
82*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_STARWRITER_GLOB "application/x-starwriter-global"
83*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_STARWRITER "application/x-starwriter"
84*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_CDE_CALENDAR_APP "application/x-sun-ae-file"
85*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_ZIP "application/x-zip-compressed"
86*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_AUDIO_AIFF "audio/aiff"
87*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_AUDIO_BASIC "audio/basic"
88*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_AUDIO_MIDI "audio/midi"
89*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_AUDIO_WAV "audio/wav"
90*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_DOCUMENT ".chaos/document"
91*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_FSYSBOX ".chaos/fsys-box"
92*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_CDROM_VOLUME ".chaos/fsys-cdrom-volume"
93*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_DISK_35 ".chaos/fsys-disk-35"
94*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_DISK_525 ".chaos/fsys-disk-525"
95*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_FSYSFILE ".chaos/fsys-file"
96*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_FIXED_VOLUME ".chaos/fsys-fixed-volume"
97*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_FSYSFOLDER ".chaos/fsys-folder"
98*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_RAM_VOLUME ".chaos/fsys-ram-volume"
99*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_REMOTE_VOLUME ".chaos/fsys-remote-volume"
100*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_REMOVEABLE_VOLUME \
101*b1cdbd2cSJim Jagielski 	".chaos/fsys-removeable-volume"
102*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_FSYSSPECIALFILE ".chaos/fsys-special-file"
103*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_FSYSSPECIALFOLDER ".chaos/fsys-special-folder"
104*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_TAPEDRIVE ".chaos/fsys-tapedrive"
105*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_FSYSURLFILE ".chaos/fsys-urlfile"
106*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_FTPBOX ".chaos/ftp-box"
107*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_FTPFILE ".chaos/ftp-file"
108*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_FTPFOLDER ".chaos/ftp-folder"
109*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_FTPLINK ".chaos/ftp-link"
110*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_HTTPBOX ".chaos/http-box"
111*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_HTTPFILE ".chaos/http-file"
112*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_IMAPBOX ".chaos/imap-box"
113*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_IMAPFOLDER ".chaos/imap-folder"
114*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_MESSAGE ".chaos/message"
115*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_NEWSBOX ".chaos/news-box"
116*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_NEWSGROUP ".chaos/news-group"
117*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_OUTBOX ".chaos/out-box"
118*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_POP3BOX ".chaos/pop3-box"
119*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_PUBLISHBOX ".chaos/publish-box"
120*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_SEARCHBOX ".chaos/search-box"
121*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_SEPARATOR ".chaos/separator"
122*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_BOOKMARK ".chaos/subscribe-bookmark"
123*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_SUBSCRIBEBOX ".chaos/subscribe-box"
124*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_CDFITEM ".chaos/subscribe-cdf-item"
125*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_CDFSUB ".chaos/subscribe-cdf-sub"
126*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_CDF ".chaos/subscribe-cdf"
127*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_STARCHANNEL ".chaos/subscribe-sdc"
128*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_TRASHBOX ".chaos/trash-box"
129*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_TRASH ".chaos/trash-item"
130*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_VIMBBOARDBOX ".chaos/vim-bboardbox"
131*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_VIMBBOARD ".chaos/vim-bboard"
132*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_VIMBOX ".chaos/vim-box"
133*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_CNT_VIMINBOX ".chaos/vim-inbox"
134*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_IMAGE_GENERIC "image/generic"
135*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_IMAGE_GIF "image/gif"
136*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_IMAGE_JPEG "image/jpeg"
137*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_IMAGE_PCX "image/pcx"
138*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_IMAGE_PNG "image/png"
139*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_IMAGE_TIFF "image/tiff"
140*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_IMAGE_BMP "image/x-MS-bmp"
141*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_INET_MSG_RFC822 "message/rfc822"
142*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_INET_MULTI_ALTERNATIVE "multipart/alternative"
143*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_INET_MULTI_DIGEST "multipart/digest"
144*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_INET_MULTI_MIXED "multipart/mixed"
145*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_INET_MULTI_PARALLEL "multipart/parallel"
146*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_INET_MULTI_RELATED "multipart/related"
147*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_TEXT_ICALENDAR "text/calendar"
148*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_TEXT_HTML "text/html"
149*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_TEXT_PLAIN "text/plain"
150*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_TEXT_XMLICALENDAR "text/x-icalxml"
151*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_TEXT_URL "text/x-url"
152*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_TEXT_VCALENDAR "text/x-vCalendar"
153*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_TEXT_VCARD "text/x-vCard"
154*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_VIDEO_VDO "video/vdo"
155*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_VIDEO_MSVIDEO "video/x-msvideo"
156*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_STARMAIL "x-starmail"
157*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_X_VRML "x-world/x-vrml"
158*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_SUN_XML_WRITER "application/vnd.sun.xml.writer"
159*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_SUN_XML_CALC "application/vnd.sun.xml.calc"
160*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_SUN_XML_IMPRESS "application/vnd.sun.xml.impress"
161*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_SUN_XML_DRAW "application/vnd.sun.xml.draw"
162*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_SUN_XML_CHART "application/vnd.sun.xml.chart"
163*b1cdbd2cSJim Jagielski 
164*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_SUN_XML_MATH "application/vnd.sun.xml.math"
165*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_SUN_XML_WRITER_GLOBAL "application/vnd.sun.xml.writer-global"
166*b1cdbd2cSJim Jagielski #define CONTENT_TYPE_STR_APP_VND_SUN_XML_IMPRESSPACKED "application/vnd.sun.xml.impress-packed"
167*b1cdbd2cSJim Jagielski 
168*b1cdbd2cSJim Jagielski //============================================================================
169*b1cdbd2cSJim Jagielski /** Definitions for frequently used media type parameter names.
170*b1cdbd2cSJim Jagielski  */
171*b1cdbd2cSJim Jagielski #define INET_CONTENT_TYPE_PARAMETER_CHARSET "charset"
172*b1cdbd2cSJim Jagielski 
173*b1cdbd2cSJim Jagielski //============================================================================
174*b1cdbd2cSJim Jagielski /** Definitions for matching parts of URIs.
175*b1cdbd2cSJim Jagielski  */
176*b1cdbd2cSJim Jagielski #define INETTYPE_URL_PROT_COMPONENT ".component"
177*b1cdbd2cSJim Jagielski #define INETTYPE_URL_PROT_DATA "data"
178*b1cdbd2cSJim Jagielski #define INETTYPE_URL_PROT_FILE "file"
179*b1cdbd2cSJim Jagielski #define INETTYPE_URL_PROT_HTTP "http"
180*b1cdbd2cSJim Jagielski #define INETTYPE_URL_PROT_HTTPS "https"
181*b1cdbd2cSJim Jagielski #define INETTYPE_URL_PROT_MACRO "macro"
182*b1cdbd2cSJim Jagielski #define INETTYPE_URL_PROT_MAILTO "mailto"
183*b1cdbd2cSJim Jagielski #define INETTYPE_URL_PROT_PRIVATE "private"
184*b1cdbd2cSJim Jagielski 
185*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SUB_FACTORY "factory"
186*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SUB_HELPID "helpid"
187*b1cdbd2cSJim Jagielski 
188*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SSUB_FRAMESET "frameset"
189*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SSUB_SCALC "scalc"
190*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SSUB_SCHART "schart"
191*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SSUB_SDRAW "sdraw"
192*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SSUB_SIMAGE "simage"
193*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SSUB_SIMPRESS "simpress"
194*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SSUB_SMATH "smath"
195*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SSUB_SS "ss"
196*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SSUB_SWRITER "swriter"
197*b1cdbd2cSJim Jagielski 
198*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SSSUB_GLOB "GlobalDocument"
199*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SSSUB_WEB "web"
200*b1cdbd2cSJim Jagielski 
201*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SCHED_CMB "cmbview"
202*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SCHED_FORM "formular"
203*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SCHED_EVENT "type=event"
204*b1cdbd2cSJim Jagielski #define INETTYPE_URL_SCHED_TASK "type=task"
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski //============================================================================
207*b1cdbd2cSJim Jagielski enum INetContentType
208*b1cdbd2cSJim Jagielski {
209*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_UNKNOWN,
210*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_OCTSTREAM,
211*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_PDF,
212*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_RTF,
213*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_MSWORD,
214*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_MSWORD_TEMPL,
215*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_STARCALC,
216*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_STARCHART,
217*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_STARDRAW,
218*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_STARHELP,
219*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_STARIMAGE,
220*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_STARIMPRESS,
221*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_STARMATH,
222*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_STARWRITER,
223*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_ZIP,
224*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_AUDIO_AIFF,
225*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_AUDIO_BASIC,
226*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_AUDIO_MIDI,
227*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_AUDIO_WAV,
228*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_IMAGE_GIF,
229*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_IMAGE_JPEG,
230*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_IMAGE_PCX,
231*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_IMAGE_PNG,
232*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_IMAGE_TIFF,
233*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_IMAGE_BMP,
234*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_TEXT_HTML,
235*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_TEXT_PLAIN,
236*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_TEXT_URL,
237*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_TEXT_VCARD,
238*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_VIDEO_VDO,
239*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_VIDEO_MSVIDEO,
240*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_MESSAGE,
241*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_DOCUMENT,
242*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_POP3BOX,
243*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_IMAPBOX,
244*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_IMAPFOLDER,
245*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_VIMBOX,
246*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_VIMINBOX,
247*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_VIMBBOARDBOX,
248*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_VIMBBOARD,
249*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_NEWSBOX,
250*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_NEWSGROUP,
251*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_OUTBOX,
252*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_FTPBOX,
253*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_FTPFOLDER,
254*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_FTPFILE,
255*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_FTPLINK,
256*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_HTTPBOX,
257*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_FSYSBOX,
258*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_FSYSFOLDER,
259*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_FSYSFILE,
260*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_FSYSURLFILE,
261*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_PUBLISHBOX,
262*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_SEARCHBOX,
263*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_SUBSCRIBEBOX,
264*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_BOOKMARK,
265*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_CDF,
266*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_CDFSUB,
267*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_CDFITEM,
268*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_TRASHBOX,
269*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_TRASH,
270*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_STARMAIL,
271*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_VRML,
272*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_REMOVEABLE_VOLUME,
273*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_FIXED_VOLUME,
274*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_REMOTE_VOLUME,
275*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_RAM_VOLUME,
276*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_CDROM_VOLUME,
277*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_DISK_35,
278*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_DISK_525,
279*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_TAPEDRIVE,
280*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_GALLERY,
281*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_GALLERY_THEME,
282*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_STARCHANNEL,
283*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_SEPARATOR,
284*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_STARWRITER_GLOB,
285*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_STARMAIL_SDM,
286*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_STARMAIL_SMD,
287*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_CALC,
288*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_CHART,
289*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_DRAW,
290*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_IMAGE,
291*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_IMPRESS,
292*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_MAIL,
293*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_MATH,
294*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_WRITER,
295*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_WRITER_GLOBAL,
296*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_WRITER_WEB,
297*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_SCHEDULE,
298*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_SCHEDULE_EVT,
299*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_SCHEDULE_TASK,
300*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_SCHEDULE_FORM_EVT,
301*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_SCHEDULE_FORM_TASK,
302*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_FRAMESET,
303*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_MACRO,
304*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_FSYSSPECIALFOLDER,
305*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_FSYSSPECIALFILE,
306*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_TEMPLATE,
307*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_IMAGE_GENERIC,
308*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_NEWS,
309*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_OUTTRAY,
310*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_X_CNT_HTTPFILE,
311*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_MSEXCEL,
312*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_MSEXCEL_TEMPL,
313*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_MSPPOINT,
314*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_MSPPOINT_TEMPL,
315*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_TEXT_VCALENDAR,
316*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_TEXT_ICALENDAR,
317*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_TEXT_XMLICALENDAR,
318*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_CDE_CALENDAR_APP,
319*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_INET_MESSAGE_RFC822,
320*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_INET_MULTIPART_ALTERNATIVE,
321*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_INET_MULTIPART_DIGEST,
322*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_INET_MULTIPART_PARALLEL,
323*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_INET_MULTIPART_RELATED,
324*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_INET_MULTIPART_MIXED,
325*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_IMPRESSPACKED,
326*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_JAR,
327*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_SUN_XML_WRITER,
328*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_SUN_XML_CALC,
329*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_SUN_XML_IMPRESS,
330*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_SUN_XML_DRAW,
331*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_SUN_XML_CHART,
332*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_SUN_XML_MATH,
333*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_SUN_XML_WRITER_GLOBAL,
334*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_APP_VND_SUN_XML_IMPRESSPACKED,
335*b1cdbd2cSJim Jagielski 	CONTENT_TYPE_LAST = CONTENT_TYPE_APP_VND_SUN_XML_IMPRESSPACKED
336*b1cdbd2cSJim Jagielski };
337*b1cdbd2cSJim Jagielski 
338*b1cdbd2cSJim Jagielski //============================================================================
339*b1cdbd2cSJim Jagielski class SVL_DLLPUBLIC INetContentTypes
340*b1cdbd2cSJim Jagielski {
341*b1cdbd2cSJim Jagielski public:
342*b1cdbd2cSJim Jagielski 	static void Uninitialize();
343*b1cdbd2cSJim Jagielski 
344*b1cdbd2cSJim Jagielski 	static INetContentType RegisterContentType(UniString const & rTypeName,
345*b1cdbd2cSJim Jagielski 											   UniString const &
346*b1cdbd2cSJim Jagielski 											       rPresentation,
347*b1cdbd2cSJim Jagielski 											   UniString const * pExtension
348*b1cdbd2cSJim Jagielski 											       = 0,
349*b1cdbd2cSJim Jagielski 											   UniString const *
350*b1cdbd2cSJim Jagielski 											       pSystemFileType = 0);
351*b1cdbd2cSJim Jagielski 
352*b1cdbd2cSJim Jagielski 	static INetContentType GetContentType(UniString const & rTypeName);
353*b1cdbd2cSJim Jagielski 
354*b1cdbd2cSJim Jagielski 	static UniString GetContentType(INetContentType eTypeID);
355*b1cdbd2cSJim Jagielski 
356*b1cdbd2cSJim Jagielski 	static UniString GetPresentation(INetContentType eTypeID,
357*b1cdbd2cSJim Jagielski 									 const ::com::sun::star::lang::Locale& aLocale);
358*b1cdbd2cSJim Jagielski 
359*b1cdbd2cSJim Jagielski 	static UniString GetExtension(UniString const & rTypeName);
360*b1cdbd2cSJim Jagielski 
361*b1cdbd2cSJim Jagielski 	static INetContentType GetContentType4Extension(UniString const &
362*b1cdbd2cSJim Jagielski 													    rExtension);
363*b1cdbd2cSJim Jagielski 
364*b1cdbd2cSJim Jagielski 	static INetContentType GetContentTypeFromURL(UniString const & rURL);
365*b1cdbd2cSJim Jagielski 
366*b1cdbd2cSJim Jagielski 	static bool GetExtensionFromURL(UniString const & rURL,
367*b1cdbd2cSJim Jagielski 									UniString & rExtension);
368*b1cdbd2cSJim Jagielski 
369*b1cdbd2cSJim Jagielski 	static INetContentType MapStringToContentType(UniString const &
370*b1cdbd2cSJim Jagielski 												      rPresentation);
371*b1cdbd2cSJim Jagielski 
372*b1cdbd2cSJim Jagielski 	/** Parse the body of an RFC 2045 Content-Type header field.
373*b1cdbd2cSJim Jagielski 
374*b1cdbd2cSJim Jagielski 		@param rMediaType  The body of the Content-Type header field.  It must
375*b1cdbd2cSJim Jagielski 		be of the form
376*b1cdbd2cSJim Jagielski 
377*b1cdbd2cSJim Jagielski 		  token "/" token *(";" token "=" (token / quoted-string))
378*b1cdbd2cSJim Jagielski 
379*b1cdbd2cSJim Jagielski 		with intervening linear white space and comments (cf. RFCs 822, 2045).
380*b1cdbd2cSJim Jagielski 		The RFC 2231 extension are supported.  The encoding of rMediaType
381*b1cdbd2cSJim Jagielski 		should be US-ASCII, but any values in the range 0x80--0xFF are
382*b1cdbd2cSJim Jagielski 		interpretet 'as appropriate.'
383*b1cdbd2cSJim Jagielski 
384*b1cdbd2cSJim Jagielski 		@param rType  Returns the type (the first of the above tokens), in US-
385*b1cdbd2cSJim Jagielski 		ASCII encoding and converted to lower case.
386*b1cdbd2cSJim Jagielski 
387*b1cdbd2cSJim Jagielski 		@param rSubType  Returns the sub type (the second of the above
388*b1cdbd2cSJim Jagielski 		tokens), in US-ASCII encoding and converted to lower case.
389*b1cdbd2cSJim Jagielski 
390*b1cdbd2cSJim Jagielski 		@param rParameters  If not null, returns the parameters as a list of
391*b1cdbd2cSJim Jagielski 		INetContentTypeParameters (the attributes are in US-ASCII encoding and
392*b1cdbd2cSJim Jagielski 		converted to lower case, the values are in Unicode encoding).  If
393*b1cdbd2cSJim Jagielski 		null, only the syntax of the parameters is checked, but they are not
394*b1cdbd2cSJim Jagielski 		returned.
395*b1cdbd2cSJim Jagielski 
396*b1cdbd2cSJim Jagielski 		@return  True if the syntax of the field body is correct.  If false is
397*b1cdbd2cSJim Jagielski 		returned, none of the output parameters will be modified!
398*b1cdbd2cSJim Jagielski 	 */
399*b1cdbd2cSJim Jagielski 	static bool parse(ByteString const & rMediaType, ByteString & rType,
400*b1cdbd2cSJim Jagielski 					  ByteString & rSubType,
401*b1cdbd2cSJim Jagielski 					  INetContentTypeParameterList * pParameters = 0);
402*b1cdbd2cSJim Jagielski 
403*b1cdbd2cSJim Jagielski 	/** Parse the body of an RFC 2045 Content-Type header field.
404*b1cdbd2cSJim Jagielski 
405*b1cdbd2cSJim Jagielski 		@param rMediaType  The body of the Content-Type header field.  It must
406*b1cdbd2cSJim Jagielski 		be of the form
407*b1cdbd2cSJim Jagielski 
408*b1cdbd2cSJim Jagielski 		  token "/" token *(";" token "=" (token / quoted-string))
409*b1cdbd2cSJim Jagielski 
410*b1cdbd2cSJim Jagielski 		with intervening linear white space and comments (cf. RFCs 822, 2045).
411*b1cdbd2cSJim Jagielski 		The RFC 2231 extension are supported.  The encoding of rMediaType
412*b1cdbd2cSJim Jagielski 		should be US-ASCII, but any Unicode values in the range U+0080..U+FFFF
413*b1cdbd2cSJim Jagielski 		are interpretet 'as appropriate.'
414*b1cdbd2cSJim Jagielski 
415*b1cdbd2cSJim Jagielski 		@param rType  Returns the type (the first of the above tokens), in US-
416*b1cdbd2cSJim Jagielski 		ASCII encoding and converted to lower case.
417*b1cdbd2cSJim Jagielski 
418*b1cdbd2cSJim Jagielski 		@param rSubType  Returns the sub type (the second of the above
419*b1cdbd2cSJim Jagielski 		tokens), in US-ASCII encoding and converted to lower case.
420*b1cdbd2cSJim Jagielski 
421*b1cdbd2cSJim Jagielski 		@param rParameters  If not null, returns the parameters as a list of
422*b1cdbd2cSJim Jagielski 		INetContentTypeParameters (the attributes are in US-ASCII encoding and
423*b1cdbd2cSJim Jagielski 		converted to lower case, the values are in Unicode encoding).  If
424*b1cdbd2cSJim Jagielski 		null, only the syntax of the parameters is checked, but they are not
425*b1cdbd2cSJim Jagielski 		returned.
426*b1cdbd2cSJim Jagielski 
427*b1cdbd2cSJim Jagielski 		@return  True if the syntax of the field body is correct.  If false is
428*b1cdbd2cSJim Jagielski 		returned, none of the output parameters will be modified!
429*b1cdbd2cSJim Jagielski 	 */
430*b1cdbd2cSJim Jagielski 	static bool parse(UniString const & rMediaType, UniString & rType,
431*b1cdbd2cSJim Jagielski 					  UniString & rSubType,
432*b1cdbd2cSJim Jagielski 					  INetContentTypeParameterList * pParameters = 0);
433*b1cdbd2cSJim Jagielski 
434*b1cdbd2cSJim Jagielski 	/** Append a parameter to the string representation of a MIME media type.
435*b1cdbd2cSJim Jagielski 
436*b1cdbd2cSJim Jagielski 		@param rMediaType  The string representation of a MIME media type.
437*b1cdbd2cSJim Jagielski 
438*b1cdbd2cSJim Jagielski 		@param rAttribute  The name of the parameter.  Must be a valid RFC
439*b1cdbd2cSJim Jagielski 		2045 token.
440*b1cdbd2cSJim Jagielski 
441*b1cdbd2cSJim Jagielski 		@param rValue  The value of the paramter.  Must only consist of US-
442*b1cdbd2cSJim Jagielski 		ASCII characters.
443*b1cdbd2cSJim Jagielski 
444*b1cdbd2cSJim Jagielski 		@return  The string representation of rMediaType with the new
445*b1cdbd2cSJim Jagielski 		parameter appended.  It is not checked whether a parameter with that
446*b1cdbd2cSJim Jagielski 		name already existed in rMediaType.
447*b1cdbd2cSJim Jagielski 	 */
448*b1cdbd2cSJim Jagielski 	static ByteString appendUSASCIIParameter(ByteString const & rMediaType,
449*b1cdbd2cSJim Jagielski 											 ByteString const & rAttribute,
450*b1cdbd2cSJim Jagielski 											 ByteString const & rValue);
451*b1cdbd2cSJim Jagielski 
452*b1cdbd2cSJim Jagielski 	/** Append a parameter to the string representation of a MIME media type.
453*b1cdbd2cSJim Jagielski 
454*b1cdbd2cSJim Jagielski 		@param rMediaType  The string representation of a MIME media type.
455*b1cdbd2cSJim Jagielski 
456*b1cdbd2cSJim Jagielski 		@param rAttribute  The name of the parameter.  Must be a valid RFC
457*b1cdbd2cSJim Jagielski 		2045 token.
458*b1cdbd2cSJim Jagielski 
459*b1cdbd2cSJim Jagielski 		@param rValue  The value of the paramter.  Must only consist of US-
460*b1cdbd2cSJim Jagielski 		ASCII characters.
461*b1cdbd2cSJim Jagielski 
462*b1cdbd2cSJim Jagielski 		@return  The string representation of rMediaType with the new
463*b1cdbd2cSJim Jagielski 		parameter appended.  It is not checked whether a parameter with that
464*b1cdbd2cSJim Jagielski 		name already existed in rMediaType.
465*b1cdbd2cSJim Jagielski 	 */
466*b1cdbd2cSJim Jagielski 	static UniString appendUSASCIIParameter(UniString const & rMediaType,
467*b1cdbd2cSJim Jagielski 											UniString const & rAttribute,
468*b1cdbd2cSJim Jagielski 											UniString const & rValue);
469*b1cdbd2cSJim Jagielski };
470*b1cdbd2cSJim Jagielski 
471*b1cdbd2cSJim Jagielski #endif // _INETTYPE_HXX
472*b1cdbd2cSJim Jagielski 
473