#upload #dailymotion-api #resume-upload #resumable
Вопрос:
При попытке использовать протокол возобновляемой загрузки API Dailymotion возвращает 409
статус в ответ на загрузку второго сегмента с этой ошибкой:
upload session already in use
Согласно документам api DM, я заменяю /upload
на /rupload
в URL-адресе загрузки, возвращаемом https://api.dailymotion.com/file/upload
so https://upload-02.nyc.dailymotion.com/upload?uuid=<uuid>amp;seal=<seal>amp;extra=<user_id>
, становится https://upload-02.nyc.dailymotion.com/rupload?uuid=<uuid>amp;seal=<seal>amp;extra=<user_id>
.
В первом запросе на URL-адрес загрузки я отправляю первый фрагмент загрузки. Следуя примерам, на которые ссылаются документы api, заголовки для моего первого запроса следующие (для тестирования используются фрагменты размером 5242880 байт):
"Session-ID": {"<uuid_from_the_upload_url>"},
"Content-Type": {"application/octet-stream"},
"Content-Disposition": {"attachment; filename="test_video.mov""},
"X-Content-Range": {"bytes 0-5242879/18326960"},
"Content-Length": {"5242880"},
и ответ от API Dailymotion неожиданно отправляет 200
статус (вместо 201
) и список Range
заголовков 5242880
в качестве общего вместо этого. Он также возвращает URL-адрес в теле для использования в качестве URL-адреса на следующем шаге создания видео. Вот заголовки ответа на первый запрос:
"Access-Control-Max-Age": {"86400"},
"Range": {"0-5242879/5242880"},
"Server": {"xupload/4.0.10"},
"Date": {"Sun, 11 Jul 2021 17:46:14 GMT"},
"Content-Length": {"647"},
"Access-Control-Allow-Headers": {"Content-Type, Content-Range, Content-Disposition, Session-Id"},
"Access-Control-Allow-Methods": {"HEAD, GET, POST, DELETE"},
"Access-Control-Allow-Origin": {"*"},
"Access-Control-Expose-Headers": {"Range"},
"Content-Type": {"application/json"},
Второй запрос, который я отправляю, содержит следующие заголовки (вместе со вторым фрагментом видео в теле):
"Session-ID": {"<uuid_from_the_upload_url>"},
"Content-Type": {"application/octet-stream"},
"Content-Disposition": {"attachment; filename="test_video.mov""},
"X-Content-Range": {"bytes 5242880-10485759/18326960"},
"Content-Length": {"5242880"},
и в этом ответе я получаю 409
ошибку. Вот заголовки и текст ответа:
"Date": {"Sun, 11 Jul 2021 17:47:32 GMT"},
"Access-Control-Allow-Methods": {"HEAD, GET, POST, DELETE"},
"Access-Control-Expose-Headers": {"Range"},
"Access-Control-Max-Age": {"86400"},
"Content-Type": {"application/json"},
"Server": {"xupload/4.0.10"},
"Content-Length": {"83"},
"Access-Control-Allow-Headers": {"Content-Type, Content-Range, Content-Disposition, Session-Id"},
"Access-Control-Allow-Origin": {"*"},
{ error: "upload session already in use" }
Для Session-ID
заголовка я использую uuid, возвращенный в URL-адресе загрузки, так как я думал, что можно с уверенностью предположить, что он должен быть уникальным только для этого видео/загрузки. Однако, просто чтобы убедиться, что здесь не было проблемы, я также попытался создать идентификатор объекта, который будет использоваться для всех запросов на загрузку.
Странный ответ на первый запрос заставляет меня думать, что я что-то упускаю в этом запросе, но я не могу найти ничего другого в документах API Dailymotion или в спецификации возобновляемой загрузки, поэтому буду очень признателен за помощь!