By: Michael Lynch <git@mtlynch.io>
Separate image and video upload paths Remove the generic uploadPost dispatcher and the uploadParser/publishFunc function-type indirection that existed only to share code between the image and video routes. Each route is now a self-contained handler read top to bottom. Split uploadPostRequest into imageUploadPostRequest (carrying an open io.ReadCloser, as on master) and videoUploadPostRequest (carrying a temp path, since its parser streams the multipart body to disk). The video struct drops MediaType, which is always video. Each parser now accepts only the formats its route serves: photoTypeFromFilename for the image route, requireVideoFilename for the video route, replacing the shared mediaTypeFromFilename and the awkward post-parse video rejection. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>