83 lines
2.2 KiB
TypeScript
83 lines
2.2 KiB
TypeScript
import type { KisRuntimeCredentials } from "@/features/dashboard/store/use-kis-runtime-store";
|
|
import type {
|
|
DashboardKisRevokeResponse,
|
|
DashboardKisValidateResponse,
|
|
DashboardKisWsApprovalResponse,
|
|
} from "@/features/dashboard/types/dashboard.types";
|
|
|
|
/**
|
|
* KIS API 키 검증 요청
|
|
* @param credentials 검증할 키 정보
|
|
*/
|
|
export async function validateKisCredentials(
|
|
credentials: KisRuntimeCredentials,
|
|
): Promise<DashboardKisValidateResponse> {
|
|
const response = await fetch("/api/kis/validate", {
|
|
method: "POST",
|
|
headers: {
|
|
"content-type": "application/json",
|
|
},
|
|
body: JSON.stringify(credentials),
|
|
cache: "no-store",
|
|
});
|
|
|
|
const payload = (await response.json()) as DashboardKisValidateResponse;
|
|
|
|
if (!response.ok || !payload.ok) {
|
|
throw new Error(payload.message || "API 키 검증에 실패했습니다.");
|
|
}
|
|
|
|
return payload;
|
|
}
|
|
|
|
/**
|
|
* KIS 접근토큰 폐기 요청
|
|
* @param credentials 폐기할 키 정보
|
|
*/
|
|
export async function revokeKisCredentials(
|
|
credentials: KisRuntimeCredentials,
|
|
): Promise<DashboardKisRevokeResponse> {
|
|
const response = await fetch("/api/kis/revoke", {
|
|
method: "POST",
|
|
headers: {
|
|
"content-type": "application/json",
|
|
},
|
|
body: JSON.stringify(credentials),
|
|
cache: "no-store",
|
|
});
|
|
|
|
const payload = (await response.json()) as DashboardKisRevokeResponse;
|
|
|
|
if (!response.ok || !payload.ok) {
|
|
throw new Error(payload.message || "API 키 접근 폐기에 실패했습니다.");
|
|
}
|
|
|
|
return payload;
|
|
}
|
|
|
|
/**
|
|
* KIS 실시간 웹소켓 승인키 발급 요청
|
|
* @param credentials 인증 정보
|
|
*/
|
|
export async function fetchKisWebSocketApproval(
|
|
credentials: KisRuntimeCredentials,
|
|
): Promise<DashboardKisWsApprovalResponse> {
|
|
const response = await fetch("/api/kis/ws/approval", {
|
|
method: "POST",
|
|
headers: {
|
|
"content-type": "application/json",
|
|
},
|
|
body: JSON.stringify(credentials),
|
|
cache: "no-store",
|
|
});
|
|
|
|
const payload = (await response.json()) as DashboardKisWsApprovalResponse;
|
|
if (!response.ok || !payload.ok || !payload.approvalKey || !payload.wsUrl) {
|
|
throw new Error(
|
|
payload.message || "KIS 실시간 웹소켓 승인키 발급에 실패했습니다.",
|
|
);
|
|
}
|
|
|
|
return payload;
|
|
}
|