85 lines
2.4 KiB
Swift
85 lines
2.4 KiB
Swift
//
|
||
// 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())
|
||
}
|
||
}
|
||
}
|