diff --git a/ApiClient.cs/Program.cs b/ApiClient.cs/Program.cs new file mode 100644 index 00000000..7f2ccbe3 --- /dev/null +++ b/ApiClient.cs/Program.cs @@ -0,0 +1,120 @@ +using System.Text; +using Newtonsoft.Json; + +namespace ApiClient +{ + internal class Program + { + static readonly HttpClient _client = new(); + + static readonly string _hostname = "demo.credoid.com"; + + static async Task Main(string[] args) + { + var token = await LoginAsync(); + + _client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.access_token}"); + + await GetUsersAsync(); + } + + private static async Task LoginAsync() + { + var content = new StringContent(JsonConvert.SerializeObject(new { Username = "admin", Password = "admin" }), + Encoding.UTF8, "application/json"); + + var response = await _client.PostAsync($"https://{_hostname}/api/login", content); + + var result = await response.Content.ReadAsStringAsync(); + + var loginResponse = JsonConvert.DeserializeObject(result); + + return loginResponse; + } + + private static async Task GetUsersAsync() + { + var response = await _client.GetAsync($"https://{_hostname}/api/users"); + + var result = await response.Content.ReadAsStringAsync(); + + var users = JsonConvert.DeserializeObject>(result); + + foreach (var user in users) + { + Console.WriteLine($"{user.FirstName} {user.LastName} {user.EmployeeNumber}"); + } + } + } + + public class LoginResponse + { + public string access_token { get; set; } + } + + public class User + { + /// + /// Id + /// + public int Id { get; set; } + + /// + /// First name + /// + public string FirstName { get; set; } + + /// + /// Last name + /// + public string LastName { get; set; } + + /// + /// Company name + /// + public string CompanyName { get; set; } + + /// + /// Department name + /// + public string DepartmentName { get; set; } + + /// + /// User title name + /// + public string UserTitleName { get; set; } + + /// + /// Employee number + /// + public string EmployeeNumber { get; set; } + + /// + /// Email + /// + public string Email { get; set; } + + /// + /// Phone number + /// + public string PhoneNumber { get; set; } + + /// + /// Version + /// + public string Version { get; set; } + + public int? CompanyId { get; set; } + public int? DepartmentId { get; set; } + public int? TitleId { get; set; } + + /// + /// Activation date time + /// + public DateTime ActivationDate { get; set; } + + public DateTime? ExpirationDate { get; set; } + + public bool HasImage { get; set; } + } +} \ No newline at end of file