jsdw_ios/QuickLocation/API/UserAPI.swift

149 lines
4.3 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 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
}
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 .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"
}
}
var method: Moya.Method {
switch self {
case .userInfo:
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 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())
}
}
}