스킬 정리 및 리팩토링
This commit is contained in:
@@ -1,4 +1,9 @@
|
||||
import type { KisRuntimeCredentials } from "@/features/settings/store/use-kis-runtime-store";
|
||||
import {
|
||||
buildKisRequestHeaders,
|
||||
resolveKisApiErrorMessage,
|
||||
type KisApiErrorPayload,
|
||||
} from "@/features/settings/apis/kis-api-utils";
|
||||
import type {
|
||||
DashboardActivityResponse,
|
||||
DashboardBalanceResponse,
|
||||
@@ -21,18 +26,16 @@ export async function fetchDashboardBalance(
|
||||
): Promise<DashboardBalanceResponse> {
|
||||
const response = await fetch("/api/kis/domestic/balance", {
|
||||
method: "GET",
|
||||
headers: buildKisRequestHeaders(credentials),
|
||||
headers: buildKisRequestHeaders(credentials, { includeAccountNo: true }),
|
||||
cache: "no-store",
|
||||
});
|
||||
|
||||
const payload = (await response.json()) as
|
||||
| DashboardBalanceResponse
|
||||
| { error?: string };
|
||||
| KisApiErrorPayload;
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(
|
||||
"error" in payload ? payload.error : "잔고 조회 중 오류가 발생했습니다.",
|
||||
);
|
||||
throw new Error(resolveKisApiErrorMessage(payload, "잔고 조회 중 오류가 발생했습니다."));
|
||||
}
|
||||
|
||||
return payload as DashboardBalanceResponse;
|
||||
@@ -55,12 +58,10 @@ export async function fetchDashboardIndices(
|
||||
|
||||
const payload = (await response.json()) as
|
||||
| DashboardIndicesResponse
|
||||
| { error?: string };
|
||||
| KisApiErrorPayload;
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(
|
||||
"error" in payload ? payload.error : "지수 조회 중 오류가 발생했습니다.",
|
||||
);
|
||||
throw new Error(resolveKisApiErrorMessage(payload, "지수 조회 중 오류가 발생했습니다."));
|
||||
}
|
||||
|
||||
return payload as DashboardIndicesResponse;
|
||||
@@ -77,39 +78,17 @@ export async function fetchDashboardActivity(
|
||||
): Promise<DashboardActivityResponse> {
|
||||
const response = await fetch("/api/kis/domestic/activity", {
|
||||
method: "GET",
|
||||
headers: buildKisRequestHeaders(credentials),
|
||||
headers: buildKisRequestHeaders(credentials, { includeAccountNo: true }),
|
||||
cache: "no-store",
|
||||
});
|
||||
|
||||
const payload = (await response.json()) as
|
||||
| DashboardActivityResponse
|
||||
| { error?: string };
|
||||
| KisApiErrorPayload;
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(
|
||||
"error" in payload ? payload.error : "활동 데이터 조회 중 오류가 발생했습니다.",
|
||||
);
|
||||
throw new Error(resolveKisApiErrorMessage(payload, "활동 데이터 조회 중 오류가 발생했습니다."));
|
||||
}
|
||||
|
||||
return payload as DashboardActivityResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* 대시보드 API 공통 헤더를 구성합니다.
|
||||
* @param credentials KIS 인증 정보
|
||||
* @returns KIS 전달 헤더
|
||||
* @see features/dashboard/apis/dashboard.api.ts fetchDashboardBalance/fetchDashboardIndices
|
||||
*/
|
||||
function buildKisRequestHeaders(credentials: KisRuntimeCredentials) {
|
||||
const headers: Record<string, string> = {
|
||||
"x-kis-app-key": credentials.appKey,
|
||||
"x-kis-app-secret": credentials.appSecret,
|
||||
"x-kis-trading-env": credentials.tradingEnv,
|
||||
};
|
||||
|
||||
if (credentials.accountNo?.trim()) {
|
||||
headers["x-kis-account-no"] = credentials.accountNo.trim();
|
||||
}
|
||||
|
||||
return headers;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user