BeeReel/BeeReel/Base/Network/API/BRVideoAPI.swift
2025-07-24 19:21:38 +08:00

165 lines
5.4 KiB
Swift

//
// BRVideoAPI.swift
// BeeReel
//
// Created by 鸿 on 2025/6/30.
//
import UIKit
class BRVideoAPI {
///
static func requestVideoDetail(shortPlayId: String, activityId: String? = nil, revolution: BRShortModel.VideoRevolution? = nil, completer: ((_ model: BRVideoDetailModel?) -> Void)?) {
var parameters: [String : Any] = [
"short_play_id" : shortPlayId,
"video_id" : "0"
]
if let activityId = activityId {
parameters["activity_id"] = activityId
}
if let revolution = revolution?.rawValue {
parameters["revolution"] = revolution
}
var param = BRNetworkParameters(path: "/getVideoDetails")
param.method = .get
param.parameters = parameters
BRNetwork.request(parameters: param) { (response: BRNetworkResponse<BRVideoDetailModel>) in
completer?(response.data)
}
}
///
static func requestFavorite(isFavorite: Bool, shortPlayId: String, videoId: String?, isLoding: Bool = true, success: (() -> Void)?, failure: (() -> Void)? = nil) {
let path: String
if isFavorite {
path = "/collect"
} else {
path = "/cancelCollect"
}
var parameters: [String : Any] = [
"short_play_id" : shortPlayId,
]
if let videoId = videoId {
parameters["video_id"] = videoId
}
var param = BRNetworkParameters(path: path)
param.isLoding = isLoding
param.parameters = parameters
BRNetwork.request(parameters: param) { (response: BRNetworkResponse<String>) in
if response.code == BRNetworkCodeSucceed {
success?()
NotificationCenter.default.post(name: BRVideoAPI.updateShortFavoriteStateNotification, object: nil, userInfo: [
"state" : isFavorite,
"id" : shortPlayId,
])
} else {
failure?()
}
}
}
///
static func requestFavoriteList(page: Int, completer: ((_ listModel: BRListModel<BRShortModel>?) -> Void)?) {
var param = BRNetworkParameters(path: "/myCollections")
param.method = .get
param.parameters = [
"current_page" : page,
"page_size" : 20
]
BRNetwork.request(parameters: param) { (response: BRNetworkResponse<BRListModel<BRShortModel>>) in
completer?(response.data)
}
}
///
static func requestExploreVideo(page: Int, revolution: BRShortModel.VideoRevolution? = nil, completer: ((_ listModel: BRListModel<BRShortModel>?) -> Void)?) {
var parameters: [String : Any] = [
"page_size" : 20,
"current_page" : page
]
if let revolution = revolution?.rawValue {
parameters["revolution"] = revolution
}
var param = BRNetworkParameters(path: "/getRecommands")
param.method = .get
param.parameters = parameters
BRNetwork.request(parameters: param) { (response: BRNetworkResponse<BRListModel<BRShortModel>>) in
completer?(response.data)
}
}
static func requestAddPlayHistory(videoId: String?, shortPlayId: String?) {
guard let shortPlayId = shortPlayId else { return }
var param = BRNetworkParameters(path: "/createHistory")
param.isLoding = false
param.isToast = false
param.parameters = [
"video_id" : videoId ?? "0",
"short_play_id" : shortPlayId
]
BRNetwork.request(parameters: param) { (response: BRNetworkResponse<String>) in
}
}
///
static func requestPlayHistorys(page: Int, pageSize: Int = 20, completer: ((_ listModel: BRListModel<BRShortModel>?) -> Void)?) {
var param = BRNetworkParameters(path: "/myHistorys")
param.method = .get
param.parameters = [
"current_page" : page,
"page_size" : pageSize
]
BRNetwork.request(parameters: param) { (response: BRNetworkResponse<BRListModel<BRShortModel>>) in
completer?(response.data)
}
}
}
extension BRVideoAPI {
/// [ "state" : isFavorite, "id" : shortPlayId,]
@objc static let updateShortFavoriteStateNotification = NSNotification.Name(rawValue: "BRVideoAPI.updateShortFavoriteStateNotification")
static func favoriteOrCancelFavorite(isFavorite: Bool, shortPlayId: String, videoId: String?) {
if isFavorite {
BRVideoAPI.requestFavorite(isFavorite: isFavorite, shortPlayId: shortPlayId, videoId: videoId) {
}
} else {
let alert = BRAlert(title: "kRemoveFavoritesAlertTitle".localized, detail: "kRemoveFavoritesAlertDetail".localized, image: nil, normalButtonText: "Cancel".localized, highlightButtonText: "Remove".localized).show()
alert.highlightButtonImage = UIImage(named: "delete_icon_02")
alert.clickHighlightButton = {
BRVideoAPI.requestFavorite(isFavorite: isFavorite, shortPlayId: shortPlayId, videoId: videoId) {
}
}
}
}
}