package Ġorg . ost el co . prime . auth Ċ Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġorg . ost el co . prime . model . Identity Ċ import Ġjava . util .* Ċ Ċ class ĠApple Id Authenticator ( private Ġval Ġclaims : ĠJsonNode ) Ġ{ ĊĊĠĠĠ Ġfun Ġauthenticate (): ĠOptional < AccessToken Principal > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapple Ġ= Ġclaims . path (" apple ") ĊĠĠĠĠĠĠĠ Ġval Ġidentity : ĠString ? Ġ= Ġapple . get (" identity "). text Value () ĊĠĠĠĠĠĠĠ Ġval Ġprovider : ĠString ? Ġ= Ġapple . get (" provider "). text Value () ĊĠĠĠĠĠĠĠ Ġval Ġtype : ĠString ? Ġ= Ġapple . get (" type "). text Value () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( identity Ġ!= Ġnull Ġ&& Ġtype Ġ!= Ġnull Ġ&& Ġprovider Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional . of ( AccessToken Principal ( Identity ( id Ġ= Ġidentity , Ġtype Ġ= Ġtype , Ġprovider Ġ= Ġprovider ))) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOptional . empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ