123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- 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()
- }
- }
|