001package org.nuxeo.ecm.platform.oauth2.openid.auth.github; 002 003import java.util.Date; 004 005import org.nuxeo.ecm.platform.oauth2.openid.auth.OpenIDUserInfo; 006 007import com.google.api.client.json.GenericJson; 008import com.google.api.client.util.DateTime; 009import com.google.api.client.util.Key; 010 011/** 012 * Github user info 013 * 014 * @author <a href="mailto:ak@nuxeo.com">Arnaud Kervern</a> 015 * @since 5.9.5 016 */ 017public class GithubUserInfo extends GenericJson implements OpenIDUserInfo { 018 019 @Key("sub") 020 protected String subject; 021 022 @Key("name") 023 protected String name; 024 025 @Key("given_name") 026 protected String givenName; 027 028 @Key("family_name") 029 protected String familyName; 030 031 @Key("middle_name") 032 protected String middleName; 033 034 @Key("nickname") 035 protected String nickname; 036 037 @Key("preferred_username") 038 protected String preferredUsername; 039 040 @Key("profile") 041 protected String profile; 042 043 @Key("picture") 044 protected String picture; 045 046 @Key("website") 047 protected String website; 048 049 @Key("email") 050 protected String email; 051 052 @Key("email_verified") 053 protected boolean emailVerified; 054 055 @Key("gender") 056 protected String gender; 057 058 @Key("birthdate") 059 protected Date birthdate; 060 061 @Key("zoneinfo") 062 protected String zoneInfo; 063 064 @Key("locale") 065 protected String locale; 066 067 @Key("phone_number") 068 protected String phoneNumber; 069 070 @Key("address") 071 protected String address; 072 073 @Key("updated_time") 074 protected String updatedTime; 075 076 @Key 077 protected String bio; 078 079 @Key 080 protected String blog; 081 082 @Key 083 protected String company; 084 085 @Override 086 public String getSubject() { 087 return getEmail(); 088 } 089 090 @Override 091 public String getName() { 092 return name; 093 } 094 095 @Override 096 public String getMiddleName() { 097 return middleName; 098 } 099 100 @Override 101 public String getPreferredUsername() { 102 return preferredUsername; 103 } 104 105 @Override 106 public String getProfile() { 107 return profile; 108 } 109 110 @Override 111 public String getPicture() { 112 return picture; 113 } 114 115 @Override 116 public String getWebsite() { 117 return website; 118 } 119 120 @Override 121 public String getEmail() { 122 return email; 123 } 124 125 @Override 126 public boolean isEmailVerified() { 127 return emailVerified; 128 } 129 130 @Override 131 public String getGender() { 132 return gender; 133 } 134 135 @Override 136 public Date getBirthdate() { 137 return birthdate; 138 } 139 140 @Override 141 public String getZoneInfo() { 142 return zoneInfo; 143 } 144 145 @Override 146 public String getLocale() { 147 return locale; 148 } 149 150 @Override 151 public String getPhoneNumber() { 152 return phoneNumber; 153 } 154 155 @Override 156 public String getAddress() { 157 return address; 158 } 159 160 @Override 161 public Date getUpdatedTime() { 162 Date date; 163 try { 164 DateTime dateTime = DateTime.parseRfc3339(updatedTime); 165 date = new Date(dateTime.getValue()); 166 } catch (NumberFormatException e) { 167 return null; 168 } 169 return date; 170 } 171 172 @Key(value = "login") 173 protected String login; 174 175 @Override 176 public String getGivenName() { 177 return splitNameField(0); 178 } 179 180 @Override 181 public String getFamilyName() { 182 return splitNameField(1); 183 } 184 185 @Override 186 public String getNickname() { 187 return login; 188 } 189 190 public String getBlog() { 191 return blog; 192 } 193 194 public String getBio() { 195 return bio; 196 } 197 198 public String getCompany() { 199 return company; 200 } 201 202 public String getLogin() { 203 return login; 204 } 205 206 public String splitNameField(int index) { 207 String[] strings = name.split(" "); 208 if (index >= strings.length) { 209 return name; 210 } else { 211 return strings[index]; 212 } 213 } 214}