|
9 | 9 | import Foundation |
10 | 10 |
|
11 | 11 | // Basic media MIME types, add more if needed. |
12 | | -public enum MimeType: String { |
13 | | - case jpeg = "image/jpeg" |
14 | | - case bmp = "image/bmp" |
15 | | - case png = "image/png" |
| 12 | +public enum MimeType { |
| 13 | + case jpeg |
| 14 | + case bmp |
| 15 | + case png |
| 16 | + case mov |
| 17 | + case mpeg |
| 18 | + case avi |
| 19 | + case json |
| 20 | + case custom(contentType: String, extension: String) |
16 | 21 |
|
17 | | - case mov = "video/quicktime" |
18 | | - case mpeg = "video/mpeg" |
19 | | - case avi = "video/avi" |
20 | | - case json = "application/json" |
21 | | - |
22 | | - case usd, usdz = "application/octet-stream" |
| 22 | + public var contentType: String { |
| 23 | + switch self { |
| 24 | + case .jpeg: |
| 25 | + return "image/jpeg" |
| 26 | + case .bmp: |
| 27 | + return "image/bmp" |
| 28 | + case .png: |
| 29 | + return "image/png" |
| 30 | + case .mov: |
| 31 | + return "video/quicktime" |
| 32 | + case .mpeg: |
| 33 | + return "video/mpeg" |
| 34 | + case .avi: |
| 35 | + return "video/avi" |
| 36 | + case .json: |
| 37 | + return "application/json" |
| 38 | + case .custom(let contentType, _): |
| 39 | + return contentType |
| 40 | + } |
| 41 | + } |
23 | 42 |
|
24 | | - func fileExtension() -> String { |
| 43 | + public var fileExtension: String { |
25 | 44 | switch self { |
26 | | - case .bmp: return ".bmp" |
27 | | - case .png: return ".png" |
28 | | - case .mov: return ".mov" |
29 | | - case .mpeg: return ".mpeg" |
30 | | - case .avi: return ".avi" |
31 | | - case .json: return ".json" |
32 | | - case .usd: return ".usd" |
33 | | - case .usdz: return ".usdz" |
34 | | - default: return ".jpg" |
| 45 | + case .jpeg: |
| 46 | + return ".jpg" |
| 47 | + case .bmp: |
| 48 | + return ".bmp" |
| 49 | + case .png: |
| 50 | + return ".png" |
| 51 | + case .mov: |
| 52 | + return ".mov" |
| 53 | + case .mpeg: |
| 54 | + return ".mpeg" |
| 55 | + case .avi: |
| 56 | + return ".avi" |
| 57 | + case .json: |
| 58 | + return ".json" |
| 59 | + case .custom( _, let fileExtension): |
| 60 | + return fileExtension |
35 | 61 | } |
36 | 62 | } |
37 | 63 | } |
38 | 64 |
|
39 | 65 | public class MultipartMedia { |
40 | | - public var key: String |
| 66 | + public var key: String // key name to send file |
| 67 | + public var fileName: String // file name |
41 | 68 | public var data: Data |
42 | 69 | public var type: MimeType |
43 | 70 |
|
44 | 71 | public var toFile: String { |
45 | | - key.validFilename + type.fileExtension() |
| 72 | + fileName.validFilename + type.fileExtension |
46 | 73 | } |
47 | 74 |
|
48 | | - public init(key: String, data: Data, type: MimeType = .jpeg) { |
| 75 | + public init(fileName: String, key: String, data: Data, type: MimeType = .jpeg) { |
49 | 76 | self.key = key |
50 | 77 | self.data = data |
51 | 78 | self.type = type |
| 79 | + self.fileName = fileName |
52 | 80 | } |
53 | 81 | } |
0 commit comments