drakma: Как передать токен JIRA API для запросов?

Когда я делаю следующее, передавая свой токен JIRA API ...

      curl --verbose --request GET \
     --url 'https://myJira.atlassian.net/....' \
     --user 'my_email@domain.com:my_jira_api_token' ...

... операция прошла успешно, и я вижу, что один из заголовков был:

      Authorization: Basic encodedAuthInfoHere

Как бы я сделал то же самое с Дракмой ? :basic-authorizationпринимает список имени пользователя и пароля . Но JIRA говорит , что базовая аутентификация устарела.

      (drakma:http-request url
                     :method :get
                     :basic-authorization '(email passwd)
                     ...

Есть ли способ выполнить ту же кодировку, что и curl, и явно добавить заголовок при вызове http-request? Заранее спасибо!

2 ответа

Как и в случае с curl, пароль Drakma может быть каким угодно, поэтому вы можете вставить токен jira, как в случае с curl.

Бы

      (setf drakma:*header-stream* *standard-output*)
(drakma:http-request "https://myJira.atlassian.net/...."
  :method :get
  :basic-authorization '("my_email@domain.com" "my_jira_api_token"))

искра радости?

Я ожидал, что дракма создаст строку my_email@domain.com:my_jira_api_token, закодируйте его в base64 и добавьте к " Authorization: Basic", поэтому вы получите такой заголовок:

      Authorization: Basic bXlfZW1haWxAZG9tYWluLmNvbTpteV9qaXJhX2FwaV90b2tlbg==

Если ваш пример с завитком завершен, Drakma поможет вам добиться того же результата, что и завиток.

Вы можете пройти :parametersна запрос:

      USER> (drakma:http-request "http://example.com"
                           :method :get
                           :parameters '(("user" . "token")))

Ответ:

      "<!doctype html>
<html>
<head>
    <title>Example Domain</title>

    <meta charset="utf-8" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="viewport" conten...[sly-elided string of length 1256]"
200 (8 bits, #xC8, #o310, #b11001000)
((:AGE . "507992") (:CACHE-CONTROL . "max-age=604800")
 (:CONTENT-TYPE . "text/html; charset=UTF-8")
 .....)
#<URI http://example.com/?user=token>
#<FLEXI-STREAMS:FLEXI-IO-STREAM {101D4A3723}>
T
"OK"

В частности, 4-е возвращаемое значение, URI, из которого приходит ответ:

      http://example.com/?user=token
Другие вопросы по тегам