package Ġio . github . w ulkan owy . sdk . sc rapper . repository Ċ Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . Sc rapper Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . Sc rapper Exception Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . exception . Temp or arily Disabled Exception Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . get Normalized Symbol Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . get Script Param Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . interceptor . ErrorHandler Transformer Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . login . Account Permission Exception Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . login . Certificate Response Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . login . Login Helper Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . register . Send Certificate Response Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . register . Student Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . register . Student And Parent Response Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . repository . Account Repository . Companion . SELECT OR _ AD FS Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . repository . Account Repository . Companion . SELECT OR _ AD FS _ CAR DS Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . repository . Account Repository . Companion . SELECT OR _ AD FS _ LIGHT Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . repository . Account Repository . Companion . SELECT OR _ STANDARD Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . service . Register Service Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . service . Service Manager Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . service . Student And Parent Service Ċ import Ġio . github . w ulkan owy . sdk . sc rapper . service . Student Service Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Single Ċ import Ġorg . js oup . J soup Ċ import Ġorg . js oup . parser . Parser Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . net . URL Ċ Ċ class ĠRegister Repository ( ĊĠĠĠ Ġprivate Ġval Ġstart Symbol : ĠString , ĊĠĠĠ Ġprivate Ġval Ġemail : ĠString , ĊĠĠĠ Ġprivate Ġval Ġpassword : ĠString , ĊĠĠĠ Ġprivate Ġval Ġuse New Student : ĠBoolean , ĊĠĠĠ Ġprivate Ġval Ġlogin Helper : ĠLogin Helper , ĊĠĠĠ Ġprivate Ġval Ġregister : ĠRegister Service , ĊĠĠĠ Ġprivate Ġval Ġs np : ĠStudent And Parent Service , ĊĠĠĠ Ġprivate Ġval Ġstudent : ĠStudent Service , ĊĠĠĠ Ġprivate Ġval Ġurl : ĠService Manager . Url Generator Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( this :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Students (): ĠSingle < List < Student >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Symbols (). flatMap Observable Ġ{ ĠObservable . from Iterable ( it ) Ġ}. flatMap Ġ{ Ġ( symbol , Ġcertificate ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Helper . send Certificate ( certificate , Ġemail , Ġcertificate . action . replace ( start Symbol . get Normalized Symbol (), Ġsymbol )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Resume Next Ġ{ Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( t Ġis ĠAccount Permission Exception ) ĠSingle . just ( Send Certificate Response ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠSingle . error ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Observable Ġ{ ĠObservable . from Iterable ( if Ġ( use New Student ) Ġit . student Sch ools Ġelse Ġit . old Student Sch ools ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Single Ġ{ Ġmodule Url Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Login Type ( symbol ). flatMap Ġ{ Ġlogin Type Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Students ( symbol , Ġmodule Url . attr (" href ")). map Ġ{ Ġstudents Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudents . map Ġ{ Ġstudent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStudent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġemail , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsymbol Ġ= Ġsymbol , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudent Id Ġ= Ġstudent . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudent Name Ġ= Ġstudent . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschool Symbol Ġ= Ġget Extract ed School Symbol From Url ( module Url . attr (" href ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschool ShortName Ġ= Ġmodule Url . text (). take If Ġ{ Ġ" Uc zeÅĦ " Ġ! in Ġit Ġ}. or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschool Name Ġ= Ġstudent . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġstudent . className , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Id Ġ= Ġstudent . class Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbaseUrl Ġ= Ġurl . generate ( Service Manager . Url Generator . Site . BASE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Type Ġ= Ġlogin Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Parent Ġ= Ġstudent . is Parent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. toList (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . flatten (). distinct By Ġ{ Ġp up il Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( pup il . student Id , Ġp up il . class Id , Ġp up il . school Symbol ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Symbols (): ĠSingle < List < Pair < String , ĠCertificate Response >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Login Type ( start Symbol . get Normalized Symbol ()). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Helper . apply Ġ{ Ġlogin Type Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ Ġlogin Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin . send Credentials ( email , Ġpassword ). flatMap Ġ{ ĠSingle . just ( it ) Ġ}. flatMap Ġ{ Ġcert Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( J soup . parse ( cert . w result . replace (" :", Ġ""), Ġ"", ĠParser . xml Parser ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select ("[ AttributeName $ =\" Instance \"] Ġs aml AttributeValue ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . text (). trim () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġlogger . debug ("$ this ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . matches ("[ a - zA - Z 0 - 9 ]* ". to Regex ()) Ġ} Ġ// Ġearly Ġfilter Ġinvalid Ġsymbols ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠPair ( it , Ġcert ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Login Type ( symbol : ĠString ): ĠSingle < Sc rapper . Login Type > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Login Type ( url . also Ġ{ Ġit . symbol Ġ= Ġsymbol Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Login Type ( url Generator : ĠService Manager . Url Generator ): ĠSingle < Sc rapper . Login Type > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġregister . get Form Type ( url Generator . generate ( Service Manager . Url Generator . Site . LOGIN ) Ġ+ Ġ" Account / Log On "). map Ġ{ Ġit . page Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . select ( SELECT OR _ STANDARD ). isNotEmpty () Ġ-> ĠSc rapper . Login Type . STANDARD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . select ( SELECT OR _ AD FS ). isNotEmpty () Ġ-> ĠSc rapper . Login Type . AD FS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . select ( SELECT OR _ AD FS _ LIGHT ). isNotEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . select First (" form "). attr (" action "). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontains (" cu fs . edu . l ub lin . eu ") Ġ-> ĠSc rapper . Login Type . ADF SL ight Cu fs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart sWith ("/ Login Page . aspx ") Ġ-> ĠSc rapper . Login Type . ADF SL ight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart sWith ("/ ${ url Generator . symbol }/ Login Page . aspx ") Ġ-> ĠSc rapper . Login Type . ADF SL ight Scoped ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠSc rapper Exception (" N ie zn any Ġtyp Ġdz ien n ika ĠA DFS ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . select ( SELECT OR _ AD FS _ CAR DS ). isNotEmpty () Ġ-> ĠSc rapper . Login Type . ADF SC ards ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠSc rapper Exception (" N ie zn any Ġtyp Ġdz ien n ika ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Students ( symbol : ĠString , Ġschool Url : ĠString ): ĠSingle < List < Student And Parent Response . Student >> Ġ{ ĊĠĠĠĠĠĠĠ Ġurl . school Id Ġ= Ġget Extract ed School Symbol From Url ( school Url ) ĊĠĠĠĠĠĠĠ Ġurl . symbol Ġ= Ġsymbol ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! use New Student ) Ġs np . get School Info ( school Url ). map Ġ{ Ġres Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres . students . map Ġ{ Ġstudent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudent . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġres . school Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġres . di aries [ 0 ]. name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġstudent . getStart ( url . generate ( Service Manager . Url Generator . Site . ST UD ENT ) Ġ+ Ġ" Start "). onError Resume Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠTemp or arily Disabled Exception ) ĠSingle . just ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠSingle . error ( it ) ĊĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ Ġstart Page Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( start Page . isBlank ()) Ġreturn @ flatMap ĠSingle . just < List < Student And Parent Response . Student >>( listOf ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstudent . getUser Cache ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl . generate ( Service Manager . Url Generator . Site . ST UD ENT ) Ġ+ Ġ" Uc zen Cache . mvc / Get ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Script Param (" anti F org ery Token ", Ġstart Page ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Script Param (" app Guid ", Ġstart Page ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Script Param (" version ", Ġstart Page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). flatMap Ġ{ Ġcache Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstudent . get School Info ( url . generate ( Service Manager . Url Generator . Site . ST UD ENT ) Ġ+ Ġ" Uc zen Dz ien nik . mvc / Get ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( ErrorHandler Transformer ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . data . or Empty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . filter Ġ{ Ġdi ary Ġ-> Ġdi ary . se me sters ?. isNotEmpty () Ġ?: Ġfalse Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . sorted By Descending Ġ{ Ġdi ary Ġ-> Ġdi ary . level Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġdi ary Ġ-> Ġdi ary . distinct By Ġ{ ĠlistOf ( it . student Id , Ġit . se me sters ! ![ 0 ]. class Id ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġdi aries Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdi aries . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStudent And Parent Response . Student (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġit . student Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġ"${ it . student Name } Ġ${ it . student S urname }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġget Script Param (" organization Name ", Ġstart Page , Ġit . symbol Ġ+ Ġ" Ġ" Ġ+ Ġ( it . year Ġ- Ġit . level Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠclassName Ġ= Ġit . level . toString () Ġ+ Ġit . symbol ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Id Ġ= Ġit . se me sters ! ![ 0 ]. class Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Parent Ġ= Ġcache . data ?. is Parent Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Extract ed School Symbol From Url ( s np Page Url : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠURL ( s np Page Url ). path . split ("/") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( 6 Ġ!= Ġpath . size Ġ&& Ġ! use New Student ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠSc rapper Exception (" Na Ġp ew no ĠuÅ¼y was z Ġkont a Ġz Ġdost ÄĻ pem Ġdo ĠW itr yn y Ġuc zn ia Ġi Ġro dz ica ?") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġpath [ 2 ] ĊĠĠĠ Ġ} Ċ } Ċ