package io.gitlab.jfronny.inceptum.gson; import io.gitlab.jfronny.gson.*; import io.gitlab.jfronny.inceptum.model.microsoft.OauthTokenResponse; import java.lang.reflect.Type; import java.util.Date; public class OauthTokenResponseDeserializer implements JsonDeserializer { @Override public OauthTokenResponse deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { OauthTokenResponse oauthTokenResponse = new OauthTokenResponse(); JsonObject rootObject = json.getAsJsonObject(); oauthTokenResponse.tokenType = rootObject.get("token_type").getAsString(); oauthTokenResponse.expiresIn = rootObject.get("expires_in").getAsInt(); oauthTokenResponse.scope = rootObject.get("scope").getAsString(); oauthTokenResponse.accessToken = rootObject.get("access_token").getAsString(); oauthTokenResponse.refreshToken = rootObject.get("refresh_token").getAsString(); oauthTokenResponse.userId = rootObject.get("user_id").getAsString(); if (rootObject.has("foci")) { oauthTokenResponse.foci = rootObject.get("foci").getAsString(); } if (rootObject.has("expires_at")) { oauthTokenResponse.expiresAt = context.deserialize(rootObject.get("expires_at"), Date.class); } else { oauthTokenResponse.expiresAt = new Date(); oauthTokenResponse.expiresAt .setTime(oauthTokenResponse.expiresAt.getTime() + (oauthTokenResponse.expiresIn * 1000)); } return oauthTokenResponse; } }