Практическое руководство: добавление (базовое)
Практическое руководство: добавление (базовое)
Введение
Мы достигли важного этапа в нашем процессе интеграции: добавление ресурсов в Frame.io. Это руководство поможет вам пройти через базовый процесс добавления.
Требования
Если вы еще не сделали этого, просмотрите руководство Реализация C2C: настройка перед продолжением. Вам понадобится access_token, полученный в процессе аутентификации и авторизации. Для этого руководства мы используем образец тестового ресурса, доступный по этой ссылке Frame.io. Загрузите этот файл, чтобы следовать нашим примерам, поскольку это позволит вам сопоставить значения в наших образцах команд.
Шаг 1. Создание ресурса
Добавим наш образец файла, который, как мы предполагаем, создан 10 секунд назад. Сначала нам нужно создать ссылку на ресурс в Frame.io:
Спецификация конечной точки API-интерфейса
Документацию для /v2/devices/assets можно найти здесь. Хотя устаревшая конечная точка /v2/assets все еще функционирует, для новых интеграций мы рекомендуем использовать /v2/devices/assets.
Кодирование JSON
В отличие от конечных точек аутентификации, которые мы использовали ранее, эта конечная точка принимает кодирование application/json, а не form/multipart. Она также принимает application/x-www-form-urlencoded.
Рассмотрим параметры полезной нагрузки JSON:
имя: отображаемое имя ресурса в Frame.io. Оно не должно совпадать с именем файла на диске. filetype: тип файла MIME. Большинство языков программирования предоставляют утилиты для определения типа MIME (примеры: Go, Python). filesize: размер файла в байтах. Размер нашего образца файла приблизительно 21,1 МБ. offset: количество секунд с момента создания файла. По умолчанию 0, если не указано. Этот параметр должен быть предоставлен, поскольку он помогает определить, следует ли отклонить файлы из-за приостановки устройства. Мы рассмотрим это более подробно в расширенном руководстве по добавлению.
Ответ будет выглядеть примерно так (некоторые поля опущены):
На данном этапе мы только уведомили Frame.io о нашем намерении добавить файл; никакие фактические данные файла не были переданы. Если вы проверите папку вашего устройства в проекте, то увидите заполнитель ресурса в состоянии «добавление».
Поле upload_urls содержит URL-адреса, по которым мы будем добавлять фрагменты нашего файла. Для нашего тестового файла мы должны получить два URL-адреса добавления.
Шаг 2. Разделение файла на фрагменты
Ответ содержал несколько URL-адресов добавления. При добавлении в Frame.io мы разделяем файлы на фрагменты и добавляем их отдельно, что дает несколько преимуществ:
- Улучшенная надежность: если один фрагмент не добавляется, нам не нужно перезапускать весь процесс добавления.
- Более быстрые операции добавления: мы можем добавлять несколько фрагментов параллельно (рассматривается в руководстве по расширенным добавлениям)
Чтобы определить оптимальный размер фрагмента, используйте эту формулу:
Для нашего образца файла расчет выглядит так:
Это означает, что каждый фрагмент должен быть 10 568 125 байтов. Размеры фрагментов обычно составляют около 25 МБ, точные расчеты рассматриваются в руководстве по расширенным операциям добавления.
Размер последнего фрагмента
Поскольку размеры файлов редко делятся нацело, конечный фрагмент может быть меньше вычисленного chunk_size. Реализация должна учитывать это при чтении фрагментов файла.
Для этой демонстрации мы будем использовать команды head и tail, чтобы извлекать фрагменты файла.
Шаг 3. Добавление фрагментов
Добавление первого фрагмента:
Синтаксис команды
Параметр --data-binary @- указывает curl использовать необработанные данные из stdin, которые поступают от команды head.
Запрос требует следующих заголовков:
content-type: то же значение типа MIME, которое использовалось при создании ресурса x-amz-acl. Для разрешений AWS S3 всегда задавайте значение частный
Если добавление выполнено, возвращается:
Таким же способом добавьте второй фрагмент:
После выполнения обеих операций добавления ваш ресурс должен воспроизводиться в Frame.io! 🎉
Ошибки добавления
При добавлении фрагментов вы отправляете данные напрямую в AWS S3, а не в API-интерфейсе Frame.io. Ответы об ошибках будут следовать форматам AWS S3, а не стандартным ошибкам Frame.io. Мы рассмотрим обработку ошибок S3 в руководстве по обработке ошибок.
Порядок фрагментов
Хотя концептуально проще добавлять фрагменты последовательно, на самом деле их можно добавлять в любом порядке. Система соберет их правильно независимо от последовательности добавления.
Объединение
Вот упрощенный пример псевдокода на Python для полного процесса добавления:
Этот пример показывает базовый поток без обработки ошибок или параллельных операций добавления, которые будут рассмотрены в руководствах по обработке ошибок и расширенным добавлениям.
Дальнейшие шаги
Поздравляем с добавлением первого ресурса в Frame.io! В руководстве по расширенным операциям добавления будут более сложные техники и требования для готовых к использованию реализаций. Мы рекомендуем обращаться к нашей команде с любыми вопросами и переходить к руководству по добавлению в реальном времени, чтобы узнать о добавлении ресурсов такими, какими они созданы.