public Frete calculaFrete(Pedido p) throws Throwable { Frete frete = null; URL obj = new URL( "http://localhost:8090/calcularFrete?peso=" + p.getPeso() + "&largura=" + p.getLargura() + "&altura=" + p.getAltura() + "&comprimento=" + p.getComprimento() + "&tipoEntrega=" + p.getTipoEntrega() + "&cep=" + p.getCep()); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("GET"); int responseCode = con.getResponseCode(); if (responseCode == 200) { BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); JSONObject json = (JSONObject) new JSONParser().parse(response.toString()); String valorResp = json.get("Valor").toString(); String tempoEntregaResp = json.get("PrazoEntrega").toString(); frete = new Frete(); frete.setTempoEntrega(Integer.valueOf(tempoEntregaResp)); frete.setValor(Double.valueOf(valorResp)); dao.saveDadosDeEntrega(frete.getValor(), frete.getTempoEntrega()); } else if (responseCode == 400) { throw new Throwable("The zipcode is not valid"); } else if (responseCode == 500) { throw new Throwable("CorreioServices is offline right now"); } return frete; }
@When("^I ask to calculate shipping$") public void I_ask_to_calculate_shipping() { int valor = 0; int tempoEntrega = 0; if (correioServicesStatus) { if (correio.validaCep(pedido.getCep())) { if (pedido.getTipoEntrega().equals("PAC")) { valor = 5; tempoEntrega = 5; } else if (pedido.getTipoEntrega().equals("SEDEX")) { valor = 20; tempoEntrega = 3; } else if (pedido.getTipoEntrega().equals("SEDEX10")) { valor = 100; tempoEntrega = 1; } stubFor( get(urlEqualTo( "/calcularFrete?peso=" + pedido.getPeso() + "&largura=" + pedido.getLargura() + "&altura=" + pedido.getAltura() + "&comprimento=" + pedido.getComprimento() + "&tipoEntrega=" + pedido.getTipoEntrega() + "&cep=" + pedido.getCep())) .willReturn( aResponse() .withHeader("Content-Type", "text/plain") .withBody( "{\"Valor\":\"" + valor + "\",\"PrazoEntrega\":\"" + tempoEntrega + "\"}"))); } else { stubFor( get(urlEqualTo( "/calcularFrete?peso=" + pedido.getPeso() + "&largura=" + pedido.getLargura() + "&altura=" + pedido.getAltura() + "&comprimento=" + pedido.getComprimento() + "&tipoEntrega=" + pedido.getTipoEntrega() + "&cep=" + pedido.getCep())) .willReturn(aResponse().withStatus(400))); } } else { stubFor( get(urlEqualTo( "/calcularFrete?peso=" + pedido.getPeso() + "&largura=" + pedido.getLargura() + "&altura=" + pedido.getAltura() + "&comprimento=" + pedido.getComprimento() + "&tipoEntrega=" + pedido.getTipoEntrega() + "&cep=" + pedido.getCep())) .willReturn(aResponse().withStatus(500))); } try { frete = correio.calculaFrete(pedido); } catch (Throwable e) { throwable = e; } }