| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- {
- $Project$
- $Workfile$
- $Revision$
- $DateUTC$
- $Id$
- This file is part of the Indy (Internet Direct) project, and is offered
- under the dual-licensing agreement described on the Indy website.
- (http://www.indyproject.org/)
- Copyright:
- (c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
- }
- {
- $Log$
- }
- {
- Rev 1.1 2004.02.03 5:44:08 PM czhower
- Name changes
- Rev 1.0 11/13/2002 07:57:36 AM JPMugaas
- 2000-Mar-27 Pete Mee
- - ReturnMIMETypes should return the most relevant MIME type+encoding pair
- to the values passed - i.e., removes x- where it is unnecessary & modifies
- the type if it is known to be incorrect. (Stupid-)Example:
- application/octet-stream + x-base64 should be application/octet-stream +
- base64... Warning: this file is expected to grow to become mainly constants!!
- }
- unit IdMIMETypes;
- interface
- {$i IdCompilerDefines.inc}
- const
- MIMESplit = '/'; {Do not Localize}
- MIMEXVal = 'x-'; {Do not Localize}
- MIMETypeApplication = 'application' + MIMESplit; {Do not Localize}
- MIMETypeAudio = 'audio' + MIMESplit; {Do not Localize}
- MIMETypeImage = 'image' + MIMESplit; {Do not Localize}
- MIMETypeMessage = 'message' + MIMESplit; {Do not Localize}
- MIMETypeMultipart = 'multipart' + MIMESplit; {Do not Localize}
- MIMETypeText = 'text' + MIMESplit; {Do not Localize}
- MIMETypeVideo = 'video' + MIMESplit; {Do not Localize}
- MaxMIMEType = 6;
- // MIME Sub-Types
- MIMESubOctetStream = 'octet-stream'; {Do not Localize}
- MIMESubMacBinHex40 = 'mac-binhex40'; {Do not Localize}
- MaxMIMESubTypes = 1;
- // BinToASCII
- MIMEEncBase64 = 'base64'; // Correct MIME type {Do not Localize}
- MIMEEncUUEncode = MIMEXVal + 'uu'; // A guess... {Do not Localize}
- MIMEEncXXEncode = MIMEXVal + 'xx'; // A guess... {Do not Localize}
- MaxMIMEBinToASCIIType = 2;
- // Message Digests - a MIME type probably doesn't exist for these... {Do not Localize}
- MIMEEncRSAMD2 = MIMEXVal + 'rsa-md2'; {Do not Localize}
- MIMEEncRSAMD4 = MIMEXVal + 'rsa-md4'; {Do not Localize}
- MIMEEncRSAMD5 = MIMEXVal + 'rsa-md5'; {Do not Localize}
- MIMEEncNISTSHA = MIMEXVal + 'nist-sha'; {Do not Localize}
- MaxMIMEMessageDigestType = 3;
- // Compression Types
- MIMEEncRLECompress = MIMEXVal + 'rle-compress'; // Probably doesn't exist {Do not Localize}
- MaxMIMECompressType = 0;
- MaxMIMEEncType = MaxMIMEBinToASCIIType + MaxMIMEMessageDigestType + 1 + MaxMIMECompressType + 1;
- // Only put long, frequent full values in. Keep this list short, otherwise
- // it'll be a nightmare & produce HUGE .exe files with LARGE useless {Do not Localize}
- // sections (the above is bad enough on it's own!). {Do not Localize}
- MIMEFullApplicationOctetStream = MIMETypeApplication + MIMESubOctetStream;
- // Returns true if matched, false if not. If true, vars may be altered.
- function ReturnMIMEType(var MediaType, EncType : String) : Boolean;
- var
- MIMEMediaType : array [0..MaxMIMEType] of String;
- implementation
- uses
- IdGlobal,
- IdGlobalProtocols;
- function ReturnMIMEType(var MediaType, EncType : String) : Boolean;
- var
- MType, SType, EType : String;
- i : LongWord;
- begin
- i := IndyPos(MIMESplit, MediaType);
- MType := Copy(MediaType, 1, i);
- SType := Copy(MediaType, i + 1, MaxInt);
- EType := EncType;
- i := PosInStrArray(MType, MIMEMediaType, False);
- case i of
- 0 : begin end; // MIMETypeApplication - application/
- 1 : begin end; // MIMETypeAudio - audio/
- 2 : begin end; // MIMETypeImage - image/
- 3 : begin end; // MIMETypeMessage - message/
- 4 : begin end; // MIMETypeMultipart - multipart/
- 5 : begin end; // MIMETypeText - text/
- 6 : begin end; // MIMETypeVideo - video/
- else
- begin
- if TextStartsWith(MType, MIMEXVal) then begin
- i := PosInStrArray(Copy(MType, 3, MaxInt), MIMEMediaType, False);
- case i of
- 0 :
- begin
- // MIMETypeApplication - application/
- MType := MIMETypeApplication;
- end;
- 1 :
- begin
- // MIMETypeAudio - audio/
- MType := MIMETypeAudio;
- end;
- 2 :
- begin
- // MIMETypeImage - image/
- MType := MIMETypeImage;
- end;
- 3 :
- begin
- // MIMETypeMessage - message/
- MType := MIMETypeMessage;
- end;
- 4 :
- begin
- // MIMETypeMultipart - multipart/
- MType := MIMETypeMultipart;
- end;
- 5 :
- begin
- // MIMETypeText - text/
- MType := MIMETypeText;
- end;
- 6 :
- begin
- // MIMETypeVideo - video/
- MType := MIMETypeVideo;
- end;
- end;
- end;
- end;
- end;
- Result := False;
- end;
- initialization
- MIMEMediaType[0] := MIMETypeApplication;
- MIMEMediaType[1] := MIMETypeAudio;
- MIMEMediaType[2] := MIMETypeImage;
- MIMEMediaType[3] := MIMETypeMessage;
- MIMEMediaType[4] := MIMETypeMultipart;
- MIMEMediaType[5] := MIMETypeText;
- MIMEMediaType[6] := MIMETypeVideo;
- end.
|