* Ground work for NET9 UWP switch. * Add launch settings for Wino.Mail * Added new test WAP project * fix platforms in slnx solution * ManagePackageVersionsCentrally set default * Fixing assets and couple issues with the new packaging project. * Add back markdown * Fix nuget warnings * FIx error in WAP about build tools * Add build.props with default language preview * Some AOT compilation progress. * More AOT stuff. * Remove deprecated protocol auth activation handler. * Fix remaining protocol handler for google auth. * Even more AOT * More more AOT fixes * Fix a few more AOT warnings * Fix signature editor AOT * Fix composer and renderer AOT JSON * Outlook Sync AOT * Fixing bundle generation and package signing. --------- Co-authored-by: Burak Kaan Köse <bkaankose@outlook.com>
58 lines
1.9 KiB
C#
58 lines
1.9 KiB
C#
using System;
|
|
using System.Net.Http;
|
|
using System.Text.Json;
|
|
using System.Threading.Tasks;
|
|
using Serilog;
|
|
using Wino.Core.Domain.Interfaces;
|
|
using Wino.Core.Domain.Models;
|
|
using Wino.Core.Domain.Models.AutoDiscovery;
|
|
|
|
namespace Wino.Core.Services
|
|
{
|
|
/// <summary>
|
|
/// We have 2 methods to do auto discovery.
|
|
/// 1. Use https://emailsettings.firetrust.com/settings?q={address} API
|
|
/// 2. TODO: Thunderbird auto discovery file.
|
|
/// </summary>
|
|
public class AutoDiscoveryService : IAutoDiscoveryService
|
|
{
|
|
private const string FiretrustURL = " https://emailsettings.firetrust.com/settings?q=";
|
|
|
|
// TODO: Try Thunderbird Auto Discovery as second approach.
|
|
|
|
public Task<AutoDiscoverySettings> GetAutoDiscoverySettings(AutoDiscoveryMinimalSettings autoDiscoveryMinimalSettings)
|
|
=> GetSettingsFromFiretrustAsync(autoDiscoveryMinimalSettings.Email);
|
|
|
|
private static async Task<AutoDiscoverySettings> GetSettingsFromFiretrustAsync(string mailAddress)
|
|
{
|
|
using var client = new HttpClient();
|
|
var response = await client.GetAsync($"{FiretrustURL}{mailAddress}");
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
return await DeserializeFiretrustResponse(response);
|
|
else
|
|
{
|
|
Log.Warning($"Firetrust AutoDiscovery failed. ({response.StatusCode})");
|
|
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private static async Task<AutoDiscoverySettings> DeserializeFiretrustResponse(HttpResponseMessage response)
|
|
{
|
|
try
|
|
{
|
|
var content = await response.Content.ReadAsStringAsync();
|
|
|
|
return JsonSerializer.Deserialize(content, DomainModelsJsonContext.Default.AutoDiscoverySettings);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Error(ex, "Failed to deserialize Firetrust response.");
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
}
|