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