diff --git a/FileProvider.podspec b/FileProvider.podspec
index 58c1e90..36f7695 100644
--- a/FileProvider.podspec
+++ b/FileProvider.podspec
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
#
s.name = "FileProvider"
- s.version = "0.3.2"
+ s.version = "0.3.3"
s.summary = "NSFileManager replacement for Local and Remote (WebDAV/Dropbox/SMB2) files on iOS and MacOS."
# This description is used to generate tags and improve search results.
diff --git a/Sources/DropboxFileProvider.swift b/Sources/DropboxFileProvider.swift
index f31830a..0bd0b10 100644
--- a/Sources/DropboxFileProvider.swift
+++ b/Sources/DropboxFileProvider.swift
@@ -132,7 +132,7 @@ extension DropboxFileProvider: FileProviderOperations {
}
public func createFile(fileAttribs: FileObject, atPath path: String, contents data: NSData?, completionHandler: SimpleCompletionHandler) {
- NotImplemented()
+ self.writeContentsAtPath(path, contents: data ?? NSData(), completionHandler: completionHandler)
}
public func moveItemAtPath(path: String, toPath: String, overwrite: Bool = false, completionHandler: SimpleCompletionHandler) {
@@ -209,21 +209,28 @@ extension DropboxFileProvider: FileProviderOperations {
task.resume()
}
- public func copyPathToLocalFile(path: String, toLocalURL: NSURL, completionHandler: SimpleCompletionHandler) {
- NotImplemented()
- let request = NSMutableURLRequest(URL: absoluteURL(path))
- let task = session.downloadTaskWithRequest(request) { (sourceFileURL, response, error) in
- if let sourceFileURL = sourceFileURL {
- do {
- try NSFileManager.defaultManager().copyItemAtURL(sourceFileURL, toURL: toLocalURL)
- } catch let e {
- completionHandler?(error: e)
- return
- }
+ public func copyPathToLocalFile(path: String, toLocalURL destURL: NSURL, completionHandler: SimpleCompletionHandler) {
+ let url = NSURL(string: "https://api.dropboxapi.com/2/files/download")!
+ let request = NSMutableURLRequest(URL: url)
+ request.HTTPMethod = "GET"
+ request.setValue("Bearer \(credential?.password ?? "")", forHTTPHeaderField: "Authorization")
+ request.setValue("application/json", forHTTPHeaderField: "Content-Type")
+ let requestDictionary = ["path": path]
+ request.setValue(dictionaryToJSON(requestDictionary), forHTTPHeaderField: "Dropbox-API-Arg")
+ let task = session.downloadTaskWithRequest(request, completionHandler: { (cacheURL, response, error) in
+ guard let cacheURL = cacheURL, let httpResponse = response as? NSHTTPURLResponse where httpResponse.statusCode < 300 else {
+ let code = FileProviderDropboxErrorCode(rawValue: (response as? NSHTTPURLResponse)?.statusCode ?? -1)
+ let dbError: FileProviderDropboxError? = code != nil ? FileProviderDropboxError(code: code!, path: path) : nil
+ completionHandler?(error: dbError ?? error)
+ return
}
- completionHandler?(error: error)
- }
- task.taskDescription = self.dictionaryToJSON(["type": "Copy", "source": path, "dest": toLocalURL.uw_absoluteString])
+ do {
+ try NSFileManager.defaultManager().moveItemAtURL(cacheURL, toURL: destURL)
+ completionHandler?(error: nil)
+ } catch let e {
+ completionHandler?(error: e)
+ }
+ })
task.resume()
}
}
@@ -234,7 +241,6 @@ extension DropboxFileProvider: FileProviderReadWrite {
}
public func contentsAtPath(path: String, offset: Int64, length: Int, completionHandler: ((contents: NSData?, error: ErrorType?) -> Void)) {
-
let url = NSURL(string: "https://api.dropboxapi.com/2/files/download")!
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "GET"
diff --git a/Sources/WebDAVFileProvider.swift b/Sources/WebDAVFileProvider.swift
index d8778eb..c8a7a58 100644
--- a/Sources/WebDAVFileProvider.swift
+++ b/Sources/WebDAVFileProvider.swift
@@ -102,7 +102,7 @@ public class WebDAVFileProvider: NSObject, FileProviderBasic {
let url = absoluteURL(path)
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "PROPFIND"
- request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
+ //request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
request.setValue("1", forHTTPHeaderField: "Depth")
request.setValue("text/xml; charset=\"utf-8\"", forHTTPHeaderField: "Content-Type")
request.HTTPBody = "\n\n".dataUsingEncoding(NSUTF8StringEncoding)
@@ -128,7 +128,7 @@ public class WebDAVFileProvider: NSObject, FileProviderBasic {
public func attributesOfItemAtPath(path: String, completionHandler: ((attributes: FileObject?, error: ErrorType?) -> Void)) {
let request = NSMutableURLRequest(URL: absoluteURL(path))
request.HTTPMethod = "PROPFIND"
- request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
+ //request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
request.setValue("1", forHTTPHeaderField: "Depth")
request.setValue("text/xml; charset=\"utf-8\"", forHTTPHeaderField: "Content-Type")
request.HTTPBody = "\n\n".dataUsingEncoding(NSUTF8StringEncoding)
@@ -154,7 +154,7 @@ extension WebDAVFileProvider: FileProviderOperations {
let url = absoluteURL((atPath as NSString).stringByAppendingPathComponent(folderName) + "/")
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "MKCOL"
- request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
+ //request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
let task = session.dataTaskWithRequest(request) { (data, response, error) in
if let response = response as? NSHTTPURLResponse, let code = FileProviderWebDavErrorCode(rawValue: response.statusCode) where code != .OK {
completionHandler?(error: FileProviderWebDavError(code: code, url: url))
@@ -193,7 +193,7 @@ extension WebDAVFileProvider: FileProviderOperations {
} else {
request.HTTPMethod = "COPY"
}
- request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
+ //request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
request.setValue(absoluteURL(path).uw_absoluteString, forHTTPHeaderField: "Destination")
if !overwrite {
request.setValue("F", forHTTPHeaderField: "Overwrite")
@@ -223,7 +223,7 @@ extension WebDAVFileProvider: FileProviderOperations {
let url = absoluteURL(path)
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "DELETE"
- request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
+ //request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
let task = session.dataTaskWithRequest(request) { (data, response, error) in
if let response = response as? NSHTTPURLResponse, let code = FileProviderWebDavErrorCode(rawValue: response.statusCode) {
defer {
@@ -317,7 +317,7 @@ extension WebDAVFileProvider: FileProviderReadWrite {
let url = absoluteURL(path)
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "PROPFIND"
- request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
+ //request.setValue(baseURL?.uw_absoluteString, forHTTPHeaderField: "Host")
//request.setValue("1", forHTTPHeaderField: "Depth")
request.setValue("text/xml; charset=\"utf-8\"", forHTTPHeaderField: "Content-Type")
request.HTTPBody = "\n\n".dataUsingEncoding(NSUTF8StringEncoding)