Adding a media endpoint
Last night I managed to successfully implement another IndieWeb feature a Media endpoint to the blog.
A Media endpoint allows you to upload data to your website, usually in practice it is used for photo posts but you could use it to upload files if you wished. This will now give me the option to post images here on the blog instead of Instagram, which I would like to quit using.
In practice it wasn’t as complicated as I thought it might be to implement. This is how it works.
- The endpoint needs to authenticate with IndieAuth.
- Once authenticated it accepts an image URL encoded, as per spec.
- The image is stored in memory.
- The code then responds to the file sender with a location for where the image will be located.
- The image is then base 64 encoded and POST’ed in to the Github API with a unique filename.
- The endpoint returns complete.
The Sender acquires the file location for the photo and runs through it sequentially for multiple photos. It then sends the location string(s) along with the other JSON data.
I extended my note formatter to accommodate photos and output the photo location and alternate text for each image in to the Frontmatter for the post.