@qite/tide-client
Version:
Frontend client for Tide
75 lines (64 loc) • 2.04 kB
text/typescript
import {
Affiliate,
CrmContactRequest,
GenerateBookingAccommodationRequest,
TideClientConfig,
} from "../types";
import { get, post } from "./common-client";
const ENDPOINT = "/api/web";
const ENDPOINT_CREATE_CRM_CONTACT = `${ENDPOINT}/crmcontact`;
const ENDPOINT_CREATE_AFFILIATES = `${ENDPOINT}/affiliates`;
const ENDPOINT_TRANSLATION_DICTIONARY = `${ENDPOINT}/translation-dictionary`;
const ENDPOINT_BOOKING_ACCOMMODATION = `${ENDPOINT}/booking-accommodation`;
/**
* api/web/crmcontact
* Creates a CRM contact.
* @param config
* @param request
* @param signal
* @returns OK if succeeded.
*/
export const createCrmContact = (
config: TideClientConfig,
request: CrmContactRequest,
signal?: AbortSignal
): Promise<Response> => {
const url = `${config.host}${ENDPOINT_CREATE_CRM_CONTACT}`;
const apiKey = config.apiKey;
const body = JSON.stringify(request);
return post(url, apiKey, body, config.token, signal);
};
/**
* api/web/affiliates
* Gets all Affiliates
* @param config
* @param signal
* @returns OK if succeeded.
*/
export const getAffiliates = (
config: TideClientConfig,
signal?: AbortSignal
): Promise<[Affiliate]> => {
const url = `${config.host}${ENDPOINT_CREATE_AFFILIATES}`;
const apiKey = config.apiKey;
return get(url, apiKey, config.token, signal, true);
};
export const getTranslationDictionary = (
config: TideClientConfig,
segmentKey: string,
signal?: AbortSignal
): Promise<{ [key: string]: object }> => {
const url = `${config.host}${ENDPOINT_TRANSLATION_DICTIONARY}/${segmentKey}`;
const apiKey = config.apiKey;
return get(url, apiKey, undefined, signal);
};
export const generateBookingAccommodations = (
config: TideClientConfig,
request: GenerateBookingAccommodationRequest,
signal?: AbortSignal
): Promise<{ [key: string]: string }> => {
const url = `${config.host}${ENDPOINT_BOOKING_ACCOMMODATION}`;
const apiKey = config.apiKey;
const body = JSON.stringify(request);
return post(url, apiKey, body, config.token, signal);
};