Visual_Novel_iOS/crush/Crush/Src/API/DiscoverApi.swift

235 lines
14 KiB
Swift
Raw Normal View History

2025-10-09 10:29:35 +00:00
//
// DiscoverApi.swift
// Crush
//
// Created by Leon on 2025/9/10.
//
import Moya
let DiscoverProvider = APIConfig.useMock && DiscoverAPI.useMock
? MoyaProvider<DiscoverAPI>(endpointClosure: myEndpointClosure, stubClosure: { target in
let data = target.sampleData
if data.count > 0 {
return .delayed(seconds: 0.7)
} else {
return .never
}
})
: MoyaProvider<DiscoverAPI>(requestClosure: myRequestClosure)
enum DiscoverAPI {
static let useMock: Bool = true
case discoverInfo
case rankChatList
case rankHeartbeatList
case rankGiftList
///
case dailyCheck
/// 7
case days7CheckList
///
case homeRolesList(params: [String:Any])
///
case homeRecommentCardList(params: [String:Any])
///
case meetLikeOrReport(params: [String:Any])
case meetReportBind(aiId:Int)
/// meetID
case meetRcAndRetrunBlurAlbum
/// , return img1,img2,im3
case meetUnlockLikeYou(aiId: Int, albumId: Int)
/// AI(Meet)
case meetCardDetail(aiId: Int)
}
extension DiscoverAPI: TargetType {
var baseURL: URL {
return URL(string: APIConfig.frog)!
}
var path: String {
switch self {
case .discoverInfo:
return "/web/explore/info"
case .rankChatList:
return "/web/rank/chat"
case .rankHeartbeatList:
return "/web/rank/heartbeat"
case .rankGiftList:
return "/web/rank/gift"
case .dailyCheck:
return "/web/si/asi"
case .days7CheckList:
return "/web/si/list"
case .homeRolesList:
return "/web/home/classification-list"
case .homeRecommentCardList:
return "/web/home/rm-list"
case .meetLikeOrReport:
return "/web/meet/sd"
case .meetReportBind:
return "/web/meet/bd"
case .meetRcAndRetrunBlurAlbum:
return "/web/meet/rc"
case .meetUnlockLikeYou:
return "/web/ai/unlock-like-you"
case .meetCardDetail:
return "/web/home/meet-detail"
}
}
var method: Moya.Method {
return .post
}
var task: Task {
var mParams = [String: Any]()
switch self {
case .discoverInfo:
break
case .rankChatList:
break
case .rankHeartbeatList:
break
case .rankGiftList:
break
case .dailyCheck:
break
case .days7CheckList:
break
case .homeRolesList(let params):
mParams = params
case .homeRecommentCardList(let params):
mParams = params
case .meetLikeOrReport(let params):
mParams = params
case .meetReportBind(let aiId):
mParams.updateValue(aiId, forKey: "aiId")
case .meetRcAndRetrunBlurAlbum:
break
case .meetUnlockLikeYou(let aiId, let albumId):
mParams.updateValue(aiId, forKey: "aiId")
mParams.updateValue(albumId, forKey: "albumId")
case .meetCardDetail(let aiId):
mParams.updateValue(aiId, forKey: "aiId")
}
mParams.updateValue("IOS", forKey: "appClient")
mParams.updateValue(UIDevice.UUID, forKey: "deviceCode")
return .requestParameters(parameters: mParams, encoding: JSONEncoding.default)
}
var headers: [String: String]? {
return APIConfig.apiHeaders()
}
var sampleData: Data {
switch self {
case .discoverInfo:
return Data()
// case .meetLikeOrReport:
// let content = """
// {
// "bd": false,
// "rc": true
// }
// """
// return .okContent(string: content)
// case .meetReportBind:
// let content = """
// {
// "sex": 0,
// "introduction": "Luna2.0200011广广 ",
// "characterName": "",
// "likedCount": 10,
// "aiId": 441103465906177,
// "userId": 437259889475585,
// "birthday": 946684800000,
// "roleName": "",
// "tagName": "",
// "homeImageUrl": "https://hhb.crushlevel.ai/dev/role/1756635291381298.jpg",
// "liked": true,
// "headImg": "https://hhb.crushlevel.ai/dev/role/1756635291381298.jpg",
// "nickname": "Luna2"
// }
// """
// return .okContent(string: content)
// case .meetRcAndRetrunBlurAlbum:
// let content = """
// {
// "aiId": 436963222421505,
// "albumId": 31,
// "height": "512",
// "img1": "https://sub.crushlevel.ai/files/b/test/436961863467009/f9d54026feb9417f8bdf03cb62fb39dd.jpg?x-oss-process=image/resize,w_468,h_600&Tag=1&v=1&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9zdWIuY3J1c2hsZXZlbC5haS9maWxlcy9iL3Rlc3QvNDM2OTYxODYzNDY3MDA5L2Y5ZDU0MDI2ZmViOTQxN2Y4YmRmMDNjYjYyZmIzOWRkLmpwZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSx3XzQ2OCxoXzYwMCZUYWc9MSZ2PTEiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjIxMTQyMjcyMDB9fX1dfQ__&Signature=rAIldTcRnB5Qa5F8ghRjm7Nc~xC0OFVf8jzsrBDuzeSllLLepHhBNadF9Nlcy0iCKXPFOyUDqLkodvl8wUeEnFX7LUuNeaQ2rC5UqxA3zZ4ReZunLDYBdth3oSmLOWcg4~0aauHXrVYvYOM~98SpQ8qYJgn6y8aCODXEn-mN59WTV0xPJIB4hcxR6~0pNxrSMYctewNLjBCMdMK80Sv506DV8ff2v7G8MMIUHN6~OLwihMS9pi5oDIgtIMj352~wJyJcF~TOK6gQBu8LRMOtXn8W0YQ9IOZ5pTxkNzh4P9ZJMWol4g~7ICctyGidpaN1Lw2QWj4CKn1p9yREgId8GQ__&Key-Pair-Id=K35ZQ246Y37QV8",
// "img2": "https://sub.crushlevel.ai/files/b/test/436961863467009/f9d54026feb9417f8bdf03cb62fb39dd.jpg?x-oss-process=image/resize,w_800,h_800&Tag=1&v=1&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9zdWIuY3J1c2hsZXZlbC5haS9maWxlcy9iL3Rlc3QvNDM2OTYxODYzNDY3MDA5L2Y5ZDU0MDI2ZmViOTQxN2Y4YmRmMDNjYjYyZmIzOWRkLmpwZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSx3XzgwMCxoXzgwMCZUYWc9MSZ2PTEiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjIxMTQyMjcyMDB9fX1dfQ__&Signature=ljYMLAZCwGy1Lsj6a3SUSqSNa5fB2jk-23vrpoDdOLnM12aP3ya0EYmn3APm-lyTtdsFf9~ykWlvo-5u3hyzP0U0Is8YjbAo-LSDdlbcBZVUJU8UzeHpClB~tncw4HjJp8xapMdibQQVHAEIQpG3dkm3~PvXncL3uyDm4tOCve2LuKZA6fWIEYA-B4nC072yw3Nf3I7DEKzyNCPDhZKjnR4Oij~LrRj3U9n6G3E46DQIMXw5SlrFTFxxbzzSZvwBLvWhj9HFHieGDaUsan9X247llamqV0r~nqCpjZWZt89idv1qwW9EwbTt17ZM~8t472W43TRsOae6SkU2Ovq7Sg__&Key-Pair-Id=K35ZQ246Y37QV8",
// "img3": "https://sub.crushlevel.ai/files/b/test/436961863467009/f9d54026feb9417f8bdf03cb62fb39dd.jpg?Tag=1&v=1&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9zdWIuY3J1c2hsZXZlbC5haS9maWxlcy9iL3Rlc3QvNDM2OTYxODYzNDY3MDA5L2Y5ZDU0MDI2ZmViOTQxN2Y4YmRmMDNjYjYyZmIzOWRkLmpwZz9UYWc9MSZ2PTEiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjIxMTQyMjcyMDB9fX1dfQ__&Signature=jHwBw0crygZp~bM6RzQH7lx01dR1oKsAhd0TYqRYI5xqNWZAEeotNEHt-UmtsRRLiykoKlbPXWriZ5bO7qiG9nqNWOAKsKQOpXk3xbxY8Mh6SWoAAMonSHQg10gEJh~vtsS6FwPXCw595tz567pPqKLSRNK0gcMNovY1o25F1pPQnnwbyDkFkt0hryqgS7SWo9Xg18SKPe-gsL746B4VDaV7CgGwE4skzUk3wkLfnAMLlTQL0dYGYUa0QKbLK-uZkC~vnX33DWz5y4dHpuLjlz3hJ0yXOMFMP3cUXZFSnIKgWeClNSFR-Vc69OFQBndeefITODP4GeSaL4gPEnuHvQ__&Key-Pair-Id=K35ZQ246Y37QV8",
// "imgUrl": "",
// "likedCount": 1,
// "lockStatus": "LOCK",
// "unlockPrice": 1,
// "width": "512"
// }
// """
// return .okContent(string: content)
// case .meetCardDetail:
// let content = """
// {
// "age": 25,
// "introduction": "\n\n200011-姿",
// "sex": 2,
// "likedCount": 23,
// "aiId": 437304385077249,
// "imageUrl": "https://hhb.crushlevel.ai/dev/role/1754823734119375.jpg",
// "tag": "",
// "role": "",
// "albumList": [
// {
// "img1": "https://sub.crushlevel.ai/files/b/test/437301824126977/a44a827f31844729977754312bca8895.jpg?x-oss-process=image/resize,w_468,h_600&Tag=1&v=1&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9zdWIuY3J1c2hsZXZlbC5haS9maWxlcy9iL3Rlc3QvNDM3MzAxODI0MTI2OTc3L2E0NGE4MjdmMzE4NDQ3Mjk5Nzc3NTQzMTJiY2E4ODk1LmpwZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSx3XzQ2OCxoXzYwMCZUYWc9MSZ2PTEiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjIxMTQyMjcyMDB9fX1dfQ__&Signature=AQKNivKVX-1Ezl0m6jlctK8rGTmEoi4GmKKwNsbeywxFoXsVkN~Jb6zvsP92~MOO2FwUZqO-ua~i5BVwE81nhcNZGrVFV1M3IPfcS7qUxsNoWZtBZmHyCwlJ7iGrmfU9pAOiulhkIEY6vhuljpiXA7JF~px58H0EYOcklnlqtmJ45UU7aNFM-rJVzgZ8y~K80LecSapfBFtzRFKyaVNdERfdiw5hCFA6QhBjXyiT76yF14J-4KROLZTnIF-7wxI5b5ewMj7LVmV7E5LjvvpfMorUSym8KfuezOL~DfmCLsiee8j7Cp7I6b1wTxgzMHTFJh9iqmh6yy~Trvc8nAKGkw__&Key-Pair-Id=K35ZQ246Y37QV8",
// "likedStatus": "CANCELED",
// "imgUrl": null,
// "lockStatus": "LOCK",
// "likedCount": 1,
// "isDefault": false,
// "aiId": 437304385077249,
// "width": "512",
// "img3": "https://sub.crushlevel.ai/files/b/test/437301824126977/a44a827f31844729977754312bca8895.jpg?Tag=1&v=1&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9zdWIuY3J1c2hsZXZlbC5haS9maWxlcy9iL3Rlc3QvNDM3MzAxODI0MTI2OTc3L2E0NGE4MjdmMzE4NDQ3Mjk5Nzc3NTQzMTJiY2E4ODk1LmpwZz9UYWc9MSZ2PTEiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjIxMTQyMjcyMDB9fX1dfQ__&Signature=W23SRRUzr4Iwnh4rFXRl7O-VyhIytjwVYk8YC~5pBsKgJbi~Rhe2zxbiCCilPkk1RX0Iw~0~1S2rOMUAFEjx6frNQ93Vecq116qAGPpO39QQAPnAaCHnBF-tN9NEgHkbMIfltD-VMPchHM1df7iq0S0gztYkeF7QOcIt4ehCZwLAxguLNKAos1I6yx1MsyHyruofthf5ryRCFId7SyHdNVX7KPzJsfplyV6uwlPFc2fIhbb9LKlz74Wlt6qtnKk8ghVLKkRISLn2xViXijYfA0uAE-hiFwo9y2dd4Q~DYVqqhsV-XZyrAqRtr15hsfavs2zh5moJxEhI5eyxZuZkEQ__&Key-Pair-Id=K35ZQ246Y37QV8",
// "unlockPrice": 123,
// "height": "512",
// "albumId": 70,
// "img2": "https://sub.crushlevel.ai/files/b/test/437301824126977/a44a827f31844729977754312bca8895.jpg?x-oss-process=image/resize,w_800,h_800&Tag=1&v=1&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9zdWIuY3J1c2hsZXZlbC5haS9maWxlcy9iL3Rlc3QvNDM3MzAxODI0MTI2OTc3L2E0NGE4MjdmMzE4NDQ3Mjk5Nzc3NTQzMTJiY2E4ODk1LmpwZz94LW9zcy1wcm9jZXNzPWltYWdlL3Jlc2l6ZSx3XzgwMCxoXzgwMCZUYWc9MSZ2PTEiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjIxMTQyMjcyMDB9fX1dfQ__&Signature=UW9ylJXvmVSdtVmRNhe3kMu9drclxAKKPuYbqg3r4novijWk08nXuWUfImcSUmmXkUOh-JFPjC5usCiaZM1-RlJoQktZbjwsN8YS7CK2RXUwrqX4nLuv-BaHUhhbUQIhFVPkzo0ZxcxEqd6aSU9E9cleJnmZA69Ojn6cZQhthdL0x-2facVsxTdMnoJ~3x2p4YvSPzpabfzSCrSYPhHC4EWM~IgRgRlpCn6bm5Z94CkBYlYtvt3oz9WglDDw7PaSFErBTdklFGuLlcoqKrUY~vSBiEMnTEWbwiNP1ZpHMDJ4-zFBrmaVA~TbTNU~sLGMXlJLxqlgG~vWR5rrQipzAQ__&Key-Pair-Id=K35ZQ246Y37QV8",
// "imgOrder": null
// },
// {
// "img1": null,
// "likedStatus": "CANCELED",
// "imgUrl": "https://hhb.crushlevel.ai/dev/role/1754823734119375.jpg",
// "lockStatus": null,
// "likedCount": 0,
// "isDefault": true,
// "aiId": 437304385077249,
// "width": "1024",
// "img3": null,
// "unlockPrice": 0,
// "height": "1024",
// "albumId": 69,
// "img2": null,
// "imgOrder": null
// }
// ],
// "character": "",
// "heartbeatVal": 0,
// "headImg": "https://hhb.crushlevel.ai/dev/main/album/437301824126977/17548237573989721.jpg",
// "nickname": "Mock"
// }
// """
// return .okContent(string: content)
default:
return Data()
}
}
}