Aucune description

MessageRemoteAPI.swift 2.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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,
  29. "page": page,
  30. "num": 20],
  31. parseJSON: parseMessageList)
  32. return resource.loadContent()
  33. }
  34. func remove(_ type: MessageType, pk: Int) -> Completable {
  35. let removeResource = StatusResource(path: type.model.removePath,
  36. parameter: ["user_id": ShareUserId, "pk": pk])
  37. return removeResource.getStatus()
  38. }
  39. func removeAll(_ type: MessageType) -> Completable {
  40. let removeResource = StatusResource(path: type.model.removePath,
  41. parameter: ["user_id": ShareUserId, "all": true])
  42. return removeResource.getStatus()
  43. }
  44. func readed(_ type: MessageType) -> Completable {
  45. let readedResource = StatusResource(path: type.model.readPath,
  46. parameter: ["user_id": ShareUserId])
  47. return readedResource.getStatus()
  48. }
  49. }