No Description

MessageRemoteAPI.swift 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //
  2. // MessageRemoteAPI.swift
  3. // PaiaiDataKit
  4. //
  5. // Created by FFIB on 2018/12/29.
  6. // Copyright © 2018 FFIB. All rights reserved.
  7. //
  8. import Foundation
  9. import RxSwift
  10. struct MessageRemoteAPI {
  11. private func parse(_ json: JSON) -> [MessageItem]? {
  12. guard let data = json["data"] as? [String: AnyObject],
  13. let messages = data["messages"] as? [[String: AnyObject]] else { return nil }
  14. return messages.map { MessageItem(json: $0) }
  15. }
  16. private func parseMessageList(_ json: JSON) -> NetworkArrayData<MessageListItem>? {
  17. guard let data = json["data"] as? [String: AnyObject] else { return nil }
  18. return NetworkArrayData<MessageListItem>(json: data, dataField: "messages")
  19. }
  20. func loadContent() -> Single<[MessageItem]> {
  21. let resource = ContentResource<[MessageItem]>(path: .mesList,
  22. parameter: ["user_id": ShareUserId],
  23. parseJSON: parse)
  24. return resource.loadContent()
  25. }
  26. func loadMessageList(_ type: MessageType, page: Int) -> Single<NetworkArrayData<MessageListItem>> {
  27. let resource = ContentResource<NetworkArrayData<MessageListItem>>(path: type.model.path,
  28. parameter: ["user_id": ShareUserId, "page": page, "num": 20],
  29. parseJSON: parseMessageList)
  30. return resource.loadContent()
  31. }
  32. func remove(_ type: MessageType, pk: Int) -> Completable {
  33. let removeResource = StatusResource(path: type.model.removePath,
  34. parameter: ["user_id": ShareUserId, "pk": pk])
  35. return removeResource.getStatus()
  36. }
  37. func removeAll(_ type: MessageType) -> Completable {
  38. let removeResource = StatusResource(path: type.model.removePath,
  39. parameter: ["user_id": ShareUserId, "all": true])
  40. return removeResource.getStatus()
  41. }
  42. func readed(_ type: MessageType) -> Completable {
  43. let readedResource = StatusResource(path: type.model.readPath,
  44. parameter: ["user_id": ShareUserId])
  45. return readedResource.getStatus()
  46. }
  47. }