package org.pac4j.oauth.profile.strava;
import java.net.URI;
import java.util.Date;
import java.util.List;
import org.pac4j.core.profile.Gender;
import org.pac4j.core.util.CommonHelper;
import org.pac4j.oauth.profile.OAuth20Profile;
/**
* <p>This class is the user profile for Strava with appropriate getters.</p>
* <p>It is returned by the {@link org.pac4j.oauth.client.StravaClient}.</p>
*
* @since 1.7.0
* @author Adrian Papusoi
*/
public class StravaProfile extends OAuth20Profile {
private static final long serialVersionUID = 995023712830997358L;
private static final String STRAVA_PROFILE_BASE_URL = "http://www.strava.com/athletes/";
@Override
public String getFirstName() {
return (String) getAttribute(StravaProfileDefinition.FIRST_NAME);
}
@Override
public String getFamilyName() {
return (String) getAttribute(StravaProfileDefinition.LAST_NAME);
}
@Override
public String getDisplayName() {
return (String) getAttribute(StravaProfileDefinition.FIRST_NAME) + " " + getAttribute(StravaProfileDefinition.LAST_NAME);
}
@Override
public URI getPictureUrl() {
return (URI) getAttribute(StravaProfileDefinition.PROFILE);
}
@Override
public URI getProfileUrl() {
return CommonHelper.asURI(STRAVA_PROFILE_BASE_URL + (String) getAttribute(StravaProfileDefinition.ID));
}
@Override
public String getLocation() {
return (String) getAttribute(StravaProfileDefinition.CITY);
}
@Override
public Gender getGender() {
return (Gender) getAttribute(StravaProfileDefinition.SEX);
}
public Integer getResourceState() {
return (Integer) getAttribute(StravaProfileDefinition.RESOURCE_STATE);
}
public String getProfileMedium() {
return (String) getAttribute(StravaProfileDefinition.PROFILE_MEDIUM);
}
public String getState() {
return (String) getAttribute(StravaProfileDefinition.STATE);
}
public String getCountry() {
return (String) getAttribute(StravaProfileDefinition.COUNTRY);
}
public Boolean isPremium() {
return (Boolean) getAttribute(StravaProfileDefinition.PREMIUM);
}
public Date getCreatedAt() {
return (Date) getAttribute(StravaProfileDefinition.CREATED_AT);
}
public Date getUpdatedAt() {
return (Date) getAttribute(StravaProfileDefinition.UPDATED_AT);
}
public Integer getFollowerCount() {
return (Integer) getAttribute(StravaProfileDefinition.FOLLOWER_COUNT);
}
public Integer getFriendCount() {
return (Integer) getAttribute(StravaProfileDefinition.FRIEND_COUNT);
}
public String getDatePreference() {
return (String) getAttribute(StravaProfileDefinition.DATE_PREFERENCE);
}
public String getMeasurementPreference() {
return (String) getAttribute(StravaProfileDefinition.MEASUREMENT_PREFERENCE);
}
public List<StravaGear> getBikes() {
return (List<StravaGear>) getAttribute(StravaProfileDefinition.BIKES);
}
public List<StravaGear> getShoes() {
return (List<StravaGear>) getAttribute(StravaProfileDefinition.SHOES);
}
public List<StravaClub> getClubs() {
return (List<StravaClub>) getAttribute(StravaProfileDefinition.CLUBS);
}
}