-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
intf.ZUGFeRDMimeTypeMapper.pas
65 lines (54 loc) · 2.23 KB
/
intf.ZUGFeRDMimeTypeMapper.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
{* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.}
unit intf.ZUGFeRDMimeTypeMapper;
interface
uses
System.SysUtils, System.Generics.Collections;
type
/// <summary>
/// Class for mapping between file extensions and mime types
///
/// Only those mime types are present that are supported by the additional reference document according to
/// XRechnung specification, see e.g. https://projekte.kosit.org/xrechnung/xrechnung/-/issues/59
/// </summary>
TZUGFeRDMimeTypeMapper = class
public
class function GetMimeType(const filename: string): string;
end;
implementation
{ TZUGFeRDMimeTypeMapper }
class function TZUGFeRDMimeTypeMapper.GetMimeType(
const filename: string): string;
var
extension: string;
begin
Result := 'application/octet-stream';
if filename.IsEmpty then
exit;
extension := ExtractFileExt(filename);
if extension.IsEmpty then
exit;
if SameText(extension,'.pdf') then Result := 'application/pdf' else
if SameText(extension,'.png') then Result := 'image/png' else
if SameText(extension,'.jpg') then Result := 'image/jpeg' else
if SameText(extension,'.jpeg') then Result := 'image/jpeg' else
if SameText(extension,'.csv') then Result := 'text/csv' else
if SameText(extension,'.xlsx') then Result := 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' else
if SameText(extension,'.ods') then Result := 'application/vnd.oasis.opendocument.spreadsheet' else
if SameText(extension,'.xml') then Result := 'application/xml';
end;
end.