コード例 #1
0
        async void ModelosWorker(TaskQueue task)
        {
            try
            {
                HttpClient httpClient = new HttpClient();

                HttpResponseMessage response = await httpClient.GetAsync(task.URL);

                if (response == null || !response.IsSuccessStatusCode)
                {
                    Console.WriteLine(String.Format("Erro ao obter os modelos da marca {0}, Veiculo {1}, tentando novamente", task.Marca, task.Veiculo));
                    _queue.Enqueue(task);
                    return;
                }

                string content = await response.Content.ReadAsStringAsync();

                if (String.IsNullOrEmpty(content))
                {
                    Console.WriteLine(String.Format("Resposta invalida ao obter os modelos da marca {0}, Veiculo {1}, tentando novamente", task.Marca, task.Veiculo));
                    _queue.Enqueue(task);
                    return;
                }

                List <Modelo> modelos = Modelos.FromJson(content);
                SQLiteCommand cmd     = new SQLiteCommand("REPLACE INTO modelos (veiculo_id, id, key, name, fipe_codigo) VALUES (@veiculo_id, @id, @key, @name, @fipe_codigo)", _connection);

                foreach (Modelo modelo in modelos)
                {
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add("@veiculo_id", DbType.Int32).Value   = task.Veiculo;
                    cmd.Parameters.Add("@id", DbType.String).Value          = modelo.Id;
                    cmd.Parameters.Add("@key", DbType.String).Value         = modelo.Key;
                    cmd.Parameters.Add("@name", DbType.String).Value        = modelo.Name;
                    cmd.Parameters.Add("@fipe_codigo", DbType.String).Value = modelo.FipeCodigo;
                    cmd.ExecuteNonQuery();

                    //countdownEvent.Reset(countdownEvent.CurrentCount + 1);
                    _queue.Enqueue(new TaskQueue
                    {
                        Type    = TaskQueueType.FIPE,
                        URL     = String.Format(URL_FIPE, task.Marca, task.Veiculo, modelo.Id),
                        Marca   = task.Marca,
                        Veiculo = task.Veiculo,
                        Modelo  = modelo.Id
                    });

                    Console.WriteLine(String.Format("Inserindo Modelo '{0}' do Veiculo '{1}', da marca '{2}'", modelo.Id, task.Veiculo, task.Marca));
                }
            } catch (Exception e)
            {
                _queue.Enqueue(task);
            }
        }