private async Task <int?> GetProjectIdInternal(string httpUrlToRepo) { var page = 1; var url = $"{_settings.Url}/v4/projects"; var headers = new { PRIVATE_TOKEN = _settings.Token }; while (true) { var data = new { page, per_page = 100, simple = true }; var projects = await FlurlHelper.GetJsonAsync <IEnumerable <Project> >(url, data, headers); if (!projects.Any()) { return(null); } var project = projects.FirstOrDefault(f => f.http_url_to_repo.StartsWith(httpUrlToRepo, StringComparison.CurrentCultureIgnoreCase)); if (project != null) { return(project.id); } page++; } }
public async Task <Stream> GetFileStream(string httpUrlToRepo, string refName, string path) { var projectId = await GetProjectId(httpUrlToRepo); if (!projectId.HasValue) { throw new Exception($"Project id was not found for {httpUrlToRepo}"); } var url = $"{_settings.Url}/v4/projects/{projectId}/repository/files/{HttpUtility.UrlEncode(path)}/raw?ref={refName}"; var headers = new { PRIVATE_TOKEN = _settings.Token }; return(await FlurlHelper.GetFileStream(url, headers)); }
public async Task AddTag(string httpUrlToRepo, string refName, string tagName, string message, string releaseDescription) { var projectId = await GetProjectId(httpUrlToRepo); if (!projectId.HasValue) { throw new Exception($"Project id was not found for {httpUrlToRepo}"); } var url = $"{_settings.Url}/v4/projects/{projectId}/repository/tags"; var headers = new { PRIVATE_TOKEN = _settings.Token }; var data = new Dictionary <string, object> { { "ref", refName }, { "tag_name", tagName }, { "message", message }, { "release_description", releaseDescription } }; await FlurlHelper.PostJsonAsync(url, data, headers); }
private async Task <Project> GetProject(int?projectId) { if (!projectId.HasValue) { return(null); } var url = $"{_settings.Url}/v4/projects/{projectId}"; var headers = new { PRIVATE_TOKEN = _settings.Token }; var data = new { simple = true }; try { return(await FlurlHelper.GetJsonAsync <Project>(url, data, headers)); } catch { Console.WriteLine($"{url} not found"); } return(null); }