package com.feth.play.module.pa.providers.oauth1.xing; import com.fasterxml.jackson.databind.JsonNode; import com.feth.play.module.pa.providers.oauth1.BasicOAuth1AuthUser; import com.feth.play.module.pa.providers.oauth1.OAuth1AuthInfo; import com.feth.play.module.pa.user.ExtendedIdentity; import com.feth.play.module.pa.user.PicturedIdentity; import com.feth.play.module.pa.user.ProfiledIdentity; /** * See https://dev.xing.com/docs/get/users/me */ public class XingAuthUser extends BasicOAuth1AuthUser implements ExtendedIdentity, PicturedIdentity, ProfiledIdentity { private static final long serialVersionUID = 1L; private static final String ACTIVE_EMAIL = "active_email"; private static final String DISPLAY_NAME = "display_name"; private static final String FIRST_NAME = "first_name"; private static final String GENDER = "gender"; private static final String ID = "id"; private static final String LAST_NAME = "last_name"; private static final String PERMALINK = "permalink"; private static final String PHOTO_URLS = "photo_urls"; private static final String PHOTO_URLS_LARGE = "large"; private String displayName; private String email; private String firstName; private String gender; private String largePhotoUrl; private String lastName; private String permalink; public XingAuthUser(final JsonNode nodeInfo, final OAuth1AuthInfo info) { // 'state' is always null? super(nodeInfo.has(ID) ? nodeInfo.get(ID).asText() : "N/A", info, null); if (nodeInfo.has(DISPLAY_NAME)) { this.displayName = nodeInfo.get(DISPLAY_NAME).asText(); } if (nodeInfo.has(ACTIVE_EMAIL)) { this.email = nodeInfo.get(ACTIVE_EMAIL).asText(); } if (nodeInfo.has(GENDER)) { this.gender = nodeInfo.get(GENDER).asText(); } if (nodeInfo.has(FIRST_NAME)) { this.firstName = nodeInfo.get(FIRST_NAME).asText(); } if (nodeInfo.has(LAST_NAME)) { this.lastName = nodeInfo.get(LAST_NAME).asText(); } if (nodeInfo.has(PHOTO_URLS)) { final JsonNode photoUrlsNode = nodeInfo.get(PHOTO_URLS); if (photoUrlsNode.has(PHOTO_URLS_LARGE)) { this.largePhotoUrl = photoUrlsNode.get(PHOTO_URLS_LARGE) .asText(); } } if (nodeInfo.has(PERMALINK)) { this.permalink = nodeInfo.get(PERMALINK).asText(); } } @Override public String getEmail() { return email; } @Override public String getFirstName() { return firstName; } @Override public String getGender() { return gender; } @Override public String getLastName() { return lastName; } @Override public String getName() { return displayName; } @Override public String getPicture() { return largePhotoUrl; } @Override public String getProfileLink() { return permalink; } @Override public String getProvider() { return XingAuthProvider.PROVIDER_KEY; } }