jira rest-api прикрепить файл для выдачи с помощью powershell - PullRequest
1 голос
/ 18 февраля 2020

Я хочу прикрепить файл к проблеме jira, я могу сделать это с почтальоном, но пробовал несколько способов без прорыва. мой код выглядит следующим образом

function ConvertTo-Base64($string) {
$bytes  = [System.Text.Encoding]::UTF8.GetBytes($string);
$encoded = [System.Convert]::ToBase64String($bytes);
return $encoded;
}

function Get-HttpBasicHeader([string]$username, [string]$password, $Headers = @{}) {
    $b64 = ConvertTo-Base64 "$($username):$($Password)"
    $Headers["Authorization"] = "Basic $b64"
    $Headers["X-Atlassian-Token"] = "nocheck"
return $Headers
}



$restapiuri = "https://xxxx.xxxx.com/rest/api//2/issue/test-8442/attachments"
$headers = Get-HttpBasicHeader "xxxxxx" "xxxxxxxx"


$myfile = "C:\TEMP\out.txt"
$fileBytes = [System.IO.File]::ReadAllBytes($myfile);
$fileEnc = [System.Text.Encoding]::GetEncoding('UTF-8').GetString($fileBytes);
$boundary = [guid]::NewGuid().ToString()
$LF = "`r`n";



$body = '(
            "--$boundary",
            "Content-Disposition: form-data; name=`"fil`"; filename=`"out.txt`"",
            "Content-Type: application/octet-stream$LF",
            $fileEnc,
            "--$boundary--$LF"
           ) -join $LF

 '


Invoke-RestMethod -uri $restapiuri  -Headers $headers  -Method POST -ContentType "multipart/form-data; boundary=`"$boundary`"" -Body $body

В почтовом я делаю почтовый запрос с Основа авторизации c Заголовок заголовка аутентификации X-Atlassian-Token = o-check Content -Type = multipart / form-data Тело значения ключа данных формы файла filepath

PowerShell не возвращает никаких ошибок, но и не прикрепляет ни одного файла. Я пробовал несколько примеров без удачи, поэтому если у кого-нибудь из вас есть какие-либо идеи по поводу того, чтобы сделать это в PowerShell, я был бы рад.

Я на версии PowerShell

Major Minor Build Revision


5 1 14409 1018

1 Ответ

1 голос
/ 19 февраля 2020

Я нашел следующее, которое выглядит подходящим для этого сценария.

function Upload-JiraFile($jiraTicket, $filepath, $authorization)
{
    $wc = new-object System.Net.WebClient
    $wc.Headers.Add("Authorization", $authorization)
    $wc.Headers.Add("X-Atlassian-Token", "nocheck") 
    $wc.UploadFile("$URIPath/issue/$jiraTicket/attachments", $filepath)
}

Вот как вы можете использовать его с минимальной модификацией кода, который вы имеете сегодня:

$URIPath = "https://xxxx.xxxx.com/rest/api/2"
Upload-JiraFile -JiraTicket test-8442 -FilePath c:\temp\MyJpg.jpg `
   -Authorization $Headers["Authorization"]

Выдержка из этой темы.

...