Как ждать код ответа 201 через curl - PullRequest
0 голосов
/ 22 мая 2018

У меня есть команда curl для публикации пространства Atlassian Confluence с использованием плагина K15t Scroll Version:

curl -v -H "Accept:application/json" -H "Content-Type:application/json" -X POST "http://<server>/rest/scroll-versions/1.0/publish/<spacekey>/to_new/publish?os_username=myusername&os_password=mypassword" --data {"versionId":"9C8CC11601610D3E794E334A746E61SD","targetSpaceKey":"pro60", "targetSpaceName":"Pro 60", "treeProviderName":"Pro 2017", "languageKey":"all", "copyLabels":"false", "keepAuthorsAndDates":"false", "removeAttachments":"false", "sendEmail":"false", "keepPermalinks":"false", "onlyPagesInFinalState":"false", "onlyPagesInFinalStateProcessChildren":"false", "publishHierarchy":"false"}

Эта команда возвращает код ответа 202 с краткой информацией о том, что происходит.Затем я должен продолжать проверять приведенный ниже URL-адрес на предмет завершения операции.Я продолжаю получать код 202 и, наконец, я получаю код 201. Затем я сохраняю ответ, для которого я назвал URL-адрес ниже.

http://<server>/rest/scroll-versions/1.0/async-tasks/<alphanumeric id generated when 202 is returned> 

Что я должен сделать, чтобы сохранить ответ в файле журнала, как только он будет сгенерирован после того, как я выполнил curl, а затем вызов URL выше?

1 Ответ

0 голосов
/ 04 октября 2018

wait-for-code.sh (на основе https://superuser.com/a/442395/634271)

#/bin/sh

HOST=${1}
ATTEMPTS=${2:-10} # -1 for unlimited
CODE=${3:-200}
OUT=${4:-/dev/null}
DELAY=${5:-1s}

if [[ "$OUT" = "/dev/null" ]]; then
    GET_BODY="I"
else
    GET_BODY=""
fi

CURL="curl -${GET_BODY}so ${OUT} -w %{http_code} ${HOST}"

until [ $ATTEMPTS -eq 0 ]; do
    [ `$CURL` -eq $CODE ] && exit 0
    [ $ATTEMPTS -gt 0 ] && [ $((--ATTEMPTS)) ]
    [ $ATTEMPTS -gt 0 ] && sleep $DELAY
done

exit 1

Использование в вашем случае:

$ SERVER="http://<server>/rest/scroll-versions/1.0/async-tasks/<alphanumeric id generated when 202 is returned>"
$ ./wait-for-http-code.sh $SERVER -1 201 out.log
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...