Exemple #1
0
        public RequestMessage <string> PingRequisition()
        {
            var resposta = new RequestMessage <string>
            {
                MethodApi = "GET",
            };

            try
            {
                //Cria cliente Rest
                var client = new RestClient(ServerUri)
                {
                    Timeout = 222222
                };
                resposta.UrlApi = client.BaseUrl.AbsoluteUri;

                //Determina o tipo de requisição que será feito
                var request = new RestRequest("GET");

                //Executa requisição na API
                var result = (RestResponse)client.Execute(request);

                resposta.StatusCode = result.StatusCode;

                // Caso o server esteja offline
                if (resposta.StatusCode == 0)
                {
                    resposta.StatusCode       = HttpStatusCode.InternalServerError;
                    resposta.TechnicalMessage = result.ErrorMessage;
                    resposta.Message          = $"Estamos sem internet";
                    return(resposta);
                }

                try
                {
                    resposta.Content = result.Content;
                    resposta.Message = "Temos Internet";
                }
                catch (Exception ex)
                {
                    resposta.Message          = "O conteúdo não condiz com o esperado";
                    resposta.TechnicalMessage = ex.Message;
                }

                return(resposta);
            }
            catch (Exception ex) when(ex.Message == "URI inválido: não foi possível determinar o formato do URI." ||
                                      ex.Message == "Invalid URI: The format of the URI could not be determined.")
            {
                resposta.TechnicalMessage = ex.Message;
                resposta.UrlApi           = ServerUri;
                resposta.Message          = $"A URI informada é inválida ou você não possui conexão com a internet, por favor verifique!\nURI: {resposta.UrlApi}";
                resposta.StatusCode       = HttpStatusCode.InternalServerError;
                return(resposta);
            }
            catch (Exception ex)
            {
                resposta.TechnicalMessage = ex.Message;
                resposta.UrlApi           = ServerUri;
                resposta.Message          = $"Falha na requisição {ex.Message}";
                resposta.StatusCode       = HttpStatusCode.InternalServerError;
                return(resposta);
            }
        }
Exemple #2
0
        /// <summary>
        /// Validações Request
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="result"></param>
        /// <param name="resposta"></param>
        /// <returns></returns>
        protected RequestMessage <T> ValidacoesRequest <T>(RestResponse result, RequestMessage <T> resposta)
        {
            //Avalia retorno da chamada
            resposta.StatusCode = result.StatusCode;

            // Caso o server esteja offline
            if (resposta.StatusCode == 0)
            {
                resposta.StatusCode       = HttpStatusCode.InternalServerError;
                resposta.TechnicalMessage = result.ErrorMessage;
                resposta.Message          = $"Verifique se a api está ativada. Não foi possível conectar com o OEBS. \n{resposta.UrlApi}";
                return(resposta);
            }

            if (resposta.StatusCode == HttpStatusCode.ServiceUnavailable)
            {
                resposta.StatusCode       = HttpStatusCode.InternalServerError;
                resposta.TechnicalMessage = result.ErrorMessage;
                resposta.Message          = $"Verifique se a api está disponível. Não foi possível conectar com o OEBS. \n{resposta.UrlApi}";
                return(resposta);
            }

            if (result.StatusCode == HttpStatusCode.NotFound)
            {
                resposta.Message          = "Não foi encontrado";
                resposta.TechnicalMessage = result.StatusDescription;
                return(resposta);
            }

            if (!result.ContentType.Contains("application/json"))
            {
                resposta.StatusCode       = HttpStatusCode.BadRequest;
                resposta.TechnicalMessage = result.StatusDescription + result.Content;
                resposta.Message          = "Resposta inválida! \nEsperava-se um retorno em formato JSON";
                return(resposta);
            }



            if (result.StatusCode != HttpStatusCode.OK && result.StatusCode != HttpStatusCode.Accepted && result.Content != null)
            {
                resposta.TechnicalMessage = result.ErrorMessage;
                resposta.Message          = "Ocorreu uma falha com o WebService -" + result.ResponseUri.AbsoluteUri;

                return(resposta);
            }

            //Deserializa o objeto e retorna a entidade solicitada.
            try
            {
                resposta.Content = JsonConvert.DeserializeObject <T>(result.Content, new JsonSerializerSettings
                {
                    NullValueHandling = NullValueHandling.Ignore
                });
            }
            catch (Exception ex)
            {
                resposta.Message          = "O conteúdo não condiz com o esperado";
                resposta.TechnicalMessage = ex.Message;
            }

            return(resposta);
        }