GitHub: Как получить собранный релиз из Latest в программе на C#?

Собственно сабж: есть графическая оболочка, управляющая консольным приложением. Само консольное приложение регулярно обновляется. Каждый раз перепаковывать и выкладывать обновленную версию надоело. Есть ли вариант получения готового релиза из Latest с GitHub, учитывая что архивы в зависимости от версии имеют различные имена и разные теги?


Ответы (1 шт):

Автор решения: Stealch

Все оказалось до безобразия просто и давно расписано. Получение последнего релиза из GitHub разными методами (cURL, JS, GitHub CLI) https://docs.github.com/en/rest/releases/releases?apiVersion=2022-11-28#get-the-latest-release cURL:

curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: Bearer <YOUR-TOKEN>" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/OWNER/REPO/releases/latest

Код на C# будет выглядеть так:

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.github+json"));//ПРИНЯТЬ заголовок
string request = "https://api.github.com/repos/OWNER/REPO/releases/latest";
httpClient.DefaultRequestHeaders.Add("User-Agent", ".NET Foundation Repository Reporter"); // НЕОБХОДИМО, ИНАЧЕ ОШИБКА 403
var response = httpClient.GetStringAsync(request);
var jArray = await response;
var url = JObject.Parse(jArray).SelectToken("assets[0].browser_download_url").ToString();// ПАРСИМ URL
→ Ссылка