@memori.ai/memori-api-client
Version:
React library to integrate a Memori in your app or website
53 lines (51 loc) • 1.72 kB
text/typescript
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;
}
},
});