@indiekit/endpoint-media
Version:
Micropub media endpoint for Indiekit. Enables publishing media files (audio, photos, videos) to your website using the Micropub protocol.
68 lines (58 loc) • 1.83 kB
JavaScript
import makeDebug from "debug";
const debug = makeDebug("indiekit:endpoint-media:media-content");
export const mediaContent = {
/**
* Upload file to content store
* @param {object} publication - Publication configuration
* @param {object} mediaData - Media data
* @param {object} file - File to upload
* @returns {Promise<object>} Data to use in response
*/
async upload(publication, mediaData, file) {
debug(`Upload %O`, { mediaData });
const { mediaStore, storeMessageTemplate } = publication;
const { path, properties } = mediaData;
const metaData = {
action: "upload",
result: "uploaded",
fileType: "file",
postType: properties["media-type"],
};
const message = storeMessageTemplate(metaData);
await mediaStore.createFile(path, file.data, { message });
return {
location: properties.url,
status: 201,
json: {
success: "create",
success_description: `Media uploaded to ${properties.url}`,
},
};
},
/**
* Delete file from content store
* @param {object} publication - Publication configuration
* @param {object} mediaData - Post data
* @returns {Promise<object>} Response data
*/
async delete(publication, mediaData) {
debug(`Delete %O`, { mediaData });
const { mediaStore, storeMessageTemplate } = publication;
const { path, properties } = mediaData;
const metaData = {
action: "delete",
result: "deleted",
fileType: "file",
postType: properties["media-type"],
};
const message = storeMessageTemplate(metaData);
await mediaStore.deleteFile(path, { message });
return {
status: 200,
json: {
success: "delete",
success_description: `File deleted from ${properties.url}`,
},
};
},
};