MoviaBox/Thimra/Base/Networking/API/SPVideoAPI.swift
2025-04-24 11:14:21 +08:00

138 lines
4.5 KiB
Swift

//
// SPVideoAPI.swift
// Thimra
//
// Created by on 2025/4/10.
//
import UIKit
class SPVideoAPI: NSObject {
///
static func requestVideoDetail(videoId: String?, shortPlayId: String, completer: ((_ model: SPVideoDetailModel?) -> Void)?) {
var parameters: [String : Any] = [
"short_play_id" : shortPlayId
]
if let videoId = videoId {
parameters["video_id"] = videoId
}
var param = SPNetworkParameters(path: "/getVideoDetails")
param.method = .get
param.parameters = parameters
SPNetwork.request(parameters: param) { (response: SPNetworkResponse<SPVideoDetailModel>) in
completer?(response.data)
}
}
///
static func requestRequestVideoPlayHistory(videoId: String, shortPlayId: String) {
var param = SPNetworkParameters(path: "/createHistory")
param.isLoding = false
param.isToast = false
param.parameters = [
"video_id" : videoId,
"short_play_id" : shortPlayId
]
SPNetwork.request(parameters: param) { (response: SPNetworkResponse<String>) in
}
}
///
static func requestCollectShort(isCollect: Bool, shortPlayId: String, videoId: String?, success: (() -> Void)?, failure: (() -> Void)? = nil) {
let path: String
if isCollect {
path = "/collect"
} else {
path = "/cancelCollect"
}
var parameters: [String : Any] = [
"short_play_id" : shortPlayId,
]
if let videoId = videoId {
parameters["video_id"] = videoId
}
var param = SPNetworkParameters(path: path)
param.isLoding = true
param.parameters = parameters
SPNetwork.request(parameters: param) { (response: SPNetworkResponse<String>) in
if response.code == SPNetworkCodeSucceed {
success?()
NotificationCenter.default.post(name: SPVideoAPI.updateShortCollectStateNotification, object: nil, userInfo: [
"state" : isCollect,
"id" : shortPlayId,
])
} else {
failure?()
}
}
}
///
static func requestCollectList(page: Int, completer: ((_ listModel: SPListModel<SPShortModel>?) -> Void)?) {
var param = SPNetworkParameters(path: "/myCollections")
param.method = .get
param.parameters = [
"current_page" : page,
"page_size" : 20
]
SPNetwork.request(parameters: param) { (response: SPNetworkResponse<SPListModel<SPShortModel>>) in
completer?(response.data)
}
}
///
static func requestPlayHistoryList(page: Int, pageSize: Int = 20, completer: ((_ listModel: SPListModel<SPShortModel>?) -> Void)?) {
var param = SPNetworkParameters(path: "/myHistorys")
param.method = .get
param.parameters = [
"current_page" : page,
"page_size" : pageSize
]
SPNetwork.request(parameters: param) { (response: SPNetworkResponse<SPListModel<SPShortModel>>) in
completer?(response.data)
}
}
///
static func requestShortCategoryList(completer: ((_ list: [SPCategoryModel]?) -> Void)?) {
var param = SPNetworkParameters(path: "/getCategories")
param.method = .get
SPNetwork.request(parameters: param) { (response: SPNetworkResponse<SPListModel<SPCategoryModel>>) in
completer?(response.data?.list)
}
}
///
static func requestCategoryShortList(page: Int, id: String, completer: ((_ listModel: SPListModel<SPShortModel>?) -> Void)?) {
var param = SPNetworkParameters(path: "/videoList")
param.method = .get
param.parameters = [
"category_id" : id,
"current_page" : page,
"page_size" : 20
]
SPNetwork.request(parameters: param) { (response: SPNetworkResponse<SPListModel<SPShortModel>>) in
completer?(response.data)
}
}
}
extension SPVideoAPI {
/// [ "state" : isCollect, "id" : shortPlayId,]
@objc static let updateShortCollectStateNotification = NSNotification.Name(rawValue: "SPVideoAPI.updateShortCollectStateNotification")
}