using DigitalData.Core.Legacy.Client; using Microsoft.Extensions.Options; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; using WindreamHub.Legacy.Client.Models.Authentication; using WindreamHub.Legacy.Client.Models; using WindreamHub.Legacy.Client.Route; using WindreamHub.Legacy.Client.Routes; namespace WindreamHub.Legacy.Client { public class WindreamClientService : HttpClientService { public WindreamClientService(SubscriptionsRouteService subscriptions, SystemDetailsRouteService systemDetails, AuthenticationRouteService authentication, HttpClient client, CookieContainer cookieContainer, IOptions clientOptions) : base(client, cookieContainer, clientOptions) { Subscriptions = subscriptions; SystemDetails = systemDetails; Authentication = authentication; } public SubscriptionsRouteService Subscriptions { get; } public SystemDetailsRouteService SystemDetails { get; } public AuthenticationRouteService Authentication { get; } public DocumentsRouteService Documents { get; } public async Task AuthenticateAsync(ICredential credential) { _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credential.AuthorizationHeader); var res = await Authentication.IsValidUser(); return res.Ok && res.Data.IsValidUser; } public async Task AuthenticateAsync(string domain, string name, string password) { var uCredential = new UserCredential(domain, name, password); return await AuthenticateAsync(uCredential); } public async Task AuthenticateAsync(string authorizationHeader) { var uCredential = new Base64Credential(authorizationHeader); return await AuthenticateAsync(uCredential); } } }