/** * Executa a operação da API informando um Builder para a requisição e resposta. * * @param requestBuilder é uma instância de {@link AkatusRequestBuilder} responsável pela criação * do corpo da requisição. * @param responseBuilder é uma instância de {@link AkatusResponseBuilder} responsável pela * criação do objeto que representa a resposta. * @return Uma instância de {@link AkatusResponse} com a resposta da operação. */ public AkatusResponse execute( AkatusRequestBuilder requestBuilder, AkatusResponseBuilder responseBuilder) { AkatusResponse response = new AkatusResponse(); try { final URL url = new URL(akatus.getHost() + getPath()); final HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); connection.setDoInput(true); connection.setDoOutput(true); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", requestBuilder.getContentType()); final OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); writer.write(requestBuilder.build(this)); writer.flush(); try { response = responseBuilder.build(readResponse(connection.getInputStream())); } catch (final IOException e) { response = responseBuilder.build(readResponse(connection.getErrorStream())); } } catch (final Exception e) { Logger.getLogger(AkatusOperation.class.getName()) .throwing(this.getClass().getName(), "execute", e); } return response; }
/** * Constroi o objeto que representa a operação passando o wrapper da API. * * @param akatus é a instância do wrapper da API da {@link Akatus} */ public AkatusOperation(Akatus akatus) { this.akatus = akatus; account = new AkatusAccount(akatus.getApiKey(), akatus.getEmail()); }