Пример #1
0
        /// <summary>
        /// Отправляет GET запрос на API
        /// </summary>
        /// <typeparam name="T">Класс, объект которого отправляется</typeparam>
        /// <param name="path"></param>
        /// <returns>Асинхронную задачу с экземпляром класса T</returns>
        public static async Task <T> GetProductAsync <T>(string path)
        {
            T product = default;

            try
            {
                HttpClient client = new HttpClient
                {
                    BaseAddress = new Uri(BaseAddress)
                };
                client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36");
                m3md2.StaticVariables.Diagnostics.ProgramInfo += $"{DateTime.Now.ToLongTimeString()}(ApiRequest) Отправляю GET запрос на {path}\r\n";
                HttpResponseMessage response = await client.GetAsync(path);

                if (response.IsSuccessStatusCode)
                {
                    m3md2.StaticVariables.Diagnostics.ProgramInfo += $"{DateTime.Now.ToLongTimeString()}(ApiRequest) Запрос завершился успешно, присваиваю значение для возврата\r\n";
                    product = await response.Content.ReadAsAsync <T>();
                }
                return(product);
            }
            catch (Exception ex)
            {
                OnRequestFailed?.Invoke(ex);
            }
            return(product);
        }
Пример #2
0
        /// <summary>
        /// Отправляет POST запрос на API и получает ответное значение
        /// </summary>
        /// <typeparam name="T">Класс, объект которого отправляется</typeparam>
        /// <typeparam name="T1">Класс, объект которого получается</typeparam>
        /// <param name="product">Экземпляр клаасса T для отправки</param>
        /// <param name="apilist">Путь в формате api/v{apiversion}/{apilist}</param>
        /// <returns>Асинхронную задачу с Uri этой операции</returns>
        public static async Task <T1> CreateProductAsync <T, T1>(T product, string apilist)
        {
            T1 returnproduct             = default;
            HttpResponseMessage response = null;

            try
            {
                HttpClient client = new HttpClient
                {
                    BaseAddress = new Uri(BaseAddress)
                };
                client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36");
                string json = new JavaScriptSerializer().Serialize(product);
                m3md2.StaticVariables.Diagnostics.ProgramInfo += $"{DateTime.Now.ToLongTimeString()}(ApiRequest) Экземпляр класса преобразован в JSON строку {json}\r\n";
                m3md2.StaticVariables.Diagnostics.ProgramInfo += $"{DateTime.Now.ToLongTimeString()}(ApiRequest) Отправляю POST запрос на {apilist}\r\n";
                response = await client.PostAsync($"api/{apilist}", new StringContent(json, Encoding.UTF8, "application/json"));

                m3md2.StaticVariables.Diagnostics.ProgramInfo += $"{DateTime.Now.ToLongTimeString()}(ApiRequest) Ответ от API {(response.IsSuccessStatusCode ? "Обработано успешно" : $"Что-то пошло не так {await response.Content.ReadAsStringAsync()}")}\r\n";
                response.EnsureSuccessStatusCode();
                returnproduct = await response.Content.ReadAsAsync <T1>();
            }
            catch (Exception ex)
            {
                OnRequestFailed?.Invoke(ex);
            }
            return(returnproduct);
        }
Пример #3
0
        public async static Task <T> KeepAliveGetProduct <T>(string path)
        {
            T product = default;

            try
            {
                HttpClient client = new HttpClient
                {
                    BaseAddress = new Uri(BaseAddress)
                };
                m3md2.StaticVariables.Diagnostics.ProgramInfo += $"{DateTime.Now.ToLongTimeString()}(ApiRequest) Отправляю keep-alive GET запрос на {path}\r\n";
                client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36");
                client.DefaultRequestHeaders.Connection.Clear();
                client.DefaultRequestHeaders.Connection.ParseAdd("keep-alive");
                client.DefaultRequestHeaders.ConnectionClose = false;
                client.Timeout = new TimeSpan(1, 0, 0, 0);
                HttpResponseMessage response = await client.GetAsync(path);

                if (response.IsSuccessStatusCode)
                {
                    product = await response.Content.ReadAsAsync <T>();
                }
                return(product);
            }
            catch (Exception ex)
            {
                OnRequestFailed?.Invoke(ex);
            }
            return(product);
        }
Пример #4
0
        /// <summary>
        /// Отправляет DELETE запрос на API по пути path без типизации
        /// </summary>
        /// <param name="path">Путь API</param>
        /// <returns>Асинхронную задачу со статусом операции</returns>
        public static async Task <HttpStatusCode> DeleteProductsAsync(string path)
        {
            HttpResponseMessage response = null;

            try
            {
                HttpClient client = new HttpClient
                {
                    BaseAddress = new Uri(BaseAddress)
                };
                client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36");
                m3md2.StaticVariables.Diagnostics.ProgramInfo += $"{DateTime.Now.ToLongTimeString()}(ApiRequest) Отправляю DELETE запрос на {path}\r\n";
                response = await client.DeleteAsync(path);

                m3md2.StaticVariables.Diagnostics.ProgramInfo += $"{DateTime.Now.ToLongTimeString()}(ApiRequest) Ответ от API {(response.IsSuccessStatusCode ? "Обработано успешно" : $"Что-то пошло не так {await response.Content.ReadAsStringAsync()}")}\r\n";
            }
            catch (Exception ex)
            {
                OnRequestFailed?.Invoke(ex);
            }
            return(response?.StatusCode ?? default);
        }
Пример #5
0
        public void onRequestFailed(string requestId, string errorMessage)
        {
            if (this.requestId.Equals(requestId))
            {
                response = null;

                if (string.IsNullOrEmpty(errorMessage))
                {
                    errorMessage = "There is no more data";
                }

                if (errorMessage.StartsWith(
                        "Reason='unsupported scope', Description=No data found for symbolID="))
                {
                    OnNoTicks?.Invoke(this, EventArgs.Empty);
                }
                else
                {
                    OnRequestFailed?.Invoke(this, new RequestFailedArgs(errorMessage));
                }

                syncResponseEvent.Set();
            }
        }
 public void RequestFailed()
 {
     OnRequestFailed?.Invoke();
 }