From a9119fa53fd4215a32bd6d3edc475b9f07acbf0f Mon Sep 17 00:00:00 2001 From: Nolan Lawson Date: Sun, 10 Apr 2022 10:35:24 -0700 Subject: [PATCH] fix: use /api/v2/media (#2121) * fix: use /api/v2/media Fixes #2078 * fix: fix comment --- src/routes/_api/media.js | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/routes/_api/media.js b/src/routes/_api/media.js index 30f30a60..7145dbac 100644 --- a/src/routes/_api/media.js +++ b/src/routes/_api/media.js @@ -1,17 +1,41 @@ import { auth, basename } from './utils.js' import { post, put, MEDIA_WRITE_TIMEOUT, WRITE_TIMEOUT } from '../_utils/ajax.js' -export async function uploadMedia (instanceName, accessToken, file, description) { +async function doUploadMedia (version, instanceName, accessToken, file, description) { const formData = new FormData() formData.append('file', file) if (description) { formData.append('description', description) } - const url = `${basename(instanceName)}/api/v1/media` + const url = `${basename(instanceName)}/api/${version}/media` return post(url, formData, auth(accessToken), { timeout: MEDIA_WRITE_TIMEOUT }) } -export async function putMediaMetadata (instanceName, accessToken, mediaId, description, focus) { - const url = `${basename(instanceName)}/api/v1/media/${mediaId}` +async function doPutMediaMetadata (version, instanceName, accessToken, mediaId, description, focus) { + const url = `${basename(instanceName)}/api/${version}/media/${mediaId}` return put(url, { description, focus: (focus && focus.join(',')) }, auth(accessToken), { timeout: WRITE_TIMEOUT }) } + +export async function uploadMedia (instanceName, accessToken, file, description) { + try { + return (await doUploadMedia('v2', instanceName, accessToken, file, description)) + } catch (err) { + if (err && err.status === 404) { // fall back to old v1 API + return doUploadMedia('v1', instanceName, accessToken, file, description) + } else { + throw err + } + } +} + +export async function putMediaMetadata (instanceName, accessToken, mediaId, description, focus) { + try { + return (await doPutMediaMetadata('v2', instanceName, accessToken, mediaId, description, focus)) + } catch (err) { + if (err && err.status === 404) { // fall back to old v1 API + return doPutMediaMetadata('v1', instanceName, accessToken, mediaId, description, focus) + } else { + throw err + } + } +}