package com.feth.play.module.pa.providers.oauth2.eventbrite;
import com.fasterxml.jackson.databind.JsonNode;
import com.feth.play.module.pa.providers.oauth2.BasicOAuth2AuthUser;
import com.feth.play.module.pa.user.FirstLastNameIdentity;
import play.Logger;
public class EventBriteAuthUser extends BasicOAuth2AuthUser implements FirstLastNameIdentity {
private static final long serialVersionUID = 1L;
private static abstract class Constants {
public static final String ID = "id";
public static final String NAME = "name";
public static final String FIRST_NAME = "first_name";
public static final String LAST_NAME = "last_name";
public static final String EMAILS_EMAIL = "email";
public static final String EMAILS = "emails";
public static final String PRIMARY = "primary";
public static final String EMAILS_EMAIL_VERIFIED = "verified";
}
private String name;
private String firstName;
private String lastName;
private String email;
private boolean verified = false;
public EventBriteAuthUser(final JsonNode node,
final EventBriteAuthInfo info, final String state) {
super(node.get(Constants.ID).asText(), info, state);
if (node.has(Constants.FIRST_NAME)) {
this.firstName = node.get(Constants.FIRST_NAME).asText();
}
if (node.has(Constants.LAST_NAME)) {
this.lastName = node.get(Constants.LAST_NAME).asText();
}
if (node.has(Constants.NAME)) {
this.name = node.get(Constants.NAME).asText();
}
if (node.has(Constants.EMAILS)) {
final JsonNode eMailsNode = node.get(Constants.EMAILS);
Logger.debug("Emails : " + eMailsNode);
for (final JsonNode jsonNode : eMailsNode) {
if (jsonNode.get(Constants.PRIMARY).asBoolean(false)) {
this.email = jsonNode.get(Constants.EMAILS_EMAIL).asText();
this.verified = jsonNode.get(Constants.EMAILS_EMAIL_VERIFIED).asBoolean();
Logger.debug("Found primary email: " + this.email);
break;
} else if(this.email == null) {
this.email = jsonNode.get(Constants.EMAILS_EMAIL).asText();
this.verified = jsonNode.get(Constants.EMAILS_EMAIL_VERIFIED).asBoolean();
Logger.debug("First email: " + this.email);
}
}
}
}
@Override
public String getProvider() {
return EventBriteAuthProvider.PROVIDER_KEY;
}
@Override
public String getName() {
return name;
}
@Override
public String getFirstName() {
return firstName;
}
@Override
public String getLastName() {
return lastName;
}
@Override
public String getEmail() {
return email;
}
public boolean isVerified() {
return verified;
}
}