Skip to content

Commit ab7f123

Browse files
authored
Merge pull request #398 from zapcannon87/develop
chore: use file key generated by server
2 parents e1ab748 + 0391af4 commit ab7f123

File tree

1 file changed

+12
-40
lines changed

1 file changed

+12
-40
lines changed

Sources/Foundation/FileUploader.swift

Lines changed: 12 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ class FileUploader {
5858
let token: String
5959

6060
let mimeType: String?
61-
61+
62+
let key: String?
63+
6264
init(plainTokens: LCDictionary) throws {
6365
guard
6466
let providerString = plainTokens["provider"]?.stringValue,
@@ -76,7 +78,7 @@ class FileUploader {
7678
}
7779

7880
let mimeType = plainTokens["mime_type"]?.stringValue
79-
81+
self.key = plainTokens["key"]?.stringValue
8082
self.provider = provider
8183
self.uploadingURLString = uploadingURLString
8284
self.token = token
@@ -94,15 +96,11 @@ class FileUploader {
9496
let payload: LCFile.Payload
9597

9698
/// File name.
97-
let name: String
99+
let name: String?
98100

99101
/// File size.
100102
let size: UInt64
101103

102-
/// The resource key.
103-
/// Strictly speaking, it's not a file attribute.
104-
let resourceKey: String
105-
106104
/// File mime type.
107105
let mimeType: String
108106

@@ -118,13 +116,11 @@ class FileUploader {
118116
init(file: LCFile, payload: LCFile.Payload) throws {
119117
let filename = file.name?.value
120118
let mimeType = file.mimeType?.value
121-
let resourceKey = FileAttributes.getResourceKey(filename: filename)
122119

123120
switch payload {
124121
case .data(let data):
125-
self.name = filename ?? resourceKey
122+
self.name = filename
126123
self.size = UInt64(data.count)
127-
self.resourceKey = FileAttributes.getResourceKey(filename: filename)
128124

129125
if let mimeType = mimeType {
130126
self.mimeType = mimeType
@@ -138,7 +134,6 @@ class FileUploader {
138134

139135
self.name = filename
140136
self.size = try FileAttributes.getFileSize(fileURL: fileURL)
141-
self.resourceKey = FileAttributes.getResourceKey(filename: filename)
142137

143138
// It might be a bit odd that, unlike name, we detect MIME type from fileURL firstly.
144139
if let mimeType = mimeType {
@@ -177,29 +172,6 @@ class FileUploader {
177172
}
178173
}
179174

180-
/**
181-
Generate resource key for file name.
182-
183-
It will generate a new random resource key everytime.
184-
185-
- parameter filename: The file name.
186-
*/
187-
static private func getResourceKey(filename: String?) -> String {
188-
let key = Utility.compactUUID
189-
190-
guard let filename = filename else {
191-
return key
192-
}
193-
194-
let filenameExtension = (filename as NSString).pathExtension
195-
196-
if filenameExtension.isEmpty {
197-
return key
198-
} else {
199-
return "\(key).\(filenameExtension)"
200-
}
201-
}
202-
203175
static private func getMIMEType(filenameExtension: String) -> String? {
204176
if filenameExtension.isEmpty {
205177
return nil
@@ -249,8 +221,9 @@ class FileUploader {
249221

250222
// Add extra file related attributes to parameters.
251223

252-
parameters["key"] = attributes.resourceKey
253-
parameters["name"] = attributes.name
224+
if let name = attributes.name {
225+
parameters["name"] = name
226+
}
254227
parameters["mime_type"] = attributes.mimeType
255228
if self.options.contains(.keepFileName)
256229
|| self.file.keepFileName {
@@ -305,7 +278,6 @@ class FileUploader {
305278
completion: @escaping (LCBooleanResult) -> Void) -> LCRequest
306279
{
307280
let token = tokens.token
308-
let resourceKey = attributes.resourceKey
309281

310282
let payload = self.payload
311283
let mimeType = attributes.mimeType
@@ -315,7 +287,7 @@ class FileUploader {
315287
var resourceKeyData: Data
316288

317289
do {
318-
if let aKeyData = resourceKey.data(using: .utf8) {
290+
if let aKeyData = tokens.key?.data(using: .utf8) {
319291
resourceKeyData = aKeyData
320292
} else {
321293
throw LCError(code: .malformedData, reason: "Invalid resource key.")
@@ -344,7 +316,7 @@ class FileUploader {
344316
case .data(let data):
345317
multipartFormData.append(data, withName: "file", fileName: fileName, mimeType: mimeType)
346318
case .fileURL(let fileURL):
347-
multipartFormData.append(fileURL, withName: "file", fileName: fileName, mimeType: mimeType)
319+
multipartFormData.append(fileURL, withName: "file", fileName: fileName ?? fileURL.lastPathComponent, mimeType: mimeType)
348320
}
349321
}
350322

@@ -393,7 +365,7 @@ class FileUploader {
393365
case .data(let data):
394366
multipartFormData.append(data, withName: "filecontent", fileName: fileName, mimeType: mimeType)
395367
case .fileURL(let fileURL):
396-
multipartFormData.append(fileURL, withName: "filecontent", fileName: fileName, mimeType: mimeType)
368+
multipartFormData.append(fileURL, withName: "filecontent", fileName: fileName ?? fileURL.lastPathComponent, mimeType: mimeType)
397369
}
398370

399371
multipartFormData.append("upload".data(using: .utf8)!, withName: "op")

0 commit comments

Comments
 (0)