|
84 | 84 | public class HttpRosetteAPI extends AbstractRosetteAPI {
|
85 | 85 |
|
86 | 86 | public static final String DEFAULT_URL_BASE = "https://analytics.babelstreet.com/rest/v1";
|
87 |
| - public static final String SERVICE_NAME = "RosetteAPI"; |
| 87 | + public static final String SERVICE_NAME = "Babel-Street-Analytics-API"; |
88 | 88 | public static final String BINDING_VERSION = getVersion();
|
89 | 89 | public static final String USER_AGENT_STR = SERVICE_NAME + "-Java/" + BINDING_VERSION + "/"
|
90 | 90 | + System.getProperty("java.version");
|
91 | 91 | private static final Logger LOG = LoggerFactory.getLogger(HttpRosetteAPI.class);
|
92 |
| - private static final String IO_EXCEPTION_MESSAGE = "IO Exception communicating with the Rosette API"; |
| 92 | + private static final String IO_EXCEPTION_MESSAGE = "IO Exception communicating with the Babel Street Analytics API"; |
93 | 93 | private static final Pattern TRAILING_SLASHES = Pattern.compile("/+$");
|
94 | 94 | private String urlBase = DEFAULT_URL_BASE;
|
95 | 95 | private int failureRetries = 1;
|
@@ -198,6 +198,9 @@ private void initHeaders(String key, List<Header> additionalHeaders) {
|
198 | 198 | this.additionalHeaders.add(new BasicHeader(HttpHeaders.ACCEPT_ENCODING, "gzip"));
|
199 | 199 | if (key != null) {
|
200 | 200 | this.additionalHeaders.add(new BasicHeader("X-BabelStreetAPI-Key", key));
|
| 201 | + this.additionalHeaders.add(new BasicHeader("X-BabelStreetAPI-Binding", "java")); |
| 202 | + this.additionalHeaders.add(new BasicHeader("X-BabelStreetAPI-Binding-Version", BINDING_VERSION)); |
| 203 | + // TODO: Remove in a future release. |
201 | 204 | this.additionalHeaders.add(new BasicHeader("X-RosetteAPI-Binding", "java"));
|
202 | 205 | this.additionalHeaders.add(new BasicHeader("X-RosetteAPI-Binding-Version", BINDING_VERSION));
|
203 | 206 | }
|
@@ -401,10 +404,15 @@ private <T> T sendPostRequest(Object request, String urlStr, Class<T> clazz)
|
401 | 404 | while (numRetries-- > 0) {
|
402 | 405 | try (CloseableHttpResponse response = httpClient.execute(post)) {
|
403 | 406 | T resp = getResponse(response, clazz);
|
| 407 | + // TODO: Remove in a future release |
404 | 408 | Header ridHeader = response.getFirstHeader("X-RosetteAPI-DocumentRequest-Id");
|
405 | 409 | if (ridHeader != null && ridHeader.getValue() != null) {
|
406 | 410 | LOG.debug("DocumentRequest ID {}", ridHeader.getValue());
|
407 | 411 | }
|
| 412 | + Header bsidHeader = response.getFirstHeader("X-BabelStreetAPI-DocumentRequest-Id"); |
| 413 | + if (bsidHeader != null && bsidHeader.getValue() != null) { |
| 414 | + LOG.debug("DocumentRequest ID {}", bsidHeader.getValue()); |
| 415 | + } |
408 | 416 | if (resp instanceof Response) {
|
409 | 417 | responseHeadersToExtendedInformation((Response)resp, response);
|
410 | 418 | }
|
@@ -556,15 +564,31 @@ private <T extends Object> T getResponse(HttpResponse httpResponse, Class<T> cla
|
556 | 564 | InputStream stream = httpResponse.getEntity().getContent();
|
557 | 565 | InputStream inputStream = "gzip".equalsIgnoreCase(encoding) ? new GZIPInputStream(stream) : stream) {
|
558 | 566 | String ridHeader = headerValueOrNull(httpResponse.getFirstHeader("X-RosetteAPI-DocumentRequest-Id"));
|
| 567 | + String bsidHeader = headerValueOrNull(httpResponse.getFirstHeader("X-BabelStreetAPI-DocumentRequest-Id")); |
559 | 568 | if (HTTP_OK != status) {
|
560 |
| - String ecHeader = headerValueOrNull(httpResponse.getFirstHeader("X-RosetteAPI-Status-Code")); |
561 |
| - String emHeader = headerValueOrNull(httpResponse.getFirstHeader("X-RosetteAPI-Status-Message")); |
| 569 | + String ecHeader; |
| 570 | + if (headerValueOrNull(httpResponse.getFirstHeader("X-BabelStreetAPI-Status-Code")) != null) { |
| 571 | + ecHeader = headerValueOrNull(httpResponse.getFirstHeader("X-BabelStreetAPI-Status-Code")); |
| 572 | + } else { |
| 573 | + // TODO: Remove in a future release |
| 574 | + ecHeader = headerValueOrNull(httpResponse.getFirstHeader("X-RosetteAPI-Status-Code")); |
| 575 | + } |
| 576 | + String emHeader; |
| 577 | + if (headerValueOrNull(httpResponse.getFirstHeader("X-BabelStreetAPI-Status-Message")) != null) { |
| 578 | + emHeader = headerValueOrNull(httpResponse.getFirstHeader("X-BabelStreetAPI-Status-Message")); |
| 579 | + } else { |
| 580 | + // TODO: Remove in a future release |
| 581 | + emHeader = headerValueOrNull(httpResponse.getFirstHeader("X-RosetteAPI-Status-Message")); |
| 582 | + } |
562 | 583 | String responseContentType = headerValueOrNull(httpResponse.getFirstHeader(HttpHeaders.CONTENT_TYPE));
|
563 | 584 | if ("application/json".equals(responseContentType)) {
|
564 | 585 | ErrorResponse errorResponse = mapper.readValue(inputStream, ErrorResponse.class);
|
565 | 586 | if (ridHeader != null) {
|
566 | 587 | LOG.debug("DocumentRequest ID {}", ridHeader);
|
567 | 588 | }
|
| 589 | + if (bsidHeader != null) { |
| 590 | + LOG.debug("DocumentRequest ID {}", bsidHeader); |
| 591 | + } |
568 | 592 | if (ecHeader != null) {
|
569 | 593 | errorResponse.setCode(ecHeader);
|
570 | 594 | }
|
|
0 commit comments