NCCommunication.swift 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //
  2. // NCCommunication.swift
  3. // Nextcloud
  4. //
  5. // Created by Marino Faggiana on 03/10/2019.
  6. // Copyright © 2019 TWS. All rights reserved.
  7. //
  8. import Foundation
  9. import Alamofire
  10. class NCCommunication: NSObject {
  11. @objc static let sharedInstance: NCCommunication = {
  12. let instance = NCCommunication()
  13. return instance
  14. }()
  15. let NCResource =
  16. """
  17. <d:displayname/>
  18. <d:getcontenttype/>
  19. <d:resourcetype/>
  20. <d:getcontentlength/>
  21. <d:getlastmodified/>
  22. <d:creationdate/>
  23. <d:getetag/>
  24. <d:quota-used-bytes/>
  25. <d:quota-available-bytes/>
  26. <permissions xmlns=\"http://owncloud.org/ns\"/>
  27. <id xmlns=\"http://owncloud.org/ns\"/>
  28. <fileid xmlns=\"http://owncloud.org/ns\"/>
  29. <size xmlns=\"http://owncloud.org/ns\"/>
  30. <favorite xmlns=\"http://owncloud.org/ns\"/>
  31. <is-encrypted xmlns=\"http://nextcloud.org/ns\"/>
  32. <mount-type xmlns=\"http://nextcloud.org/ns\"/>
  33. <owner-id xmlns=\"http://owncloud.org/ns\"/>
  34. <owner-display-name xmlns=\"http://owncloud.org/ns\"/>
  35. <comments-unread xmlns=\"http://owncloud.org/ns\"/>
  36. <has-preview xmlns=\"http://nextcloud.org/ns\"/>
  37. <trashbin-filename xmlns=\"http://nextcloud.org/ns\"/>
  38. <trashbin-original-location xmlns=\"http://nextcloud.org/ns\"/>
  39. <trashbin-deletion-time xmlns=\"http://nextcloud.org/ns\"/>"
  40. """
  41. @objc func readFolder(path: String, user: String, password: String) {
  42. // URL
  43. var url: URLConvertible
  44. do {
  45. try url = path.asURL()
  46. } catch _ {
  47. return
  48. }
  49. // Headers
  50. var headers: HTTPHeaders = [.authorization(username: user, password: password)]
  51. headers.update(.userAgent(CCUtility.getUserAgent()))
  52. headers.update(.contentType("application/xml"))
  53. headers.update(name: "Depth", value: "1")
  54. // Parameters
  55. //let parameters: Parameters = ["":"<?xml version=\"1.0\" encoding=\"UTF-8\"?><d:propfind xmlns:d=\"DAV:\" xmlns:oc=\"http://owncloud.org/ns\" xmlns:nc=\"http://nextcloud.org/ns\"><d:prop>" + NCResource + "</d:prop></d:propfind>"]
  56. // Method
  57. let method = HTTPMethod(rawValue: "PROPFIND")
  58. AF.request(url, method: method, parameters:[:], encoding: URLEncoding.httpBody, headers: headers, interceptor: nil).validate(statusCode: 200..<300).responseData { (response) in
  59. switch response.result {
  60. case.failure(let error):
  61. print("Board creation failed with error: \(error.localizedDescription)")
  62. case .success( _):
  63. if let data = response.data {
  64. print("JSON: \(data)")
  65. }
  66. print("success")
  67. }
  68. }
  69. }
  70. }