@@ -104,29 +104,49 @@ public class LCFile: LCObject {
104104
105105 // MARK: Save
106106
107+ /// Save Options
108+ public struct Options : OptionSet {
109+ public let rawValue : Int
110+
111+ public init ( rawValue: Int ) {
112+ self . rawValue = rawValue
113+ }
114+
115+ /// Using "/\(LCFile.name)" as URL suffix when creating file from payload.
116+ public static let keepFileName = Options ( rawValue: 1 << 0 )
117+ }
118+
107119 /// Save file synchronously.
108- public func save( ) -> LCBooleanResult {
120+ /// - Parameter options: @see `LCFile.Options`, default is none.
121+ public func save( options: LCFile . Options = [ ] ) -> LCBooleanResult {
109122 return expect { fulfill in
110- self . save ( progressOn: . main, progress: nil ) { result in
123+ self . save (
124+ options: options,
125+ progressOn: . main,
126+ progress: nil )
127+ { result in
111128 fulfill ( result)
112129 }
113130 }
114131 }
115132
116133 /// Save file asynchronously.
134+ /// - Parameter options: @see `LCFile.Options`, default is none.
117135 /// - Parameter progressQueue: The queue where the progress be called. default is main.
118136 /// - Parameter progress: The progress of saving.
119137 /// - Parameter completionQueue: The queue where the completion be called. default is main.
120138 /// - Parameter completion: The callback of result.
121139 @discardableResult
122140 public func save(
141+ options: LCFile . Options = [ ] ,
123142 progressQueue: DispatchQueue = . main,
124143 progress: ( ( Double ) -> Void ) ? = nil ,
125144 completionQueue: DispatchQueue = . main,
126145 completion: @escaping ( LCBooleanResult ) -> Void )
127146 -> LCRequest
128147 {
129148 return self . save (
149+ options: options,
130150 progressOn: progressQueue,
131151 progress: progress)
132152 { result in
@@ -154,6 +174,7 @@ public class LCFile: LCObject {
154174
155175 @discardableResult
156176 private func save(
177+ options: LCFile . Options ,
157178 progressOn queue: DispatchQueue ,
158179 progress: ( ( Double ) -> Void ) ? ,
159180 completion: @escaping ( LCBooleanResult ) -> Void )
@@ -168,12 +189,15 @@ public class LCFile: LCObject {
168189 completionHandler: completion)
169190 }
170191 if let payload = self . payload {
171- return FileUploader ( file: self , payload: payload) . upload (
172- progressQueue: queue,
173- progress: progress)
174- { result in
175- self . handleUploadResult ( result, completion: completion)
176- }
192+ return FileUploader (
193+ file: self ,
194+ payload: payload,
195+ options: options) . upload (
196+ progressQueue: queue,
197+ progress: progress,
198+ completion: { result in
199+ self . handleUploadResult ( result, completion: completion)
200+ } )
177201 } else if let remoteURL = self . url {
178202 self . paddingInfo ( remoteURL: remoteURL)
179203 var parameters = dictionary. jsonValue as? [ String : Any ]
0 commit comments