using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
public class ApiClient
{
private readonly HttpClient _httpClient;
public ApiClient(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task<string> LoginAndGetTokenAsync(string apiKey, string username, string password)
{
var loginUrl = "https://api.example.com/login"; // Your API login endpoint
var loginData = new
{
ApiKey = apiKey,
Username = username,
Password = password
};
var requestContent = new StringContent(JsonSerializer.Serialize(loginData), Encoding.UTF8, "application/json");
var response = await _httpClient.PostAsync(loginUrl, requestContent);
response.EnsureSuccessStatusCode();
var responseContent = await response.Content.ReadAsStringAsync();
var token = JsonSerializer.Deserialize<TokenResponse>(responseContent).Token;
return token;
}
public async Task<UserAccountInfo> GetUserAccountInfoAsync(string token)
{
var userInfoUrl = "https://api.example.com/userinfo"; // Your API user info endpoint
_httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", token);
var response = await _httpClient.GetAsync(userInfoUrl);
response.EnsureSuccessStatusCode();
var responseContent = await response.Content.ReadAsStringAsync();
var userAccountInfo = JsonSerializer.Deserialize<UserAccountInfo>(responseContent);
return userAccountInfo;
}
}
public class TokenResponse
{
public string Token { get; set; }
}
public class UserAccountInfo
{
public string Username { get; set; }
public string Email { get; set; }
// Add other properties as needed
}