// // PigeonAPI.swift // QuickLocation // import Moya internal import Alamofire enum PigeonAPI { /// 发送飞鸽传书 /// - Parameters: /// - groupKey: 圈子 key /// - toUsers: 收件人加密 id /// - msgType: 2 语音 3 文案 /// - msg: 文案留言,或语音 file id /// - bgImg: 自定义背景图 file id;图片模版不传 /// - expireTime: 过期秒数,0 表示服务端默认 7 天 case send( groupKey: String, toUsers: [String], msgType: Int, msg: String, bgImg: String, expireTime: Int, extra: [String: Any]? ) /// 已发送的传书记录 case sent(groupKey: String) /// 收件箱 case inbox /// 阅后即焚 case burn(messageUUID: String) } extension PigeonAPI: MultiTargetProtocol { var path: String { switch self { case .send: return "mapi/pigeon/send" case .sent: return "mapi/pigeon/sent" case .inbox: return "mapi/pigeon/inbox/messages" case .burn: return "mapi/pigeon/burn" } } var method: Moya.Method { switch self { case .sent, .inbox: return .get case .send, .burn: return .post } } var task: Moya.Task { switch self { case let .send(groupKey, toUsers, msgType, msg, bgImg, expireTime, extra): var params = Parameters() params["group_key"] = groupKey params["to_user"] = toUsers params["msg_type"] = msgType params["msg"] = msg params["bg_img"] = bgImg.isEmpty ? 0 : bgImg params["expire_time"] = expireTime if let extra { params["extra"] = extra } return .requestParameters(parameters: params, encoding: JSONEncoding()) case let .sent(groupKey): var params = Parameters() if !groupKey.isEmpty { params["group_key"] = groupKey } return .requestParameters(parameters: params, encoding: URLEncoding()) case .inbox: return .requestParameters(parameters: Parameters(), encoding: URLEncoding()) case let .burn(messageUUID): return .requestParameters(parameters: ["message_uuid": messageUUID], encoding: JSONEncoding()) } } }