gorsejs
Version:
TypeScript SDK for Gorse recommender system.
64 lines (60 loc) • 1.38 kB
text/typescript
import { AxiosInstance, AxiosResponse } from "axios";
import {
Feedback,
Score,
LatestOptions,
RecommendOptions,
SessionRecommendOptions,
} from "../interfaces";
export function getLatest(
axios: AxiosInstance,
{ category = "", cursorOptions }: LatestOptions,
) {
return axios
.get<Score[], AxiosResponse<Score[]>>(`/latest/${category}`, {
params: cursorOptions,
})
.then(({ data }) => {
return data;
});
}
export function getRecommend(
axios: AxiosInstance,
{
userId,
category = "",
cursorOptions,
writeBackType,
writeBackDelay,
}: RecommendOptions,
) {
return axios
.get<string[], AxiosResponse<string[]>>(
`/recommend/${userId}/${category}`,
{
params: {
...(writeBackType ? { "write-back-type": writeBackType } : {}),
...(writeBackDelay ? { "write-back-delay": writeBackDelay } : {}),
...cursorOptions,
},
},
)
.then(({ data }) => {
return data;
});
}
export function getSessionRecommend<T extends string>(
axios: AxiosInstance,
feedbackList: Feedback<T>[] = [],
{ category = "", cursorOptions }: SessionRecommendOptions,
) {
return axios
.post(`/session/recommend/${category}`, feedbackList, {
params: {
...cursorOptions,
},
})
.then(({ data }) => {
return data;
});
}