예제 #1
0
        public List <Cookie> Authenticate(string username, string password, int timeout = DefaultTimeoutInMilliseconds)
        {
            if (!NetworkInterface.GetIsNetworkAvailable())
            {
                throw new LoginFailedException("The network is unavailable. Check your network settings and please try again.");
            }

            var request = AwfulWebRequest.CreatePostRequest(LOGIN_URL);

            var signal = new AutoResetEvent(false);
            var result = request.BeginGetRequestStream(callback => { signal.Set(); },
                                                       request);

            signal.WaitOne();

            bool uploaded = UploadLoginData(result, username, password);

            if (!uploaded)
            {
                throw new LoginFailedException();
            }

            List <Cookie> success = ProcessLoginResults(result.AsyncState as HttpWebRequest,
                                                        timeout);

            if (success != null)
            {
                OnLoginSuccessful(this, username, success);
            }

            return(success);
        }
예제 #2
0
        private bool SendPost(string postData, string url)
        {
            bool result      = false;
            var  signal      = new AutoResetEvent(false);
            var  httpRequest = AwfulWebRequest.CreatePostRequest(url);

            //Logger.AddEntry("Send Post start...");

            // Synchronous Post Request!
            var state = httpRequest.BeginGetRequestStream(callback => { signal.Set(); }, httpRequest);

            signal.WaitOne();
            BeginPostRequest(postData, state);

            // Synchronous Post Response!
            var request = state.AsyncState as WebRequest;

            state = request.BeginGetResponse(callback => { signal.Set(); }, request);
            signal.WaitOne();

            result = ProcessPostResponse(state);
            return(result);
        }