datadirect
Version:
Types for working with Blackbaud's front-end APIs
47 lines (46 loc) • 1.75 kB
JavaScript
import { NotImplementedError } from './Errors.js';
import { assignment } from './prepareContent/assignment.js';
import { base } from './prepareContent/base.js';
import { discussionThread } from './prepareContent/discussionThread.js';
import { media } from './prepareContent/media.js';
import { rssReader } from './prepareContent/rssReader.js';
import { widget } from './prepareContent/widget.js';
export function prepareContent(container, types) {
const contentType = types.find((e) => e.ContentId == container.ContentId);
switch (contentType?.Content) {
case 'Audio':
case 'Video':
case 'Photo':
return media(container);
case 'Widget':
return widget();
case 'RSS Reader':
return rssReader();
case 'Discussion Thread':
return discussionThread();
case 'Assignment':
return assignment();
case 'Horizontal Line':
case 'Spacer':
case 'Cover Brief':
case 'Cover Image':
case 'Cover Title':
throw new Error(`There is no content endpoint for ${contentType.Content}`);
case 'Roster':
case 'Learning Tool':
// FIXME capture Learning Tool content data
throw new NotImplementedError(`Capturing ${contentType.Content} is not yet supported`);
case 'Downloads':
case 'Expectations':
case 'Links':
case 'Events':
return base(contentType, { plural: true });
default:
if (contentType) {
return base(contentType);
}
else {
throw new Error(`Unknown content type in container: ${JSON.stringify(container)}`);
}
}
}