@Component
public class RESTClient {
public static final Logger logger = LoggerFactory.getLogger(RESTClient.class);
private RestTemplate restTemplate;
@Autowired
@Qualifier("yodleeRestTemplate")
public void setRestTemplate(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
public JSONObject doPost(String url, String requestBody) {
final String fn = "[doPost]";
logger.debug("{}, -------------------POST request start----------------------",fn);
String mn = "POST( " + url + ", " + requestBody+" )";
logger.debug("{}, HTTP" + " :: " + mn,fn);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
ResponseEntity<String> responseEntity = null;
try {
responseEntity = restTemplate.postForEntity(url, entity, String.class);
} catch (Exception e) {
handleHttpClientException(e);
throw new RestTemplateInvocationException(e);
}
logger.debug("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
logger.debug("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
logger.debug("{}, -------------------POST request end----------------------",fn);
try {
return JSONObject.parseObject(responseEntity.getBody());
} catch (Exception e) {
throw new ParseJsonException(e);
}
}
public JSONObject doPost(String url, String sessionTokenStr, String requestBody, boolean isEncodingNeeded) {
final String fn = "[doPost]";
logger.info("{}, -------------------POST request start----------------------",fn);
String mn = "POST( " + url + ", " + requestBody+ " )";
logger.debug("{}, HTTP" + " :: " + mn,fn);
HttpHeaders headers = new HttpHeaders();
if (isEncodingNeeded) {
headers.setContentType(MediaType.APPLICATION_JSON);
} else {
headers.setContentType(MediaType.TEXT_PLAIN);
}
headers.set("Authorization", sessionTokenStr);
HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
ResponseEntity<String> responseEntity = null;
try {
responseEntity = restTemplate.postForEntity(url, entity, String.class);
} catch (Exception e) {
handleHttpClientException(e);
throw new RestTemplateInvocationException(e);
}
logger.debug("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
logger.debug("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
logger.debug("{}, -------------------POST request end----------------------",fn);
try {
return JSONObject.parseObject(responseEntity.getBody());
} catch (Exception e) {
throw new ParseJsonException(e);
}
}
private void handleHttpClientException(Exception e) {
if (e instanceof HttpClientErrorException) {
String responseBodyAsString = ((HttpClientErrorException) e).getResponseBodyAsString();
if (StringUtils.isNotBlank(responseBodyAsString)) {
JSONObject jsonObject = JSONObject.parseObject(responseBodyAsString);
if (jsonObject != null) {
String errorCode = (String) jsonObject.get("errorCode");
String errorMessage = (String) jsonObject.get("errorMessage");
logger.error("[handleHttpClientException], "+errorCode +" "+ errorMessage);
}
}
}
}
public JSONObject doPost(String url, String sessionTokenStr, String requestBody, Map<String, ?> uriVariables, boolean isEncodingNeeded) {
final String fn = "[doPost]";
logger.info("{}, -------------------POST request start----------------------",fn);
String mn = "POST( " + url + ", " + requestBody+ " )";
logger.debug("{}, HTTP" + " :: " + mn,fn);
HttpHeaders headers = new HttpHeaders();
if (isEncodingNeeded) {
headers.setContentType(MediaType.APPLICATION_JSON);
} else {
headers.setContentType(MediaType.TEXT_PLAIN);
}
headers.set("Authorization", sessionTokenStr);
HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
ResponseEntity<String> responseEntity = null;
try {
responseEntity = restTemplate.postForEntity(url, entity, String.class, uriVariables);
} catch (Exception e) {
handleHttpClientException(e);
throw new RestTemplateInvocationException(e);
}
logger.debug("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
logger.debug("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
logger.debug("{}, -------------------POST request end----------------------",fn);
try {
return JSONObject.parseObject(responseEntity.getBody());
} catch (Exception e) {
throw new ParseJsonException(e);
}
}
public JSONObject doPut(String url, String sessionTokenStr, String requestBody, boolean isEncodingNeeded) {
final String fn = "[doPut]";
logger.info("{}, -------------------PUT request start----------------------",fn);
String mn = "PUT( " + url + ", " + requestBody+ " )";
logger.info("{}, HTTP" + " :: " + mn,fn);
HttpHeaders headers = new HttpHeaders();
if (isEncodingNeeded) {
headers.setContentType(MediaType.APPLICATION_JSON);
} else {
headers.setContentType(MediaType.TEXT_PLAIN);
}
headers.set("Authorization", sessionTokenStr);
HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
ResponseEntity<String> responseEntity = null;
try {
responseEntity = restTemplate.exchange(url, HttpMethod.PUT, entity, String.class);
} catch (Exception e) {
handleHttpClientException(e);
throw new RestTemplateInvocationException(e);
}
logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
logger.info("{}, -------------------POST request end----------------------",fn);
try {
return JSONObject.parseObject(responseEntity.getBody());
} catch (Exception e) {
throw new ParseJsonException(e);
}
}
public JSONObject doPut(String url, String sessionTokenStr, String requestBody, Map<String, ?> uriVariables, boolean isEncodingNeeded) {
final String fn = "[doPut]";
logger.info("{}, -------------------PUT request start----------------------",fn);
String mn = "PUT( " + url + ", " + requestBody+ " )";
logger.info("{}, HTTP" + " :: " + mn,fn);
HttpHeaders headers = new HttpHeaders();
if (isEncodingNeeded) {
headers.setContentType(MediaType.APPLICATION_JSON);
} else {
headers.setContentType(MediaType.TEXT_PLAIN);
}
headers.set("Authorization", sessionTokenStr);
HttpEntity<String> entity = new HttpEntity<>(requestBody, headers);
ResponseEntity<String> responseEntity = null;
try {
responseEntity = restTemplate.exchange(url, HttpMethod.PUT, entity, String.class, uriVariables);
} catch (Exception e) {
handleHttpClientException(e);
throw new RestTemplateInvocationException(e);
}
logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
logger.info("{}, -------------------POST request end----------------------",fn);
try {
return JSONObject.parseObject(responseEntity.getBody());
} catch (Exception e) {
throw new ParseJsonException(e);
}
}
public JSONObject doGet(String url, String sessionTokenStr, Map<String, ?> uriVariables) {
final String fn = "[doGet]";
logger.info("{}, -------------------GET request start----------------------",fn);
String mn = "GET( " + url+ " )";
logger.info("{}, HTTP" + " :: " + mn,fn);
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", sessionTokenStr);
HttpEntity entity = new HttpEntity(headers);
ResponseEntity<String> responseEntity = null;
try {
responseEntity = restTemplate.exchange(url, HttpMethod.GET, entity, String.class, uriVariables);
} catch (Exception e) {
handleHttpClientException(e);
throw new RestTemplateInvocationException(e);
}
logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
logger.info("{}, -------------------GET request end------------------------",fn);
try {
return JSONObject.parseObject(responseEntity.getBody());
} catch (Exception e) {
throw new ParseJsonException(e);
}
}
public JSONObject doGet(String url, String sessionTokenStr) {
final String fn = "[doGet]";
logger.info("{}, -------------------GET request start----------------------",fn);
String mn = "GET( " + url+ " )";
logger.info("{}, HTTP" + " :: " + mn,fn);
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", sessionTokenStr);
HttpEntity entity = new HttpEntity(headers);
ResponseEntity<String> responseEntity = null;
try {
responseEntity = restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
} catch (Exception e) {
handleHttpClientException(e);
throw new RestTemplateInvocationException(e);
}
logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
logger.info("{}, -------------------GET request end------------------------",fn);
try {
return JSONObject.parseObject(responseEntity.getBody());
} catch (Exception e) {
throw new ParseJsonException(e);
}
}
public JSONObject doDelete(String url, String sessionTokenStr, Map<String, ?> uriVariables) {
final String fn = "[doDelete]";
logger.info("{}, -------------------DELETE request start----------------------",fn);
String mn = "DELETE( " + url+ " )";
logger.info("{}, HTTP" + " :: " + mn,fn);
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", sessionTokenStr);
HttpEntity entity = new HttpEntity(headers);
ResponseEntity<String> responseEntity = null;
try {
responseEntity = restTemplate.exchange(url, HttpMethod.DELETE, entity, String.class, uriVariables);
} catch (Exception e) {
handleHttpClientException(e);
throw new RestTemplateInvocationException(e);
}
logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
logger.info("{}, -------------------DELETE request end------------------------",fn);
try {
return JSONObject.parseObject(responseEntity.getBody());
} catch (Exception e) {
throw new ParseJsonException(e);
}
}
public JSONObject doDelete(String url, String sessionTokenStr) {
final String fn = "[doDelete]";
logger.info("{}, -------------------DELETE request start----------------------",fn);
String mn = "DELETE( " + url+ " )";
logger.info("{}, HTTP" + " :: " + mn,fn);
HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", sessionTokenStr);
HttpEntity entity = new HttpEntity(headers);
ResponseEntity<String> responseEntity = null;
try {
responseEntity = restTemplate.exchange(url, HttpMethod.DELETE, entity, String.class);
} catch (Exception e) {
handleHttpClientException(e);
throw new RestTemplateInvocationException(e);
}
logger.info("{}, Response code is :" + responseEntity.getStatusCodeValue(),fn);
logger.info("{}, HTTP" + " :: Response " + " : "+ responseEntity.getBody(),fn);
logger.info("{}, -------------------DELETE request end------------------------",fn);
try {
return JSONObject.parseObject(responseEntity.getBody());
} catch (Exception e) {
throw new ParseJsonException(e);
}
}
}