package Ġ` in `. spec matic . core Ċ Ċ const Ġval ĠPATH _ NOT _ RE CO GN IZED _ ERROR Ġ= Ġ" Match Ġnot Ġfound " Ċ Ċ data Ġclass ĠResults ( val Ġresults : ĠList < Result > Ġ= Ġempty List ()) Ġ{ ĊĠĠĠ Ġfun Ġhas Results (): ĠBoolean Ġ= Ġresults . isNotEmpty () ĊĊĠĠĠ Ġfun Ġhas Failures (): ĠBoolean Ġ= Ġresults . any Ġ{ Ġit Ġis ĠResult . Failure Ġ} ĊĠĠĠ Ġfun Ġsuccess (): ĠBoolean Ġ= Ġ! has Failures () ĊĊĠĠĠ Ġfun Ġwithout Fl uff ( fl uff Level : ĠInt ): ĠResults Ġ= Ġcopy ( results Ġ= Ġresults . filter Not Ġ{ Ġit . is Fl uff y ( fl uff Level ) Ġ}) ĊĊĠĠĠ Ġfun Ġwithout Fl uff (): ĠResults Ġ= Ġcopy ( results Ġ= Ġminimum Fl uff ()) ĊĊĠĠĠ Ġprivate Ġfun Ġminimum Fl uff () Ġ= Ġresults . filter Not Ġ{ Ġit . is Fl uff y () Ġ}. if Empty Ġ{ Ġresults . filter Not Ġ{ Ġit . is Fl uff y ( 1 ) Ġ} Ġ} ĊĊĠĠĠ Ġfun Ġto Result If Any (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresults . find Ġ{ Ġit Ġis ĠResult . Success Ġ} Ġ?: ĠResult . Failure ( results . join ToString ("\ n \ n ") Ġ{ Ġit . to Report (). to Text () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġfailure Count ĊĠĠĠĠĠĠĠ Ġget (): ĠInt Ġ= Ġresults . count Ġ{ Ġit Ġis ĠResult . Failure Ġ} ĊĊĠĠĠ Ġval Ġsuccess Count ĊĠĠĠĠĠĠĠ Ġget (): ĠInt Ġ= Ġresults . count Ġ{ Ġit Ġis ĠResult . Success Ġ} ĊĊĠĠĠ Ġfun Ġgenerate Error HttpResponse ( httpRequest : ĠHttpRequest ): ĠHttpResponse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreport Ġ= Ġreport (" "). trim () ĊĊĠĠĠĠĠĠĠ Ġval Ġdefault Headers Ġ= Ġmap Of (" Content - Type " Ġto Ġ" text / plain ", ĠSPE CM AT IC _ RESULT _ HEADER Ġto Ġ" failure ") ĊĠĠĠĠĠĠĠ Ġval Ġheaders Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport . isEmpty () Ġ-> Ġdefault Headers . plus ( SPE CM AT IC _ EMPTY _ HEADER Ġto Ġ" true ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdefault Headers ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠhttpRequest . let Ġ{ ĠhttpRequest . request Not Re cognized () Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠHttpResponse ( 4 0 0 , Ġreport ( message ), Ġheaders ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreport ( httpRequest : ĠHttpRequest ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġreport ( httpRequest . request Not Re cognized ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstrict Mode Report ( httpRequest : ĠHttpRequest ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġreport ( httpRequest . request Not Re cognized In Strict Mode ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreport ( default Message : ĠString Ġ= ĠPATH _ NOT _ RE CO GN IZED _ ERROR ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Results Ġ= Ġwithout Fl uff (). results . filter Is Instance < Result . Failure >() ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Results . isNotEmpty () Ġ-> Ġlist To Report ( filtered Results ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdefault Message . trim () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdistinct Report ( default Message : ĠString Ġ= ĠPATH _ NOT _ RE CO GN IZED _ ERROR ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Results Ġ= Ġwithout Fl uff (). results . filter Is Instance < Result . Failure >() ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Results . isNotEmpty () Ġ-> Ġlist To Distinct Report ( filtered Results ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdefault Message . trim () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġplus ( other : ĠResults ): ĠResults Ġ= ĠResults ( results . plus ( other . results )) ĊĊĠĠĠ Ġfun Ġdistinct (): ĠResults Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfiltered Results Ġ= Ġwithout Fl uff (). results ĊĠĠĠĠĠĠĠ Ġval Ġresult Reports Ġ= Ġfiltered Results . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Failure Ġ-> Ġit . to Failure Report (). to Text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġunique Results : ĠList < Result > Ġ= Ġfiltered Results . fold Indexed ( emptyList ()) Ġ{ Ġindex , Ġacc , Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreport Ġ= Ġresult Reports [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( result Reports . indexOf ( report ) Ġ== Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġacc . plus ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġacc ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġacc . plus ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResults ( unique Results ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġlist To Report ( results : ĠList < Result >): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġresults . filter Is Instance < Result . Failure >(). map Ġ{ ĊĠĠĠĠĠĠĠ Ġit . to Failure Report (). to Text () ĊĠĠĠ Ġ}. join ToString ("${ System . line Separator ()} ${ System . line Separator () }") Ċ } Ċ Ċ private Ġfun Ġlist To Distinct Report ( results : ĠList < Result >): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġresults . filter Is Instance < Result . Failure >(). map Ġ{ ĊĠĠĠĠĠĠĠ Ġit . to Failure Report (). to Text () ĊĠĠĠ Ġ}. distinct (). join ToString ("${ System . line Separator ()} ${ System . line Separator () }") Ċ } Ċ