コード例 #1
0
        /// <summary>
        /// Grava as informações de uma rota de Url.
        /// </summary>
        /// <param name="model">Informações da rota URL para gravação.</param>
        public void Gravar(RotaUrlModelApi model)
        {
            try
            {
                string baseURL = _configuration.GetSection("RotaUrlAPI:BaseURL").Value;
                string key     = _configuration.GetSection("RotaUrlAPI:Key").Value;
                if (!string.IsNullOrEmpty(key))
                {
                    baseURL += $"?api_key={key}";
                }

                StringContent content = new StringContent(JsonConvert.SerializeObject(model), System.Text.Encoding.UTF8, "application/json");

                HttpResponseMessage response;
                if (string.IsNullOrEmpty(model.Id))
                {
                    response = _client.PostAsync(baseURL, content).Result;
                }
                else
                {
                    response = _client.PutAsync(baseURL, content).Result;
                }

                response.EnsureSuccessStatusCode();
            }
            catch (Exception erro)
            {
                throw new HttpRequestException("Erro ao gravar rota URL.", erro);
            }
        }
コード例 #2
0
        internal static RotaUrlViewModel ConvertToModel(RotaUrlModelApi modelApi)
        {
            var model = new RotaUrlViewModel();

            model.ChaveRota              = modelApi.Chave;
            model.NomeRota               = modelApi.Nome;
            model.DescricaoRota          = modelApi.Descricao;
            model.UrlDestino             = modelApi.UrlDestino;
            model.UrlDestinoIOS          = modelApi.UrlDestinoIOS;
            model.UrlDestinoAndroid      = modelApi.UrlDestinoAndroid;
            model.UrlDestinoWindowsPhone = modelApi.UrlDestinoWindowsPhone;
            model.HasControleAcesso      = modelApi.HasControleAcesso;
            model.HasRotaVigente         = modelApi.HasRotaVigente;
            return(model);
        }
コード例 #3
0
        public IActionResult Rota(string chave)
        {
            if (string.IsNullOrEmpty(chave))
            {
                return(View("Error", new ErrorViewModel {
                    Descricao = "Nenhuma chave de rota foi informada para verificação."
                }));
            }

            RotaUrlModelApi rotaUrlModel = _urlRouterApiClient.Obter(chave);

            if (rotaUrlModel == null)
            {
                return(View("Error", new ErrorViewModel {
                    Descricao = $"Chave da rota [{chave}] não encontrada, infelizmente não conseguimos realizar o roteamento."
                }));
            }
            if (!rotaUrlModel.HasRotaVigente)
            {
                return(View("Error", new ErrorViewModel {
                    Descricao = $"Url com chave da rota [{chave}] não encontrada-se vigente, infelizmente não conseguimos realizar o roteamento."
                }));
            }

            string userAgent           = Request.Headers["User-Agent"].ToString();
            bool   hasDispositivoMovel = Helper.UtilHelper.HasDeviceMobile(userAgent);
            string sistemaOperacional  = Helper.UtilHelper.ObterSistemaOperacional(userAgent);

            string urlDestino = rotaUrlModel.UrlDestino;

            if (hasDispositivoMovel &&
                (!string.IsNullOrEmpty(rotaUrlModel.UrlDestinoIOS) ||
                 !string.IsNullOrEmpty(rotaUrlModel.UrlDestinoAndroid) ||
                 !string.IsNullOrEmpty(rotaUrlModel.UrlDestinoWindowsPhone)))
            {//Direcionar para urls, conforme o tipo de sistema operacional.
                if (!string.IsNullOrEmpty(rotaUrlModel.UrlDestinoIOS) && sistemaOperacional.ToUpper().Contains("IOS"))
                {
                    urlDestino = rotaUrlModel.UrlDestinoIOS;
                }
                if (!string.IsNullOrEmpty(rotaUrlModel.UrlDestinoAndroid) && sistemaOperacional.ToUpper().Contains("ANDROID"))
                {
                    urlDestino = rotaUrlModel.UrlDestinoAndroid;
                }
                if (!string.IsNullOrEmpty(rotaUrlModel.UrlDestinoWindowsPhone) && sistemaOperacional.ToUpper().Contains("WINDOWS PHONE"))
                {
                    urlDestino = rotaUrlModel.UrlDestinoWindowsPhone;
                }
            }

            if (rotaUrlModel.HasControleAcesso)
            {//Registrar acesso a Url...
                AcessoRotaUrlModelApi acessoRotaModel = new AcessoRotaUrlModelApi();
                acessoRotaModel.ChaveRota               = chave;
                acessoRotaModel.DataHoraAcesso          = DateTime.Now;
                acessoRotaModel.InformacoesOrigemAcesso = userAgent;
                acessoRotaModel.HasDispositivoMovel     = hasDispositivoMovel;
                if (hasDispositivoMovel)
                {
                    Helper.DeviceMobile deviceMobile = Helper.UtilHelper.ObterDeviceMobile(userAgent);
                    acessoRotaModel.TipoDispositivoMovel   = deviceMobile.Device;
                    acessoRotaModel.ModeloDispositivoMovel = deviceMobile.Model;
                }
                acessoRotaModel.IpOrigemAcesso           = Helper.UtilHelper.ObterIpMaquinaCliente(Request);
                acessoRotaModel.SistemaOperacionalAcesso = sistemaOperacional;
                _urlRouterApiClient.RegistrarAcesso(acessoRotaModel);
            }

            return(Redirect(urlDestino));
        }