in src/main/java/com/microsoft/azure/datalake/store/oauth2/AzureADAuthenticator.java [329:370]
private static AzureADToken parseTokenFromStream(InputStream httpResponseStream) throws IOException {
AzureADToken token = new AzureADToken();
try {
int expiryPeriodRelative = 0;
long expiryPeriodActual = -1;
JsonFactory jf = new JsonFactory();
JsonParser jp = jf.createParser(httpResponseStream);
String fieldName, fieldValue;
jp.nextToken();
while (jp.hasCurrentToken()) {
if (jp.getCurrentToken() == JsonToken.FIELD_NAME) {
fieldName = jp.getCurrentName();
jp.nextToken(); // field value
fieldValue = jp.getText();
if (fieldName.equals("access_token")) token.accessToken = fieldValue;
if (fieldName.equals("expires_in")) expiryPeriodRelative = Integer.parseInt(fieldValue);
if (fieldName.equals("expires_on")) expiryPeriodActual = Integer.parseInt(fieldValue);
}
jp.nextToken();
}
jp.close();
boolean expiresOn = false;
if(expiryPeriodActual>0) {
// convert expiryPeriodActual to milliseconds
token.expiry = new Date(expiryPeriodActual*1000);
expiresOn=true;
}
else {
long expiry = System.currentTimeMillis();
expiry = expiry + expiryPeriodRelative * 1000L; // convert expiryPeriod to milliseconds and add
token.expiry = new Date(expiry);
}
log.debug("AADToken: fetched token with expiry " + token.expiry.toString() + " expiresOn passed: "+expiresOn);
} catch (Exception ex) {
log.debug("AADToken: got exception when parsing json token " + ex.toString());
throw ex;
} finally {
httpResponseStream.close();
}
return token;
}