No Description

GroupPhotoRemoteAPI.swift 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. //
  2. // GroupPhotoRemoteAPI.swift
  3. // PaiaiDataKit
  4. //
  5. // Created by ffib on 2019/1/2.
  6. // Copyright © 2019 yb. All rights reserved.
  7. //
  8. import Foundation
  9. import RxSwift
  10. struct GroupPhotoRemoteAPI {
  11. private var groupId: String
  12. init(groupId: String) {
  13. self.groupId = groupId
  14. }
  15. private func parse(_ json: JSON) -> [PhotoItem]? {
  16. guard let data = json["data"] as? [String: AnyObject],
  17. let photos = data["photos"] as? [[String: AnyObject]] else { return nil }
  18. let dataArr = photos.compactMap { $0["photos"] as? [[String: AnyObject]] }.flatMap { $0 }
  19. return dataArr.map { PhotoItem(json: $0) }
  20. }
  21. func loadContent() -> Single<[PhotoItem]> {
  22. let resource = ContentResource<[PhotoItem]>(path: .groupPhotoList,
  23. parameter: ["user_id": ShareUserId,
  24. "group_id": groupId,
  25. "current_id": -1],
  26. parseJSON: parse)
  27. return resource.loadContent()
  28. }
  29. func uploadPhoto(data: Data) -> Single<[PhotoItem]> {
  30. // let name = groupId + "" + "\(Date.timeIntervalSinceReferenceDate)"
  31. let file = FileModel(name: "photo", fileData: data)
  32. let uploadResource = UploadResource<[PhotoItem]>(path: .photoUpload,
  33. parameter: ["user_id": ShareUserId,
  34. "group_id": groupId,
  35. "current_id": -1,
  36. "photo": file],
  37. parseJSON: parse)
  38. return uploadResource.upload()
  39. }
  40. }