暂无描述

GroupRemoteAPI.swift 2.7KB

    // // GroupRemoteAPI.swift // PaiaiDataKit // // Created by ffib on 2018/12/29. // Copyright © 2018 yb. All rights reserved. // import Foundation import RxSwift public enum QRType { case group case session } struct GroupRemoteAPI { private func parse(_ json: JSON) -> NetworkArrayData<GroupItem>? { guard let data = json["data"] as? [String: AnyObject] else { return nil } return NetworkArrayData(json: data, dataField: "groups") } private func parseGroup(_ json: JSON) -> GroupItem? { guard let data = json["data"] as? [String: AnyObject], let groupInfo = data["group"] as? [String: AnyObject] else { return nil } return GroupItem(value: groupInfo) } func loadContent(page: Int) -> Single<NetworkArrayData<GroupItem>> { let resource = ContentResource<NetworkArrayData<GroupItem>>(path: .groupList, parameter: ["user_id": ShareUserId, "page": page, "num": 20], parseJSON: parse) return resource.loadContent() } func create(groupName: String, avatar: String) -> Single<GroupItem> { let createResource = ContentResource<GroupItem>(path: .groupCreate, parameter: ["user_id": ShareUserId, "group_name": groupName, "group_default_avatar": avatar], parseJSON: parseGroup) return createResource.loadContent() } func join(type: QRType, parameter: Parameter) -> Single<GroupItem> { var joinResource: ContentResource<GroupItem> switch type { case .group: joinResource = ContentResource<GroupItem>(path: .joinGroup, parameter: parameter + ["user_id": ShareUserId], parseJSON: parseGroup) case .session: joinResource = ContentResource<GroupItem>(path: .joinSession, parameter: parameter + ["user_id": ShareUserId], parseJSON: parseGroup) } return joinResource.loadContent() } func remove(groupId: String) -> Completable { let removeResource = StatusResource(path: .groupDelete, parameter: ["user_id": ShareUserId, "group_id": groupId]) return removeResource.getStatus() } }