Существует ли API для Mozilla для обновления подписанных надстроек?

У меня есть подписанный аддон, который я использую лично, но хотел бы поэкспериментировать с его распространением через AMO. Я уже загрузил первоначальную версию через Developer Hub, и теперь я надеюсь, что смогу включить автоматический выпуск через конвейер CI.

Я уже некоторое время изучаю, как это сделать, найдя эту статью и документацию по API, но мне не повезло. Я определенно могу подключиться к своему JWT должным образом, поскольку я получаю либо 301 (я полагаю, это потому, что API, описанный в статье, был изменен за последние два года), но затем 400, когда я следую за перенаправлениями.

Каждый запрос возвращает отсутствующий ключ "upload" в данных из нескольких файлов. Я полагаю, что это связано с тем, что конечная точка представляет собой PUT, но ожидает многочастную форму (все мои исследования указывают на то, что это поддерживается только POST). Я пробовал несколько разных подходов, как с cURL, так и с различными библиотеками Python - включая PyCurl, чтобы попытаться использовать multipart в запросе POST и переопределить только метод для PUT - но просто, похоже, ничего не получилось.

Я не смог найти какой-либо недавней документации по этому вопросу, так как более старые статьи подразумевают, что это устаревший API, но более новые документы, кажется, не имеют ответов, которые я ищу. Такие проблемы предполагают, что это все еще возможно, и я видел упоминание о web-ext, но я думаю, что мне просто не хватает, как собрать все воедино.

Мой запрос:

    curl -XPUT https://addons.mozilla.org/api/v3/addons/{myId}/versions/0.2 -F 'upload=../toolbox.api' -H 'Authorization: JWT <myToken>' -v -L

Кто-нибудь пытался сделать это и есть какие-либо советы о том, как двигаться вперед? Или наоборот знать, что это точно невозможно?

Заранее спасибо!

1 ответ

Решение

Вы можете использовать команду web-ext на основе node.js, чтобы подписывать расширения из командной строки.

Как и в случае с использованием curl, вы получаете издателя / секрет, а затем используете их в качестве аргументов или переменных среды:

web-ext sign --api-key=$AMO_JWT_ISSUER --api-secret=$AMO_JWT_SECRET 

Если вам нужно использовать прокси:

web-ext sign --api-key=... --api-secret=... --api-proxy=https://yourproxy:6000

Пожалуйста, смотрите связанную статью для деталей (и других его особенностей).

Другие вопросы по тегам