diff --git a/pom.xml b/pom.xml index becd0bd..cd1f135 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 space.theself fyers-java - 1.0.1 + 1.0.2 space.theself:fyers-java @@ -47,7 +47,7 @@ maven-javadoc-plugin 2.9.1 - ${java.home}/../bin/javadoc + ${java.home}/bin/javadoc diff --git a/src/main/java/trade/theself/fyers/FyersFly.java b/src/main/java/trade/theself/fyers/FyersFly.java index 4848c12..be2a197 100644 --- a/src/main/java/trade/theself/fyers/FyersFly.java +++ b/src/main/java/trade/theself/fyers/FyersFly.java @@ -134,11 +134,11 @@ public String generateAccessToken(String authCode) throws LoginException { try { CloseableHttpResponse response = client.execute(httpPost); - client.close(); InputStream is = response.getEntity().getContent(); StringBuffer sb = new StringBuffer(); byte[] allBytes = ByteStreams.toByteArray(is); is.close(); + client.close(); sb.append(new String(allBytes, StandardCharsets.US_ASCII)); JsonElement jsonElement = jsonParser.parse(sb.toString()); this.accessToken = jsonElement.getAsJsonObject().get("access_token").getAsString(); diff --git a/src/main/java/trade/theself/fyers/boilerplate/LoginHandler.java b/src/main/java/trade/theself/fyers/boilerplate/LoginHandler.java index ccb8118..a868f45 100755 --- a/src/main/java/trade/theself/fyers/boilerplate/LoginHandler.java +++ b/src/main/java/trade/theself/fyers/boilerplate/LoginHandler.java @@ -6,6 +6,8 @@ import java.net.URI; import java.net.URISyntaxException; import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.apache.commons.lang3.StringUtils; @@ -39,7 +41,7 @@ public class LoginHandler { private String clientCode = StringUtils.EMPTY; private String redirectUrl = StringUtils.EMPTY; private String state = "sample_state"; - + private boolean enableHeadless = true; /** * Login to the portal through browser path.. This could break if Fyers decide to update their UI * @param clientId - Client ID of the user @@ -67,15 +69,17 @@ public String login(String clientId, String otp, String totp) throws LoginExcept WebDriverManager.chromedriver().setup(); ChromeOptions options = new ChromeOptions(); - options.addArguments( - "--headless", - "--disable-gpu", - "--ignore-certificate-errors", - "--disable-extensions", - "--no-sandbox", - "--disable-dev-shm-usage", - "--incognito"); - + List argList = new ArrayList<>(); + argList.add("--disable-gpu"); + argList.add("--ignore-certificate-errors"); + argList.add("--disable-extensions"); + argList.add("--no-sandbox"); + argList.add("--disable-dev-shm-usage"); + argList.add("--incognito"); + if(enableHeadless) + argList.add("--headless"); + options.addArguments(argList); + WebDriver driver = new ChromeDriver(options); WebDriverWait wait = new WebDriverWait(driver, 30); driver.get(loginUrl); @@ -158,8 +162,10 @@ public String login(String clientId, String otp, String totp) throws LoginExcept try { List params = URLEncodedUtils.parse(new URI(currentUrl), Charset.forName("UTF-8")); for (NameValuePair param : params) { - if(param.getName().equals("auth_code")) + if(param.getName().equals("auth_code")) { authCode = param.getValue(); + break; + } } } catch (URISyntaxException e) { throw new LoginException(e.getMessage()); @@ -214,4 +220,10 @@ public void setState(String state) { this.state = state; } + /** + * Method primarily to disable headless mode in case any browser related debugging is required. + * @param state + */ + public void setEnableHeadless(boolean state) { this.enableHeadless = state;} + }