добавить POST HOOK в репозиторий битбакетов, используя их REST API и python-запросы

Я пытаюсь добавить хук POST в репозиторий bitbucket, но при каждой попытке получаю 404 результата.

Я делаю:

payload = {'type': 'POST', 'URL': announce_post_hook}
content_type = {"Content-Type": "application/json"}
request_url = 'https://api.bitbucket.org/1.0/repositories/{repo_owner}/{repo_slug}/services/'                       
request_url = request_url.format(repo_owner=repo_owner, remote_url=remote_url)
requests.post(request_url, auth=(repo_user, repo_pass), data=json.dumps(payload), headers=content_type)

Я также пытался использовать этот URL:

https://bitbucket.org/api/1.0/repositories/{repo_owner}/{repo_slug}/services/

Так как он указан в разных частях их API (и я использую api.bitbucket.org вместо bitbucket.org/api/, например, для настройки ключей развертывания).

Если я попытаюсь сделать это с помощью curl, например:

curl -X POST -u user:pass https://api.bitbucket.org/1.0/repositories/repowner/reposlug/services/ --data "type=POST&URL=https://hooks.urladdress.com"

тогда это сработает. Но попытка сделать это с помощью python-запросов, как в другом вызове API, потерпит неудачу...

Кто-нибудь знает, что происходит? Он просто ответит, что ресурс не найден, что кажется неправильным (поскольку он работает через curl)

Нашел этот вопрос с очень аналогичная проблема, но ответов нет...


person yivi    schedule 15.04.2015    source источник
comment
закончилось отправкой параметров напрямую через данные, например: ="nofollow noreferrer">hooks.url.com'), и это работает. по-видимому, этой конкретной конечной точке не нравятся данные, закодированные в json.   -  person yivi    schedule 15.04.2015


Ответы (1)


Для справки в будущем, если у кого-то еще есть такая же проблема, по-видимому, эта конкретная конечная точка не принимает данные в кодировке json.

Таким образом, запрос должен быть

requests.post(request_url, auth=(repo_user, repo_pass), data='type=POST&URL=hooks.url.com')
person yivi    schedule 16.04.2015