getPreco method

Future<List<Preco>> getPreco({
  1. required List<Objeto> objetos,
  2. required Autorizacao autorizacao,
  3. required TipoRemessa tipoRemessa,
})

Implementation

Future<List<Preco>> getPreco(
    {required List<Objeto> objetos,
    required Autorizacao autorizacao,
    required TipoRemessa tipoRemessa}) async {
  var uri = Uri.parse(
      "https://api.correios.com.br/preco/v1/${tipoRemessa == TipoRemessa.nacional ? "nacional" : "internacional"}");

  var headers = {
    "Content-Type": "application/json",
    'accept': 'application/json',
    'Authorization': 'Bearer ${autorizacao.token}'
  };
  var produtos = objetos.map((e) => e.toMap()).toList();
  var json = jsonEncode({"idLote": "1", "parametrosProduto": produtos});

  http.Response response =
      await _httpClient.post(uri, headers: headers, body: json);
  switch (response.statusCode) {
    case 200:
      List<dynamic> precos = jsonDecode(response.body);
      return precos
          .map((precoProduto) => Preco.fromJson(precoProduto))
          .toList();
    case 400:
      print("Dados enviados: $json");
      print(response.body);
      throw "Dados insuficientes ou incompletos";
    case 500:
      throw "Erro no servidor";
    default:
      print("${response.reasonPhrase} ${response.body}");
      throw "Erro não identificado";
  }
}