//funcion para el get de la coordenada
 public async Task <Localizacion> GetCordenadaAsync(string localizar)
 {
     try
     {
         Localizacion Alocalizar = JsonConvert.DeserializeObject <Localizacion>(localizar);
         string       url        = "https://nominatim.openstreetmap.org/search?" + "street=" + Alocalizar.Calle + "+" + Alocalizar.Numero
                                   + "&country=" + Alocalizar.Pais + "&format=json&city=" + Alocalizar.Ciudad + "&state=" + Alocalizar.Provincia;
         var client = new RestClient(url);
         client.Timeout = -1;
         var           request   = new RestRequest(Method.GET);
         IRestResponse response  = client.Execute(request);
         JArray        jsonArray = JArray.Parse(response.Content);
         var           data      = JObject.Parse(jsonArray[0].ToString());
         Alocalizar.lat = data["lat"].ToString();
         Alocalizar.lon = data["lon"].ToString();
         if (Alocalizar.lon != "" && Alocalizar.lat != "")
         {
             await EnviarCola(Alocalizar);
         }
         return(Alocalizar);
     }
     catch (Exception ex)
     {
         ex.ToString();
         return(null);
     }
 }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            String cola = "Cola_Andreani2";

            //parametros necesarios para rabbit
            var factory = new ConnectionFactory
            {
                HostName = "rabbitmq",
                UserName = "******",
                Password = "******"
            };

            try
            {
                //establece la conexion
                using  (var _connection = factory.CreateConnection())
                {
                    using (var _channel = _connection.CreateModel())
                    {
                        _channel.QueueDeclare(queue: cola, durable: false, exclusive: false, autoDelete: false, arguments: null);
                        var consumer = new EventingBasicConsumer(_channel);
                        Console.WriteLine("Escuchando");
                        var content = "";
                        consumer.Received += async(ch, ea) =>
                        {
                            var body = ea.Body.ToArray();            //cuerpo del mensaje
                            content = Encoding.UTF8.GetString(body); // contenido
                            Console.WriteLine("recibido: {0}" + content);
                            Thread.Sleep(2 * 1000);
                            Localizacion      localizar = new Localizacion();
                            RequestCoordenada rq        = new RequestCoordenada();
                            await rq.GetCordenadaAsync(content);

                            Thread.Sleep(2 * 1000);
                            _channel.BasicAck(ea.DeliveryTag, false);
                        };

                        _channel.BasicConsume(queue: cola, autoAck: true, consumer: consumer);
                        Console.WriteLine("[enter]" + "para salir");
                        Console.ReadLine();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error" + ex.Message.ToString());
            }
        }
        public async Task <Boolean> EnviarCola(Localizacion localizacion)
        {
            bool response = false;
            var  factory  = new ConnectionFactory()
            {
                HostName = "rabbitmq", UserName = "******", Password = "******"
            };

            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "Cola_Andreani3", durable: false, exclusive: false, autoDelete: false, arguments: null);
                    var json = JsonConvert.SerializeObject(localizacion);
                    var body = Encoding.UTF8.GetBytes(json);
                    channel.BasicPublish(exchange: "", routingKey: "Cola_Andreani3", basicProperties: null, body: body);
                    response = true;
                }
            }
            return(response);
        }