예제 #1
0
        private async Task Initialize(string url, RequestMethod method, string postData = "")
        {
            Exception = null;

            string newurl = GetHashedURL(url + "&format=keypair");

            //Debug.Print(newurl);
            //Intentional

            if (method == RequestMethod.POST)
            {
                this.url = newurl;
                PostData = postData;

                POSTRequst();
            }
            else
            {
                var data = string.Empty;
                try
                {
                    var request = (HttpWebRequest)WebRequest.Create(newurl);
                    request.Method = method.ToString();
                    var response = (HttpWebResponse)await request.GetResponseAsync();

                    data = new StreamReader(response.GetResponseStream()).ReadToEnd();
                }
                catch (Exception ex)
                {
                    API.APICallCount -= 1;
                    CallFails?.Invoke(ex);
                }

                if (!string.IsNullOrEmpty(data))
                {
                    CallSucceeded?.Invoke(data);
                    CallSub?.Invoke(data);
                }
            }

            API.APICallCount += 1;
        }
예제 #2
0
        private async Task POSTRequst()
        {
            string gotData        = "";
            bool   gotDataSuccess = false;

            try
            {
                var request = (HttpWebRequest)WebRequest.Create(url);
                request.AllowWriteStreamBuffering = true;
                request.Method = "POST";
                var post = "data=" + PostData;
                request.ContentLength = post.Length;
                request.ContentType   = "application/x-www-form-urlencoded";
                request.ServicePoint.Expect100Continue = false;

                var writer = new StreamWriterLock(await request.GetRequestStreamAsync());
                writer.Write(post);
                writer.Close();
                var response = (HttpWebResponse)await request.GetResponseAsync();

                gotData        = new StreamReader(response.GetResponseStream()).ReadToEnd();
                gotDataSuccess = true;
            }
            catch (Exception ex) { CallFails?.Invoke(ex); }
            finally { API.APICallCount -= 1; }

            //Handle data outside of the try...catch because the result function could throw an error:
            if (gotDataSuccess)
            {
                if (CallSub != null)
                {
                    CallSub(gotData);
                    CallSucceeded?.Invoke(gotData);
                }
            }
        }
예제 #3
0
 private void CallSucceeded(CallSucceeded call)
 {
     _pendingPayments.Add(call.CallId);
 }