using Microsoft.Extensions.Logging; using System; using System.Threading.Tasks; using Twilio.Clients; using Twilio.Rest.Lookups.V1; namespace Knoks.Framework.Services { public class TwilioPhoneService : IPhoneService { private ILogger _logger; public TwilioRestClient _twilioRestClient { get; } public TwilioPhoneService(ILogger logger, TwilioPhoneSettings settings) { _logger = logger; _twilioRestClient = new TwilioRestClient(settings.AccountSid, settings.AuthToken); } public async Task Lookup(string number, string countryCode = null) { try { var res = await PhoneNumberResource.FetchAsync(new Twilio.Types.PhoneNumber(number), countryCode, client: _twilioRestClient); return new PhoneNumber { OriginalFormat = number, NationalFormat = res.NationalFormat, E164Format = res.PhoneNumber.ToString(), CountryCode2 = res.CountryCode }; } catch (Exception ex) { _logger.LogError(ex.Message); return null; } } } }