public static async Task <HttpResponseMessage> RecoveryConfirmGetAndPostFormAsync(
            this HttpClient client,
            string confirmUrl,
            string newPassword,
            HttpResponseMessage prevResponse = null)
        {
            HttpResponseMessage getResponse = client.GetAsync(confirmUrl).Result;

            getResponse.EnsureSuccessStatusCode();

            IHtmlDocument doc = await getResponse.Content
                                .ReadAsHtmlDocumentAsync();

            Dictionary <string, string> form = doc.GetFormInputs();

            form["Password"]        = newPassword;
            form["PasswordConfirm"] = newPassword;

            HttpResponseMessage postResponse = await client
                                               .PostAsync(doc.GetFormAction(), form, getResponse);

            postResponse.StatusCode.Should().Be(HttpStatusCode.Found);

            postResponse.Headers.Location.ToString().Should()
            .StartWith("/connect/authorize/callback");

            return(postResponse);
        }
        public static async Task <HttpResponseMessage> LoginGetAndPostFormAsync(
            this HttpClient client,
            string emailAddress,
            string password,
            bool rememberMe = false,
            HttpResponseMessage prevResponse = null)
        {
            HttpResponseMessage getResponse = await client.GetAsync(
                $"/login?returnUrl={Constants.ReturnUrl}",
                prevResponse
                );

            getResponse.EnsureSuccessStatusCode();
            string html = await getResponse.Content.ReadAsStringAsync();

            // 5. Fill out the login form and submit
            IHtmlDocument doc = await getResponse.Content
                                .ReadAsHtmlDocumentAsync();

            Dictionary <string, string> form = doc.GetFormInputs();

            form["Email"]         = emailAddress;
            form["Password"]      = password;
            form["RememberLogin"] = rememberMe ? "true" : "false";

            HttpResponseMessage postResponse = await client
                                               .PostAsync(doc.GetFormAction(), form, getResponse);

            return(postResponse);
        }
        public static async Task <HttpResponseMessage> ConstentPostFormAsync(
            this HttpClient client,
            bool rememberMe,
            HttpResponseMessage formGetResponse)
        {
            formGetResponse.StatusCode.Should().Be(HttpStatusCode.Found);
            HttpResponseMessage authorizeResponse = await client
                                                    .FollowRedirect(formGetResponse);

            authorizeResponse.StatusCode.Should().Be(HttpStatusCode.Found);
            HttpResponseMessage constentGetResponse = await client
                                                      .FollowRedirect(authorizeResponse);

            // just submit form as is
            IHtmlDocument doc = await constentGetResponse.Content
                                .ReadAsHtmlDocumentAsync();

            Dictionary <string, string> form = doc.GetFormInputs();
            //form["RememberLogin"] = rememberMe ? "true" : "false";

            HttpResponseMessage constentPostResponse = await client
                                                       .PostAsync(doc.GetFormAction(), form, constentGetResponse);

            constentPostResponse.EnsureSuccessStatusCode();
            return(constentPostResponse);
        }
        public static async Task <HttpResponseMessage> RegisterConfirmGetAndPostFormAsync(
            this HttpClient client,
            string confirmUrl,
            string password = null,
            HttpResponseMessage prevResponse = null)
        {
            HttpResponseMessage getResponse = client.GetAsync(confirmUrl).Result;

            getResponse.EnsureSuccessStatusCode();

            IHtmlDocument doc = await getResponse.Content
                                .ReadAsHtmlDocumentAsync();

            Dictionary <string, string> form = doc.GetFormInputs();

            if (!String.IsNullOrWhiteSpace(password))
            {
                form["Password"]        = password;
                form["PasswordConfirm"] = password;
            }

            HttpResponseMessage postResponse = await client
                                               .PostAsync(doc.GetFormAction(), form, getResponse);

            return(postResponse);
        }
Example #5
0
        public static async Task <HttpResponseMessage> RecoveryPostFormAsync(
            this HttpClient client,
            string emailAddress,
            HttpResponseMessage formGetResponse)
        {
            IHtmlDocument doc = await formGetResponse.Content
                                .ReadAsHtmlDocumentAsync();

            Dictionary <string, string> form = doc.GetFormInputs();

            form["Email"] = emailAddress;

            HttpResponseMessage response = await client
                                           .PostAsync(doc.GetFormAction(), form, formGetResponse);

            response.EnsureSuccessStatusCode();

            return(response);
        }