Пример #1
0
 public EncryptedPayloadWrapper(string received)
 {
     if (!string.IsNullOrEmpty(received))
     {
         EncryptedPayloadWrapper <T> enc = BTCWalletHelpers.ObjectFromEncryptedJSON <EncryptedPayloadWrapper <T> >(received);
         this.AuthKey       = enc.AuthKey;
         this.Payload       = enc.Payload;
         this.WrappedObject = BTCWalletHelpers.ObjectFromEncryptedJSON <T>(this.Payload);
     }
 }
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="relativeURI">Simple relative URI, without /api-v1/</param>
        /// <param name="requestData"></param>
        /// <returns></returns>
        public static T ExecuteRequest <T>(string host, HttpMethod verb, string relativeURI, object requestData) where T : WalletResponseData, new()
        {
            T ret = null;

            using (var client = new HttpClient())
            {
                try
                {
                    client.BaseAddress = new Uri(host); //"http://ldvwalletbtc.azurewebsites.net/");

                    client.Timeout = new TimeSpan(0, 30, 0);
                    string walletRequest = "";
                    //Type tSource = requestData.GetType();

                    HttpResponseMessage result;
                    if (verb == HttpMethod.Post)
                    {
                        EncryptedPayloadWrapper <object> wrapper = new EncryptedPayloadWrapper <object>(requestData);
                        walletRequest = wrapper.ToString();
                        var data = new StringContent(walletRequest, System.Text.Encoding.UTF8);

                        result = client.PostAsync(relativeURI, data).Result;
                    }
                    else if (verb == HttpMethod.Get)
                    {
                        result = client.GetAsync(relativeURI).Result;
                    }
                    else
                    {
                        throw new NotImplementedException("Verb not implemented yet");
                    }
                    string content = result.Content.ReadAsStringAsync().Result;

                    try
                    {
                        EncryptedPayloadWrapper <T> retWrap = new EncryptedPayloadWrapper <T>(content);
                        ret = retWrap.WrappedObject;
                        ret.IsSuccessStatusCode = result.IsSuccessStatusCode;
                        //ret.StatusCode = (int)result.StatusCode;
                        ret.DateTimeResponseArrived = new DateTime(DateTime.UtcNow.Ticks, DateTimeKind.Utc);
                    }
                    catch (Exception exx)
                    {
                        exx.ToString();
                        if (ret == null)
                        {
                            ret = new T();
                        }
                        ret.IsSuccessStatusCode     = false;
                        ret.DateTimeResponseArrived = new DateTime(DateTime.UtcNow.Ticks, DateTimeKind.Utc);
                        ret.StatusCode = -1;
                    }
                }
                catch (Exception ex)
                {
                    ex.ToString();
                    if (ret == null)
                    {
                        ret = new T();
                    }
                    ret.IsSuccessStatusCode     = false;
                    ret.DateTimeResponseArrived = new DateTime(DateTime.UtcNow.Ticks, DateTimeKind.Utc);
                    ret.StatusCode = -1;
                }
            }
            return(ret);
        }