using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json; using Website.Data.States.Git; using Website.Models.Git; namespace Website.Data { public class GitServerApi { private readonly HttpClient _client; private readonly string _domain; private readonly string _token; public GitServerApi(HttpClient client, string domain, string token) { _client = client; _domain = domain; _token = token; } public async Task> GetRepositories() { var response = await _client.GetStringAsync($"https://{_domain}/api/v1/users/rob/repos?token={_token}"); var states = JsonConvert.DeserializeObject>(response); return states.Select(state => new Repository(state)); } public async Task> GetBranches(string repository) { var response = await _client.GetStringAsync($"https://{_domain}/api/v1/repos/rob/{repository}/branches?token={_token}"); var states = JsonConvert.DeserializeObject>(response); return states.Select(state => new Branch(state)); } public async Task GetCommit(string repository, string hash) { var response = await _client.GetStringAsync($"https://{_domain}/api/v1/repos/rob/{repository}/commits/{hash}?token={_token}"); var state = JsonConvert.DeserializeObject(response); return new Commit(state); } } }