@@ -27,7 +27,9 @@ public extension NextcloudKit {
2727 /// - etag: The entity tag for versioning.
2828 /// - date: The server date of the operation.
2929 /// - size: The total uploaded size in bytes.
30- /// - headers: The response headers.
30+ /// - ownerId: The owner id returned by the server.
31+ /// - permissions: The DAV permissions returned by the server.
32+ /// - response: The raw upload response.
3133 /// - nkError: The result status.
3234 func upload( serverUrlFileName: Any ,
3335 fileNameLocalPath: String ,
@@ -40,7 +42,7 @@ public extension NextcloudKit {
4042 requestHandler: @escaping ( _ request: UploadRequest ) -> Void = { _ in } ,
4143 taskHandler: @escaping ( _ task: URLSessionTask ) -> Void = { _ in } ,
4244 progressHandler: @escaping ( _ progress: Progress ) -> Void = { _ in } ,
43- completionHandler: @escaping ( _ account: String , _ ocId: String ? , _ etag: String ? , _ date: Date ? , _ size: Int64 , _ response: AFDataResponse < Data > ? , _ nkError: NKError ) -> Void ) {
45+ completionHandler: @escaping ( _ account: String , _ ocId: String ? , _ etag: String ? , _ date: Date ? , _ size: Int64 , _ ownerId : String ? , _ permissions : String ? , _ response: AFDataResponse < Data > ? , _ nkError: NKError ) -> Void ) {
4446 var convertible : URLConvertible ?
4547 var uploadedSize : Int64 = 0
4648
@@ -52,7 +54,7 @@ public extension NextcloudKit {
5254 guard let url = convertible,
5355 let nkSession = nkCommonInstance. nksessions. session ( forAccount: account) ,
5456 var headers = nkCommonInstance. getStandardHeaders ( account: account, options: options) else {
55- return options. queue. async { completionHandler ( account, nil , nil , nil , 0 , nil , . urlError) }
57+ return options. queue. async { completionHandler ( account, nil , nil , nil , 0 , nil , nil , nil , . urlError) }
5658 }
5759 let fileNameLocalPathUrl = URL ( fileURLWithPath: fileNameLocalPath)
5860 // Epoch of linux do not permitted negativ value
@@ -80,27 +82,30 @@ public extension NextcloudKit {
8082 uploadedSize = progress. totalUnitCount
8183 options. queue. async { progressHandler ( progress) }
8284 } . responseData ( queue: self . nkCommonInstance. backgroundQueue) { response in
83- var ocId : String ? , etag : String ? , date : Date ?
84-
85- if self . nkCommonInstance. findHeader ( " oc-fileid " , allHeaderFields: response. response? . allHeaderFields) != nil {
86- ocId = self . nkCommonInstance. findHeader ( " oc-fileid " , allHeaderFields: response. response? . allHeaderFields)
87- } else if self . nkCommonInstance. findHeader ( " fileid " , allHeaderFields: response. response? . allHeaderFields) != nil {
88- ocId = self . nkCommonInstance. findHeader ( " fileid " , allHeaderFields: response. response? . allHeaderFields)
85+ var ocId : String ? , etag : String ? , date : Date ? , ownerId : String ? , permissions : String ?
86+ let allHeaderFields = response. response? . allHeaderFields
87+
88+ ownerId = self . nkCommonInstance. findHeader ( " x-nc-ownerid " , allHeaderFields: allHeaderFields)
89+ permissions = self . nkCommonInstance. findHeader ( " x-nc-permissions " , allHeaderFields: allHeaderFields)
90+ if self . nkCommonInstance. findHeader ( " oc-fileid " , allHeaderFields: allHeaderFields) != nil {
91+ ocId = self . nkCommonInstance. findHeader ( " oc-fileid " , allHeaderFields: allHeaderFields)
92+ } else if self . nkCommonInstance. findHeader ( " fileid " , allHeaderFields: allHeaderFields) != nil {
93+ ocId = self . nkCommonInstance. findHeader ( " fileid " , allHeaderFields: allHeaderFields)
8994 }
90- if self . nkCommonInstance. findHeader ( " oc-etag " , allHeaderFields: response . response ? . allHeaderFields) != nil {
91- etag = self . nkCommonInstance. findHeader ( " oc-etag " , allHeaderFields: response . response ? . allHeaderFields)
92- } else if self . nkCommonInstance. findHeader ( " etag " , allHeaderFields: response . response ? . allHeaderFields) != nil {
93- etag = self . nkCommonInstance. findHeader ( " etag " , allHeaderFields: response . response ? . allHeaderFields)
95+ if self . nkCommonInstance. findHeader ( " oc-etag " , allHeaderFields: allHeaderFields) != nil {
96+ etag = self . nkCommonInstance. findHeader ( " oc-etag " , allHeaderFields: allHeaderFields)
97+ } else if self . nkCommonInstance. findHeader ( " etag " , allHeaderFields: allHeaderFields) != nil {
98+ etag = self . nkCommonInstance. findHeader ( " etag " , allHeaderFields: allHeaderFields)
9499 }
95100 if etag != nil {
96101 etag = etag? . replacingOccurrences ( of: " \" " , with: " " )
97102 }
98- if let dateRaw = self . nkCommonInstance. findHeader ( " date " , allHeaderFields: response . response ? . allHeaderFields) {
103+ if let dateRaw = self . nkCommonInstance. findHeader ( " date " , allHeaderFields: allHeaderFields) {
99104 date = dateRaw. parsedDate ( using: " EEE, dd MMM y HH:mm:ss zzz " )
100105 }
101106
102107 options. queue. async {
103- completionHandler ( account, ocId, etag, date, uploadedSize, response, self . evaluateResponse ( response) )
108+ completionHandler ( account, ocId, etag, date, uploadedSize, ownerId , permissions , response, self . evaluateResponse ( response) )
104109 }
105110 }
106111
@@ -119,7 +124,9 @@ public extension NextcloudKit {
119124 /// - etag: The file etag returned by the server.
120125 /// - date: The server timestamp.
121126 /// - size: The size of the uploaded file in bytes.
122- /// - headers: The raw HTTP response headers.
127+ /// - ownerId: The owner id returned by the server.
128+ /// - permissions: The DAV permissions returned by the server.
129+ /// - response: The raw upload response.
123130 /// - error: The NKError result of the upload.
124131 func uploadAsync( serverUrlFileName: Any ,
125132 fileNameLocalPath: String ,
@@ -138,6 +145,8 @@ public extension NextcloudKit {
138145 etag: String ? ,
139146 date: Date ? ,
140147 size: Int64 ,
148+ ownerId: String ? ,
149+ permissions: String ? ,
141150 response: AFDataResponse < Data > ? ,
142151 error: NKError
143152 ) {
@@ -152,13 +161,15 @@ public extension NextcloudKit {
152161 options: options,
153162 requestHandler: requestHandler,
154163 taskHandler: taskHandler,
155- progressHandler: progressHandler) { account, ocId, etag, date, size, response, error in
164+ progressHandler: progressHandler) { account, ocId, etag, date, size, ownerId , permissions , response, error in
156165 continuation. resume ( returning: (
157166 account: account,
158167 ocId: ocId,
159168 etag: etag,
160169 date: date,
161170 size: size,
171+ ownerId: ownerId,
172+ permissions: permissions,
162173 response: response,
163174 error: error
164175 ) )
0 commit comments