public async Task<MethodResult<LoginResult>> LoginAsync(ILoginOption loginOption)
{
var ldapLogin = loginOption as LdapLoginOption;
if (ldapLogin != null)
{
return await LoginWithLdapAsync(ldapLogin.Username, ldapLogin.Password).ConfigureAwait(false);
}
var emailLogin = loginOption as EmailLoginOption;
if (emailLogin != null)
{
return await LoginWithEmailAsync(emailLogin.Email, emailLogin.Password).ConfigureAwait(false);
}
var usernameLogin = loginOption as UsernameLoginOption;
if (usernameLogin != null)
{
return await LoginWithUsernameAsync(usernameLogin.Username, usernameLogin.Password).ConfigureAwait(false);
}
var resumeLogin = loginOption as ResumeLoginOption;
if (resumeLogin != null)
{
return await LoginResumeAsync(resumeLogin.Token).ConfigureAwait(false);
}
throw new NotSupportedException($"The given login option `{loginOption.GetType()}` is not supported.");
}