|
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