No Description

PhotoDetailRemoteAPI.swift 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. //
  2. // PhotoDetailRemoteAPI.swift
  3. // PaiaiDataKit
  4. //
  5. // Created by ffib on 2019/3/18.
  6. // Copyright © 2019 yb. All rights reserved.
  7. //
  8. import Foundation
  9. import RxSwift
  10. struct PhotoDetailRemoteAPI {
  11. var photoId: String
  12. var groupId: String
  13. init(photoId: String, groupId: String) {
  14. self.photoId = photoId
  15. self.groupId = groupId
  16. }
  17. private func parseCommtents(_ json: JSON) -> [PhotoCommentItem] {
  18. guard let data = json["data"] as? [String: AnyObject],
  19. let comments = data["comments"] as? [[String: AnyObject]] else { return [] }
  20. return comments.compactMap { PhotoCommentItem(json: $0) }
  21. }
  22. private func parseThumbups(_ json: JSON) -> [PhotoThumbupUserItem] {
  23. guard let data = json["data"] as? [String: AnyObject],
  24. let thumbups = data["thumbups"] as? [[String: AnyObject]] else { return [] }
  25. return thumbups.compactMap { PhotoThumbupUserItem(json: $0) }
  26. }
  27. func loadThumbups() -> Single<[PhotoThumbupUserItem]> {
  28. let resource = ContentResource<[PhotoThumbupUserItem]>(path: .thumbupList,
  29. parameter: ["group_id": groupId,
  30. "photo_id": photoId,
  31. "user_id": ShareUserId],
  32. parseJSON: parseThumbups)
  33. return resource.loadContent()
  34. }
  35. func loadComments() -> Single<[PhotoCommentItem]> {
  36. let resource = ContentResource<[PhotoCommentItem]>(path: .commentList,
  37. parameter: ["group_id": groupId,
  38. "photo_id": photoId,
  39. "user_id": ShareUserId],
  40. parseJSON: parseCommtents)
  41. return resource.loadContent()
  42. }
  43. func submitComment(text: String) -> Single<[PhotoCommentItem]> {
  44. let resource = ContentResource<[PhotoCommentItem]>(path: .commentSubmit,
  45. parameter: ["group_id": groupId,
  46. "photo_id": photoId,
  47. "user_id": ShareUserId,
  48. "comment": text],
  49. parseJSON: parseCommtents)
  50. return resource.loadContent()
  51. }
  52. func submitThumbup() -> Single<[PhotoThumbupUserItem]> {
  53. let resource = ContentResource<[PhotoThumbupUserItem]>(path: .thumbupSubmit,
  54. parameter: ["group_id": groupId,
  55. "photo_id": photoId,
  56. "user_id": ShareUserId],
  57. parseJSON: parseThumbups)
  58. return resource.loadContent()
  59. }
  60. func cancelThumbup() {
  61. let resource = ContentResource<[PhotoCommentItem]>(path: .thumbupCancel,
  62. parameter: ["group_id": groupId,
  63. "photo_id": photoId,
  64. "user_id": ShareUserId],
  65. parseJSON: parseCommtents)
  66. resource.loadContent()
  67. }
  68. }