|
//
// MessageRemoteAPI.swift
// PaiaiDataKit
//
// Created by ffib on 2018/12/29.
// Copyright © 2018 yb. All rights reserved.
//
import Foundation
import RxSwift
struct MessageRemoteAPI {
private func parse(_ json: JSON) -> [MessageItem]? {
guard let data = json["data"] as? [String: AnyObject],
let messages = data["messages"] as? [[String: AnyObject]] else { return nil }
return messages.map { MessageItem(json: $0) }
}
private func parseMessageList(_ json: JSON) -> NetworkArrayData<MessageListItem>? {
guard let data = json["data"] as? [String: AnyObject] else { return nil }
return NetworkArrayData<MessageListItem>(json: data, dataField: "messages")
}
func loadContent() -> Single<[MessageItem]> {
let resource = ContentResource<[MessageItem]>(path: .mesList,
parameter: ["user_id": ShareUserId],
parseJSON: parse)
return resource.loadContent()
}
func loadMessageList(_ type: MessageType, page: Int) -> Single<NetworkArrayData<MessageListItem>> {
let resource = ContentResource<NetworkArrayData<MessageListItem>>(path: type.model.path,
parameter: ["user_id": ShareUserId, "page": page, "num": 20],
parseJSON: parseMessageList)
return resource.loadContent()
}
func remove(_ type: MessageType, pk: Int) -> Completable {
let removeResource = StatusResource(path: type.model.removePath,
parameter: ["user_id": ShareUserId, "pk": pk])
return removeResource.getStatus()
}
func removeAll(_ type: MessageType) -> Completable {
let removeResource = StatusResource(path: type.model.removePath,
parameter: ["user_id": ShareUserId, "all": true])
return removeResource.getStatus()
}
func readed(_ type: MessageType) -> Completable {
let readedResource = StatusResource(path: type.model.readPath,
parameter: ["user_id": ShareUserId])
return readedResource.getStatus()
}
}
|