сеанс загрузки 409 уже используется — возобновляемый api загрузки Dailymotion

#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 или в спецификации возобновляемой загрузки, поэтому буду очень признателен за помощь!