jsdw_ios/QuickLocation/API/UserAPI.swift

205 lines
6.1 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// UserAPI.swift
// QuickLocation
//
// Created by on 2026/5/28.
//
import Moya
import SwiftyUserDefaults
internal import Alamofire
/// API
enum UserAPI {
///
/// - Parameters:
/// - type: weixinphoneappleonekeydevicealipay
/// - bind1 2
case login(type: String,
bind: String,
data: [String: Any])
///
case userInfo
/// IM Token
case imToken
///
case signInInfo
///
case changePhone(timestamp: String, phone: String, code: String)
///
case setHeadPic(index: Int)
///
case setNickName(nick: String)
///
/// - Parameters:
/// - sex: 1 2
case setGender(sex: Int)
///
/// - Parameters:
/// - opType: getadd
/// - requestData[String: Any]
case emergencyContact(opType: String, requestData: [String: Any])
///
case deleteAccount
/// 退
case logout
///
/// - Parameters:
/// - target_uid: user_id
/// - group_keykey
/// - emote_idx
case sendEmote(emoteIdx: Int, groupKey: String, targetUid: String)
///
case notice
///
case followList
///
/// - Parameters:
/// - enable:
/// - keep_time
case bubble(enable: Bool, keep_time: Int)
}
extension UserAPI: MultiTargetProtocol {
var path: String {
switch self {
case .login:
return "api/user/login"
case .userInfo:
return "api/user"
case .imToken:
return "mapi/openim/user/token/get"
case .signInInfo:
return "mapi/user/signin"
case .changePhone:
return "api/user"
case .setHeadPic:
return "mapi/user/setheadpic"
case .setNickName:
return "mapi/user/setnick"
case .setGender:
return "api/user"
case .emergencyContact:
return "mapi/user/emergencycontact"
case .deleteAccount:
return "mapi/user/account"
case .logout:
return "api/user/logout"
case .sendEmote:
return "mapi/user/sendemote"
case .notice:
return "api/user/notice"
case .followList:
return "mapi/user/followed"
case .bubble:
return "mapi/bubble/operate"
}
}
var method: Moya.Method {
switch self {
case .userInfo, .signInInfo, .notice, .followList:
return .get
case .changePhone, .setGender:
return .put
case .deleteAccount:
return .delete
default:
return .post
}
}
var task: Moya.Task {
switch self {
case let .login(type, bind, data):
var params = Parameters()
params["type"] = type
params["bind"] = bind
params["data"] = data
return .requestParameters(parameters: params, encoding: JSONEncoding())
case .userInfo:
return .requestParameters(parameters: Parameters(), encoding: URLEncoding())
case .imToken:
var params = Parameters()
params["platform_id"] = 1
params["force"] = true
return .requestParameters(parameters: params, encoding: JSONEncoding())
case .signInInfo:
return .requestParameters(parameters: Parameters(), encoding: URLEncoding())
case let .changePhone(timestamp, phone, code):
var params = Parameters()
params["phone_timestamp"] = timestamp
params["phone"] = phone
params["phone_code"] = code
return .requestParameters(parameters: params, encoding: JSONEncoding())
case let .setHeadPic(index):
var params = Parameters()
params["head_pic_index"] = index
return .requestParameters(parameters: params, encoding: JSONEncoding())
case let .setNickName(nick):
var params = Parameters()
params["nick"] = nick
return .requestParameters(parameters: params, encoding: JSONEncoding())
case let .setGender(sex):
var params = Parameters()
params["sex"] = sex
return .requestParameters(parameters: params, encoding: JSONEncoding())
case let .emergencyContact(opType, requestData):
var params = Parameters()
params["op_type"] = opType
params.merge(requestData) { _, new in new }
return .requestParameters(parameters: params, encoding: JSONEncoding())
case .deleteAccount:
return .requestParameters(parameters: Parameters(), encoding: URLEncoding())
case .logout:
return .requestParameters(parameters: Parameters(), encoding: JSONEncoding())
case let .sendEmote(emoteIdx, groupKey, targetUid):
var params = Parameters()
params["emote_idx"] = emoteIdx
params["group_key"] = groupKey
params["target_uid"] = targetUid
return .requestParameters(parameters: params, encoding: JSONEncoding())
case .notice:
return .requestParameters(parameters: Parameters(), encoding: URLEncoding())
case .followList:
return .requestParameters(parameters: Parameters(), encoding: URLEncoding())
case let .bubble(enable, keep_time):
var params = Parameters()
params["enable"] = enable
if keep_time != -1 {
params["keep_time"] = keep_time
}
return .requestParameters(parameters: params, encoding: JSONEncoding())
}
}
}