// // PhotoDetailRemoteAPI.swift // PaiaiDataKit // // Created by ffib on 2019/3/18. // Copyright © 2019 yb. All rights reserved. // import Foundation import RxSwift struct PhotoDetailRemoteAPI { var photoId: String var groupId: String init(photoId: String, groupId: String) { self.photoId = photoId self.groupId = groupId } private func parseCommtents(_ json: JSON) -> [PhotoCommentItem] { guard let data = json["data"] as? [String: AnyObject], let comments = data["comments"] as? [[String: AnyObject]] else { return [] } return comments.compactMap { PhotoCommentItem(json: $0) } } private func parseThumbups(_ json: JSON) -> [PhotoThumbupUserItem] { guard let data = json["data"] as? [String: AnyObject], let thumbups = data["thumbups"] as? [[String: AnyObject]] else { return [] } return thumbups.compactMap { PhotoThumbupUserItem(json: $0) } } func loadThumbups() -> Single<[PhotoThumbupUserItem]> { let resource = ContentResource<[PhotoThumbupUserItem]>(path: .thumbupList, parameter: ["group_id": groupId, "photo_id": photoId, "user_id": ShareUserId], parseJSON: parseThumbups) return resource.loadContent() } func loadComments() -> Single<[PhotoCommentItem]> { let resource = ContentResource<[PhotoCommentItem]>(path: .commentList, parameter: ["group_id": groupId, "photo_id": photoId, "user_id": ShareUserId], parseJSON: parseCommtents) return resource.loadContent() } func submitComment(text: String) -> Single<[PhotoCommentItem]> { let resource = ContentResource<[PhotoCommentItem]>(path: .commentSubmit, parameter: ["group_id": groupId, "photo_id": photoId, "user_id": ShareUserId, "comment": text], parseJSON: parseCommtents) return resource.loadContent() } func submitThumbup() -> Single<[PhotoThumbupUserItem]> { let resource = ContentResource<[PhotoThumbupUserItem]>(path: .thumbupSubmit, parameter: ["group_id": groupId, "photo_id": photoId, "user_id": ShareUserId], parseJSON: parseThumbups) return resource.loadContent() } func cancelThumbup() { let resource = ContentResource<[PhotoCommentItem]>(path: .thumbupCancel, parameter: ["group_id": groupId, "photo_id": photoId, "user_id": ShareUserId], parseJSON: parseCommtents) resource.loadContent() } }