Skip to content
Snippets Groups Projects
UserServiceClient.cs 1.61 KiB
Newer Older
using GatewayAPI.Models;
using System.Net.Http;
using System.Net.Http.Json;
using System.Text.Json;

namespace GatewayAPI.Clients.UserService
{
    public class UserServiceClient : IUserServiceClient
    {
        private readonly HttpClient httpClient;
        private static readonly string API_PATH = "api/User";

        public UserServiceClient(HttpClient httpClient)
        {
            this.httpClient = httpClient;
        }

        public async Task<HttpResponseMessage> GetUserAsync(int id)
        {
            return await httpClient.GetAsync($"{API_PATH}/{id}");
        }

        public async Task<HttpResponseMessage> GetUsersAsync()
        {
            return await httpClient.GetAsync($"{API_PATH}");
        }

        public async Task<HttpResponseMessage> RegisterUserAsync(UserRegistration user)
        {
            return await httpClient.PostAsJsonAsync($"{API_PATH}/register", user);
        }

        public async Task<HttpResponseMessage> LoginUserAsync(UserLogin user)
        {
            return await httpClient.PostAsJsonAsync($"{API_PATH}/login", user);
        }

        public async Task<HttpResponseMessage> AuthorizeUserAsync()
        {
            return await httpClient.PostAsync($"{API_PATH}/authorize", null);
        }

        public async Task<HttpResponseMessage> LogoutUserAsync()
        {
            return await httpClient.PostAsync($"{API_PATH}/logout", null);
        }

        public async Task<HttpResponseMessage> UpdateUserAsync(int id, UserUpdateInfo updateInfo)
        {
            return await httpClient.PatchAsJsonAsync($"{API_PATH}/{id}", updateInfo);
        }