internal static string PerformAuthentication()

in FMLab/Odata4ConsoleApplication/AuthenticationHelper.cs [30:76]


        internal static string PerformAuthentication(Resources context, string aosUrl)
        {

            AcsResponse param = new AcsResponse();
            BrowserForm browserForm = new BrowserForm(aosUrl, param);
            WindowsForms.Application.Run(browserForm);

            HttpWebRequest httpRequest;
            HttpWebResponse httpResponse;
            CookieContainer cookieContainer = new CookieContainer();

            httpRequest = (HttpWebRequest)WebRequest.Create(aosUrl);
            httpRequest.Method = "POST";
            httpRequest.ContentType = "application/x-www-form-urlencoded";

            httpRequest.AllowAutoRedirect = true;
            httpRequest.CookieContainer = cookieContainer;

            StreamWriter writer = new StreamWriter(httpRequest.GetRequestStream(), Encoding.ASCII);
            writer.Write(param.GetAcsResponseString());
            writer.Flush();
            writer.Close();

            httpResponse = (HttpWebResponse)httpRequest.GetResponse();
            httpResponse.Close();

            StringBuilder retval = new StringBuilder();

            CookieCollection cookiesCollection = cookieContainer.GetCookies(new Uri(aosUrl));

            if (cookiesCollection.Count > 0)
            {
                foreach (Cookie c in cookiesCollection)
                {
                    retval.AppendFormat("{0}={1}; ", c.Name, c.Value);
                }

                //Remove the trailing "; "
                retval.Remove(retval.Length - 2, 2);
            }

            cookies = retval.ToString();

            context.SendingRequest2 += new EventHandler<SendingRequest2EventArgs>(OnSendingRequest);

            return cookies;
        }