/** * Class api sets up the request to the SendGrid API, this is main interface. * @param request the request object. * @return the response object. * @throws IOException in case of a network error. */ public Response api(Request request) throws IOException { Request req = new Request(); req.setMethod(request.getMethod()); req.setBaseUri(this.host); req.setEndpoint("/" + version + "/" + request.getEndpoint()); req.setBody(request.getBody()); for (Map.Entry<String, String> header : this.requestHeaders.entrySet()) { req.addHeader(header.getKey(), header.getValue()); } for (Map.Entry<String, String> queryParam : request.getQueryParams().entrySet()) { req.addQueryParam(queryParam.getKey(), queryParam.getValue()); } return makeCall(req); }
/** * Make a GET request and provide the status code, response body and * response headers. */ public Response get(Request request) throws URISyntaxException, IOException { URI uri = null; HttpGet httpGet = null; try { uri = buildUri(request.getBaseUri(), request.getEndpoint(), request.getQueryParams()); httpGet = new HttpGet(uri.toString()); } catch (URISyntaxException ex) { throw ex; } if (request.getHeaders() != null) { for (Map.Entry<String, String> entry : request.getHeaders().entrySet()) { httpGet.setHeader(entry.getKey(), entry.getValue()); } } return executeApiCall(httpGet); }
Request request = new Request(); try { request.setMethod(Method.POST); request.setEndpoint("mail/send"); request.setBody(mail.build()); Response response = sg.api(request); log.info("Status Code: {}", String.valueOf(response.getStatusCode()));
/** * A thin wrapper around the HTTP methods. */ public Response api(Request request) throws IOException { try { if (request.getMethod() == null) { throw new IOException("We only support GET, PUT, PATCH, POST and DELETE."); } switch (request.getMethod()) { case GET: return get(request); case POST: return post(request); case PUT: return put(request); case PATCH: return patch(request); case DELETE: return delete(request); default: throw new IOException("We only support GET, PUT, PATCH, POST and DELETE."); } } catch (IOException ex) { throw ex; } catch (URISyntaxException ex) { StringWriter errors = new StringWriter(); ex.printStackTrace(new PrintWriter(errors)); throw new IOException(errors.toString()); } }
/** * Make a POST request and provide the status code, response body and * response headers. */ public Response post(Request request) throws URISyntaxException, IOException { URI uri = null; HttpPost httpPost = null; try { uri = buildUri(request.getBaseUri(), request.getEndpoint(), request.getQueryParams()); httpPost = new HttpPost(uri.toString()); } catch (URISyntaxException ex) { throw ex; } if (request.getHeaders() != null) { for (Map.Entry<String, String> entry : request.getHeaders().entrySet()) { httpPost.setHeader(entry.getKey(), entry.getValue()); } } httpPost.setEntity(new StringEntity(request.getBody(), Charset.forName("UTF-8"))); if (request.getBody() != "") { httpPost.setHeader("Content-Type", "application/json"); } return executeApiCall(httpPost); }
/** * Class api sets up the request to the SendGrid API, this is main interface. * @param request the request object. * @return the response object. * @throws IOException in case of a network error. */ public Response api(Request request) throws IOException { Request req = new Request(); req.setMethod(request.getMethod()); req.setBaseUri(this.host); req.setEndpoint("/" + version + "/" + request.getEndpoint()); req.setBody(request.getBody()); for (Map.Entry<String, String> header : this.requestHeaders.entrySet()) { req.addHeader(header.getKey(), header.getValue()); } for (Map.Entry<String, String> queryParam : request.getQueryParams().entrySet()) { req.addQueryParam(queryParam.getKey(), queryParam.getValue()); } return makeCall(req); }
/** * Make a PUT request and provide the status code, response body and * response headers. */ public Response put(Request request) throws URISyntaxException, IOException { URI uri = null; HttpPut httpPut = null; try { uri = buildUri(request.getBaseUri(), request.getEndpoint(), request.getQueryParams()); httpPut = new HttpPut(uri.toString()); } catch (URISyntaxException ex) { throw ex; } if (request.getHeaders() != null) { for (Map.Entry<String, String> entry : request.getHeaders().entrySet()) { httpPut.setHeader(entry.getKey(), entry.getValue()); } } httpPut.setEntity(new StringEntity(request.getBody(), Charset.forName("UTF-8"))); if (request.getBody() != "") { httpPut.setHeader("Content-Type", "application/json"); } return executeApiCall(httpPut); }
/** * Make a DELETE request and provide the status code and response headers. */ public Response delete(Request request) throws URISyntaxException, IOException { URI uri = null; HttpDeleteWithBody httpDelete = null; try { uri = buildUri(request.getBaseUri(), request.getEndpoint(), request.getQueryParams()); httpDelete = new HttpDeleteWithBody(uri.toString()); } catch (URISyntaxException ex) { throw ex; } if (request.getHeaders() != null) { for (Map.Entry<String, String> entry : request.getHeaders().entrySet()) { httpDelete.setHeader(entry.getKey(), entry.getValue()); } } httpDelete.setEntity(new StringEntity(request.getBody(), Charset.forName("UTF-8"))); if (request.getBody() != "") { httpDelete.setHeader("Content-Type", "application/json"); } return executeApiCall(httpDelete); }
/** * Make a PATCH request and provide the status code, response body and * response headers. */ public Response patch(Request request) throws URISyntaxException, IOException { URI uri = null; HttpPatch httpPatch = null; try { uri = buildUri(request.getBaseUri(), request.getEndpoint(), request.getQueryParams()); httpPatch = new HttpPatch(uri.toString()); } catch (URISyntaxException ex) { throw ex; } if (request.getHeaders() != null) { for (Map.Entry<String, String> entry : request.getHeaders().entrySet()) { httpPatch.setHeader(entry.getKey(), entry.getValue()); } } httpPatch.setEntity(new StringEntity(request.getBody(), Charset.forName("UTF-8"))); if (request.getBody() != "") { httpPatch.setHeader("Content-Type", "application/json"); } return executeApiCall(httpPatch); }