//
//  MessageListRemoteAPI.swift
//  PaiaiDataKit
//
//  Created by ffib on 2018/12/29.
//  Copyright © 2018 yb. All rights reserved.
//

import Foundation
import RxSwift

struct MessageListRemoteAPI {
    
    var type: MessageType
    
    init(type: MessageType) {
        self.type = type
    }

    private func parse(_ json: JSON) -> NetworkArrayData<MessageListItem>? {
        guard let data  = json["data"] as? [String: AnyObject] else { return nil }
        return NetworkArrayData<MessageListItem>(json: data, dataField: "messages")
    }
    
    func loadContent(page: Int) -> Single<NetworkArrayData<MessageListItem>> {
        let resource = ContentResource<NetworkArrayData<MessageListItem>>(path: type.model.path,
                                                                          parameter: ["user_id": ShareUserId, "page": page],
                                                                          parseJSON: parse)
        return resource.loadContent()
    }
    
    func remove(pk: Int) -> Completable {
        let removeResource = StatusResource(path: type.model.removePath,
                                            parameter: ["user_id": ShareUserId, "pk": pk])
        return removeResource.getStatus()
    }
    
    func removeAll() -> Completable {
         let removeResource = StatusResource(path: type.model.removePath,
                                             parameter: ["user_id": ShareUserId, "all": true])
        return removeResource.getStatus()
    }
    
    func readed() -> Completable {
         let readedResource = StatusResource(path: type.model.readPath,
                                             parameter: ["user_id": ShareUserId])
        return readedResource.getStatus()
    }
}