Files
core_ng/server/clientAPI/sammoRootAPI.ts
T
2023-08-06 08:03:29 +00:00

56 lines
1.5 KiB
TypeScript

import { APIPathGen } from "../api/APIPathGen";
import { RawArgType } from "../api/base";
import { APICallT, APITail, GET, POST, callClientAPI, extractHttpMethod } from "./clientAPI";
export type LoginResponse = {
result: true,
nextToken: [number, string] | undefined,
}
export type LoginFailed = {
result: false,
reqOTP: boolean,
reason: string,
}
export type AutoLoginNonceResponse = {
result: true,
loginNonce: string,
};
export type AutoLoginResponse = {
result: true,
nextToken: [number, string] | undefined,
}
export type AutoLoginFailed = {
result: false,
silent: boolean,
reason: string,
}
const apiRealPath = {
Login: {
LoginByID: POST as APICallT<{
username: string,
password: string,
}, LoginResponse, LoginFailed>,
LoginByToken: POST as APICallT<{
hashedToken: string,
token_id: number,
}, AutoLoginResponse, AutoLoginFailed>,
ReqNonce: GET as APICallT<undefined, AutoLoginNonceResponse, AutoLoginFailed>
},
} as const;
export const SammoRootAPI = APIPathGen(apiRealPath, (path: string[], tail: APITail, pathParam) => {
const method = extractHttpMethod(tail);
return (args?: RawArgType, returnError?: boolean) => {
if (returnError) {
return callClientAPI(method, path.join('/'), args, pathParam, true);
}
return callClientAPI(method, path.join('/'), args, pathParam);
};
});