implement /infodesk endpoints

This commit is contained in:
Andrew Glaze
2025-05-15 18:29:54 -04:00
parent a94752a799
commit 04c5660f7d
8 changed files with 686 additions and 41 deletions

View File

@@ -0,0 +1,140 @@
import Vapor
struct OpenApi {
func registerRoutes(_ app: Application) {
let group = app.grouped("openapi", "service")
group.post("v3", "util", "country", "get") { req async -> String in
"{\"country\": \"us\"}"
}
group.post("v4", "device", "accessToken", "create") { req async -> AccessTokenResponse in
AccessTokenResponse(accessToken: "fwPla7fQ8ty9+DZT/lD//uWZD4uD6C4lD6gGIIZTLKRTQ52/SLCRmk/370jcWGs+e+1iSoZtL7lj8ov9B0/jHmijH4nsHPQT6pchaQM1M9mtwYNQq0BWhVr9hF0jjCK/a5LIVd1kBac/Gemv29WKEDKSrUS9HxxUigoPRwtOy8m+oDj9FmDJZ+rzqWCc0QjES4Ky0fTpXZ7ESoguDzNmRtW3FYr+OFexw8wBPlwiC4w=", expiryTime: Int(Date.init(timeIntervalSinceNow: .init(0)).timeIntervalSince1970))
}
group.post("v3", "agreement", "getForLogin") { req async throws -> String in
let body = try req.content.decode(LoginAgreementRequest.self, as: .json)
return #"""
{
"adAgreementStatus": "n",
"agreement": {
"E001": "n",
"E002": "n",
"E006": "n",
"N002": "n",
"N003": "n",
"timestamp": "\#(Int(Date().timeIntervalSince1970) * 1000)"
},
"agreementPopup": "n",
"appId": "\#(body.appId)",
"appName": "World Flipper (NA)",
"context": "login",
"country": "\#(body.country)",
"firstAgreement": "n",
"idpCode": "\#(body.idpCode)",
"idpId": "6076008646",
"informationSecurityCountry": "kr",
"kakaoSyncAgreementGetSet": "n",
"kakaoSyncStatus": "off",
"kakaogameSdkVer": "3.0",
"lang": "\#(body.lang)",
"partnerId": 825,
"partnerName": " ",
"plusFriendStatusInfo": null,
"policyApplyTime": 1630854000000
}
"""#
}
group.post("v4", "auth", "loginDevice") { req async throws -> Response in
let body = try req.content.decode(LoginDeviceRequest.self, as: .json)
dump(body)
if let rawAccountId = req.headers["playerId"].first {
}
return Response(status: .notImplemented)
}
}
}
struct AccessTokenResponse: Content {
let accessToken: String
let expiryTime: Int
}
struct LoginAgreementRequest: Content {
let deviceId: String
let os: String
let country: String
let lang: String
let appId: String
let idpCode: String
let serialNo: String
let idpId: String
}
struct LoginDeviceRequest: Content {
let lang: String
let clientTime: Int
let deviceId: String
let serialNo: String
let country: String
let whiteKey: String
let market: String
let appSecret: String
let deviceAppKey: String
let sdkVer: String
let appVer: String
let os: String
let loginType: String
let accessToken: String
let resume: Bool
let osVer: String
let appId: String
let deviceModel: String
let network: String
let isIosAppOnMac: Bool
let adid: String
let timezoneOffset: Int
let fields: [String]
let telecom: String
}
struct LoginDeviceResponse: Content {
let zatExpiryTime: Int
let zrtExpiryTime: Int
let firstLogin: Bool
let externalToken: String
let zat: String
let zrt: String
let player: Player
}
struct Player: Content {
let idpId: String
let appId: String
let lang: String
let playerId: String
let agreement: AgreementResponse
let pushOption: PushOptionResponse
let lastLoginTime: Int
let regTime: Int
let idpAlias: String
let firstLoginTime: Int
let status: String
}
struct AgreementResponse: Content {
let E001: String
let E002: String
let E006: String
let N002: String
let N003: String
let timestamp: String
}
struct PushOptionResponse: Content {
let night: String
let player: String
}

View File

@@ -0,0 +1,19 @@
import Fluent
import Vapor
func routes(_ app: Application) throws {
app.get { req async in
"It works!"
}
app.get("hello") { req async -> String in
"Hello, world!"
}
let openApi = OpenApi()
openApi.registerRoutes(app)
try app.register(collection: InfodeskController())
print(app.routes.all)
}