diff --git a/src/main/java/com/ebay/feed/api/FeedImpl.java b/src/main/java/com/ebay/feed/api/FeedImpl.java index 6d22fc9..3145188 100755 --- a/src/main/java/com/ebay/feed/api/FeedImpl.java +++ b/src/main/java/com/ebay/feed/api/FeedImpl.java @@ -1,11 +1,11 @@ /* * Copyright 2018 eBay Inc. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under @@ -50,6 +50,8 @@ import com.ebay.feed.validator.FeedValidator; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.ebay.feed.auth.CredentialLoader; +import com.ebay.feed.model.oauth.AuthRequest; /** *
* Invokes the feed API with the max range value of 100 MB. If the file is lesser than 100 MB, * then it returns the downloaded file path along with the status. - * + * * If the file is greater than 100 MB - Iteratively calls feed API, with incrementing range * headers - Appends content to file - Downloads entire content and returns with downloaded file * path. - * + * *
- * + * * @param request The API request * @param path Path of the downloaded or partially downloading file, where contents need to be * appended @@ -295,6 +298,24 @@ private GetFeedResponse invoker(Request.Builder requestBuilder, Path path, boole requestBuilder.removeHeader(Constants.RANGE_HEADER); requestBuilder.addHeader(Constants.RANGE_HEADER, val); + LOGGER.debug("Firing the request for next batch" + newUpperLimit); + AuthRequest authRequest = new AuthRequest(credentialFilePath, null); + + // load credentials and generate token + CredentialLoader credentialLoader = new CredentialLoader(authRequest); + String token = "foobar"; + try { + credentialLoader.loadCredentials(); + token = credentialLoader.getOauthResponse().getAccessToken().get().getToken(); + } catch(Exception e){ + LOGGER.debug("Exception in fetching the new access token"); + return new GetFeedResponse(Constants.FAILURE_CODE, Constants.FAILURE, null, null); + } + token = Constants.TOKEN_BEARER_PREFIX + token; + + requestBuilder.removeHeader(Constants.AUTHORIZATION_HEADER); + requestBuilder.addHeader(Constants.AUTHORIZATION_HEADER, token); + requestBuilder.addHeader(Constants.RANGE_HEADER, val); responseFlag = invokeIteratively(requestBuilder.build(), path); @@ -325,23 +346,23 @@ private GetFeedResponse invoker(Request.Builder requestBuilder, Path path, boole */ private String fixFilePath(Path originalFilePath, InvokeResponse invokeResponse) { Path newFilePath = originalFilePath; - if(originalFilePath.toString().contains("null") && !StringUtils.isEmpty(invokeResponse.getLastModified())){ + if(originalFilePath.toString().contains("null") && !StringUtils.isEmpty(invokeResponse.getLastModified())){ String newPath = originalFilePath.toString().replace("null", invokeResponse.getLastModified()); newFilePath = Paths.get(newPath); try { Files.move(originalFilePath, newFilePath, StandardCopyOption.REPLACE_EXISTING); } catch (IOException e) { - LOGGER.error("Unable to rename the bootstrap item feed file with date field", e); + LOGGER.error("Unable to rename the bootstrap item feed file with date field", e); } } return newFilePath.toString(); } - + /** ** Invoked, only if the file size is greater than max chunk size *
- * + * * @param request The API request * @param path Path of the downloaded or partially downloading file, where contents need to be * appended @@ -382,7 +403,7 @@ private InvokeResponse invokeIteratively(Request request, Path path) { new InvokeResponse(response.header(Constants.CONTENT_RANGE_HEADER), response.code(), lastModifiedDate); } catch (Throwable t) { - LOGGER.error("Exception in feed.invokeIteratively()", t); + LOGGER.error("Exception in feed.invokeIteratively()", t); responseFlag = new InvokeResponse(null, 400); } return responseFlag; @@ -390,7 +411,7 @@ private InvokeResponse invokeIteratively(Request request, Path path) { /* * (non-Javadoc) - * + * * @see com.ebay.feed.api.Feed#processConfigFile(java.lang.String, java.lang.String) */ @Override @@ -496,7 +517,7 @@ public List* Returns a new instance of response, based on the provided inputs *
- * + * * @param statusCode * @param message * @param filePath