import { axios, apiBaseUrl, extractResponseData } from "./common"; import { HttpTimelineInfo } from "./timeline"; export interface HttpHighlightMoveRequest { timeline: string; newPosition: number; } export interface IHttpBookmarkClient { list(): Promise; put(timeline: string): Promise; delete(timeline: string): Promise; move(req: HttpHighlightMoveRequest): Promise; } export class HttpHighlightClient implements IHttpBookmarkClient { list(): Promise { return axios .get(`${apiBaseUrl}/bookmarks`) .then(extractResponseData); } put(timeline: string): Promise { return axios.put(`${apiBaseUrl}/bookmarks/${timeline}`).then(); } delete(timeline: string): Promise { return axios.delete(`${apiBaseUrl}/bookmarks/${timeline}`).then(); } move(req: HttpHighlightMoveRequest): Promise { return axios.post(`${apiBaseUrl}/bookmarkop/move`, req).then(); } } let client: IHttpBookmarkClient = new HttpHighlightClient(); export function getHttpBookmarkClient(): IHttpBookmarkClient { return client; } export function setHttpBookmarkClient( newClient: IHttpBookmarkClient ): IHttpBookmarkClient { const old = client; client = newClient; return old; }