package org.pac4j.oauth.profile.windowslive;
import com.fasterxml.jackson.databind.JsonNode;
import com.github.scribejava.core.model.OAuth2AccessToken;
import org.pac4j.core.exception.HttpAction;
import org.pac4j.core.profile.converter.Converters;
import org.pac4j.oauth.config.OAuth20Configuration;
import org.pac4j.oauth.profile.JsonHelper;
import org.pac4j.oauth.profile.definition.OAuth20ProfileDefinition;
import java.util.Arrays;
/**
* This class is the Windows Live profile definition.
*
* @author Jerome Leleu
* @since 1.1.0
*/
public class WindowsLiveProfileDefinition extends OAuth20ProfileDefinition<WindowsLiveProfile> {
public static final String NAME = "name";
public static final String LAST_NAME = "last_name";
public static final String LINK = "link";
public static final String UPDATED_TIME = "updated_time";
public WindowsLiveProfileDefinition() {
super(x -> new WindowsLiveProfile());
Arrays.stream(new String[] {NAME, LAST_NAME}).forEach(a -> primary(a, Converters.STRING));
primary(LINK, Converters.URL);
primary(UPDATED_TIME, Converters.DATE_TZ_GENERAL);
}
@Override
public String getProfileUrl(final OAuth2AccessToken accessToken, final OAuth20Configuration configuration) {
return "https://apis.live.net/v5.0/me";
}
@Override
public WindowsLiveProfile extractUserProfile(final String body) throws HttpAction {
final WindowsLiveProfile profile = newProfile();
final JsonNode json = JsonHelper.getFirstNode(body);
if (json != null) {
profile.setId(JsonHelper.getElement(json, "id"));
for (final String attribute : getPrimaryAttributes()) {
convertAndAdd(profile, attribute, JsonHelper.getElement(json, attribute));
}
}
return profile;
}
}