Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. final class AvatarUploader {
  2.  
  3.  
  4. func upload(imageData: Data ,responseHandler: @escaping (Error?) -> Void) {
  5. let request = createMultipartRequest(imageData: imageData)
  6.  
  7. // return body as Data
  8. print("Fire....")
  9. let session = URLSession.shared
  10. print(request)
  11. let task = session.dataTask(with: request) { (data, response, error) in
  12. print("Complete")
  13. if error != nil {
  14. print("error upload : \(error)")
  15. responseHandler(error)
  16. return
  17. }
  18. do {
  19. if let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any] {
  20. responseHandler(nil)
  21. print("SUCCESS")
  22. } else {
  23. print("Invalid Json")
  24. }
  25. }
  26. catch {
  27. print(error)
  28. responseHandler(error)
  29. }
  30. }
  31. task.resume()
  32. }
  33.  
  34.  
  35. private func createMultipartRequest(imageData: Data) -> URLRequest {
  36. var request = URLRequest(url: URL(string: "https://canon-photos-dev.canon-cpc.gigsternetwork.com/graphql")!)
  37. request.httpMethod = "POST"
  38. let uuid = UUID().uuidString
  39.  
  40. request.setValue("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", forHTTPHeaderField: "Content-Type")
  41. request.setValue("Bearer \(SessionHelper.shared.currentUser.token)", forHTTPHeaderField: "Authorization")
  42.  
  43. var body = Data()
  44.  
  45. body.append("Content-Disposition: form-data; name=\"operations\"\n\n".data(using: .utf8)!)
  46. let mutation =
  47. """
  48. {\"query\":
  49. \"mutation($userId: Int!, $file: PhotoUpload!) { setUserAvatar(userId: $userId, file: $file) { userImage } }\",
  50. \"variables\": {
  51. \"userId\": \(SessionHelper.shared.currentUser.userId),
  52. \"file\": null
  53. }
  54. }\n\n
  55. """
  56. body.append(mutation.data(using: .utf8)!)
  57. body.append("Content-Disposition: form-data; name=\"map\"\n\n".data(using: .utf8)!)
  58. body.append("{\"0\":[\"variables.file\"]}\n\n".data(using: .utf8)!)
  59. body.append("Content-Disposition: form-data; name=\"0\"; filename=\(uuid).jpeg\n\n".data(using: .utf8)!)
  60.  
  61. // body.append(imageData)
  62.  
  63. body.append("------WebKitFormBoundary7MA4YWxkTrZu0gW--)".data(using: .utf8)!)
  64.  
  65. print(String(data: body, encoding: .utf8))
  66.  
  67. request.httpBody = body
  68.  
  69. return request
  70. }
  71.  
  72.  
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement