UNPKG

@memori.ai/memori-api-client

Version:

React library to integrate a Memori in your app or website

53 lines (51 loc) 1.72 kB
export interface ResourceURLParams { type?: 'avatar' | 'cover' | 'default'; resourceURI?: string; sessionID?: string; baseURL?: string; } export default (apiUrl: string) => ({ /** * getResourceUrl * @description Returns the correct URL of a resource from the DB. * @param {obj} params * @param {string=} params.type - wheather is the avatar or the cover * @param {string=} params.resourceURI - the resource URI * @param {string=} params.sessionID - the session ID, required for memory media attachments * @param {string=} params.baseURL - the base URL for default static assets (defaults to https://aisuru.com) * @returns {string} */ getResourceUrl: ({ type, resourceURI, sessionID, baseURL = 'https://aisuru.com', }: ResourceURLParams): string => { let defaultUri = type === 'cover' ? `${baseURL}/images/memoriCover.png` : `${baseURL}/images/memoriAvatar.png`; if (!resourceURI || resourceURI.length === 0) { return defaultUri; } else if (resourceURI.includes('memoriai/memory')) { return `${resourceURI}?memori-ai-session-id=${sessionID}`; } else if ( resourceURI.startsWith('https://') || resourceURI.startsWith('http://') ) { return `${resourceURI}${sessionID ? `/${sessionID}` : ''}`; } else if (resourceURI.startsWith('cloud://')) { return `${apiUrl.replace(/v2/, 'v1')}/CloudAsset/${resourceURI.replace( 'cloud://', '' )}`; } else if (resourceURI.startsWith('guid://')) { return `${apiUrl.replace(/v2/, 'v1')}/GuidAsset/${resourceURI.replace( 'guid://', '' )}`; } else { return defaultUri; } }, });