private static async Task <string> GetSignupMail(IMailHost mailHost, string mailAddress) { var signupMail = await mailHost.GetMegaSignupMail(mailAddress).ConfigureAwait(false); var start = signupMail.IndexOf(">https://mega.nz/#confirm", 0, StringComparison.Ordinal); if (start < 0) { return(string.Empty); } start += 1; var end = signupMail.IndexOf("</a>", start, StringComparison.Ordinal); if (end < 0) { return(string.Empty); } var ignoreWords = new List <string> { "<br>", "</br>", "<wbr>", "</wbr>", "<br />", "<wbr />" }; var ret = signupMail.Substring(start, end - start); var regex = new Regex(string.Join("|", ignoreWords.Select(s => Regex.Escape(s)))); return(regex.Replace(ret, string.Empty)); }
private async Task TestSignup(IMailHost host) { MEGA.Password = "******"; var account = await MEGA.CreateNewAccount(host); if (!string.IsNullOrEmpty(account)) { Trace.WriteLine(account); } Assert.IsTrue(!string.IsNullOrEmpty(account)); }
private static async Task <string> GetValidationUrl(IMailHost mailHost, string mailAddress) { return(await Policy .Handle <Exception>() .OrResult <string>(string.IsNullOrEmpty) .WaitAndRetryAsync(6, retryCount => TimeSpan.FromSeconds(20 * retryCount), (exception, timeSpan, context) => { Trace.WriteLine(timeSpan.ToString()); }) .ExecuteAsync(() => GetSignupMail(mailHost, mailAddress))); }
public static async Task <string> CreateNewAccount(IMailHost mailHost) { var mailAddress = await mailHost.GetMailAddress(); if (string.IsNullOrEmpty(mailAddress)) { return(string.Empty); } var verifyCommand = await RegisterAccount(mailAddress); if (string.IsNullOrEmpty(verifyCommand)) { return(string.Empty); } var validationUrl = await GetValidationUrl(mailHost, mailAddress); return(await VerifyAccount(verifyCommand, validationUrl) ? mailAddress : string.Empty); }