public CoresightHttpClient(Uri coresightBaseUri, CoresightRequestVerificationTokens tokens, ICredentials credentials = null)
        {
            _coresightBaseUri = coresightBaseUri;
            _tokens           = tokens;

            _clientHandler = credentials != null ?
                             new HttpClientHandler()
            {
                CookieContainer = _tokens.CookieContainer,
                Credentials     = credentials,
                PreAuthenticate = true
            } :
            new HttpClientHandler()
            {
                CookieContainer       = _tokens.CookieContainer,
                UseDefaultCredentials = true,
                PreAuthenticate       = true
            };
            HttpClient = new HttpClient(_clientHandler)
            {
                BaseAddress = _coresightBaseUri
            };

            HttpClient.DefaultRequestHeaders.Add("RequestVerificationToken", _tokens.HiddenInputToken);
            HttpClient.DefaultRequestHeaders.Add("Referer", _coresightBaseUri.OriginalString);
            HttpClient.DefaultRequestHeaders.Add("Host", _coresightBaseUri.Host);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets request verification tokens from the server
        /// </summary>
        /// <returns>An object with a field value and a cookie collection</returns>
        private async Task <CoresightRequestVerificationTokens> GetRequestVerificationTokensAsync()
        {
            CoresightRequestVerificationTokens tokens = new CoresightRequestVerificationTokens();

            using (var client = new CoresightHttpClient(_coresightBaseUri, tokens, _credentials))
            {
                Console.WriteLine("Getting Coresight verification tokens.");
                HttpResponseMessage response = await client.HttpClient.GetAsync("");

                Console.WriteLine("Response: {0} - {1}", response.StatusCode, response.ReasonPhrase);
                response.EnsureSuccessStatusCode();

                string content = await response.Content.ReadAsStringAsync();

                Regex tokenFinder = new Regex(@"(?:window\.Coresight\.RequestVerificationToken)\s*?=\s*'([\w:-]+?)'");
                tokens.HiddenInputToken = tokenFinder.Match(content).Groups[1].Captures[0].Value;

                return(tokens);
            }
        }