From 9938f1fc49276e6a1f8a698a277223138fb1298e Mon Sep 17 00:00:00 2001 From: Ivan Babkin Date: Fri, 22 Mar 2019 16:33:40 +0300 Subject: [PATCH] Refactoring --- .../Api/ApiUploadRequestParameters.swift | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/Sources/Structures/Api/ApiUploadRequestParameters.swift b/Sources/Structures/Api/ApiUploadRequestParameters.swift index 706eb05a..7f6b3628 100644 --- a/Sources/Structures/Api/ApiUploadRequestParameters.swift +++ b/Sources/Structures/Api/ApiUploadRequestParameters.swift @@ -26,7 +26,7 @@ import MobileCoreServices private enum Constants { static let contentTypeKey = "Content-Type" - static let contentTypeValue = "multipart/form-data" + static let contentTypeValue = "multipart/form-data; " static let boundaryKey = "boundary" } @@ -43,9 +43,19 @@ public struct ApiUploadRequestParameters { let url: URLConvertible let headers: HTTPHeaders + /// ApiUploadRequestParameters initializator (You can get mime type from data using "Swime" pod) + /// + /// - Parameters: + /// - data: data to upload + /// - url: request url + /// - additionalHeaders: request additional headers exсept Content-Type + /// - fileName: file name with extension + /// - name: file name + /// - mimeType: file MIME-type + /// - Throws: UploadParametersError public init(data: Data, url: URLConvertible, - headers: HTTPHeaders?, + additionalHeaders: HTTPHeaders?, fileName: String, name: String? = nil, mimeType: String? = nil) throws { @@ -53,7 +63,7 @@ public struct ApiUploadRequestParameters { let formData = MultipartFormData() self.url = url - self.headers = ApiUploadRequestParameters.configureHTTPHeaders(with: headers ?? HTTPHeaders(), + self.headers = ApiUploadRequestParameters.configureHTTPHeaders(with: additionalHeaders ?? HTTPHeaders(), formData: formData) let name = name ?? (fileName as NSString).deletingPathExtension @@ -79,11 +89,9 @@ private extension ApiUploadRequestParameters { var requestHeaders = headers - requestHeaders[Constants.boundaryKey] = formData.boundary - - if requestHeaders[Constants.contentTypeKey] == nil { - requestHeaders[Constants.contentTypeKey] = Constants.contentTypeValue - } + let boundary = "\(Constants.boundaryKey)=\(formData.boundary)" + + requestHeaders[Constants.contentTypeKey] = Constants.contentTypeValue + boundary return requestHeaders } @@ -93,8 +101,9 @@ private extension ApiUploadRequestParameters { guard let utiType = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension as CFString, - nil)?.takeUnretainedValue(), - let mimeType = UTTypeCopyPreferredTagWithClass(utiType, kUTTagClassMIMEType) as? String else { + nil)?.takeRetainedValue(), + let mimeType = UTTypeCopyPreferredTagWithClass(utiType, + kUTTagClassMIMEType)?.takeRetainedValue() as? String else { assertionFailure("Unable to get mime type from file name") throw UploadParametersError.unableGetMimeType