/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġdz iko ys k Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . repos il ite . frontend . application Ċ Ċ import Ġcom . repos il ite . config . Configuration Ċ import Ġcom . repos il ite . frontend . Frontend Facade Ċ import Ġcom . repos il ite . frontend . infrastructure . Custom Frontend Handler Ċ import Ġcom . repos il ite . frontend . infrastructure . Resources Frontend Handler Ċ import Ġcom . repos il ite . shared . safe Resolve Ċ import Ġcom . repos il ite . web . Repos il ite Routes Ċ import Ġio . jav al in . J aval in Ċ import Ġio . jav al in . http . NotFound Response Ċ import Ġjava . nio . file . Path Ċ import Ġkotlin . io . path . exists Ċ Ċ internal Ġobject ĠFrontend Web Configuration Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠCUSTOM _ FRONT END _ DIRECTORY Ġ= Ġ" frontend " ĊĊĠĠĠ Ġfun Ġcreate Facade ( configuration : ĠConfiguration ): ĠFrontend Facade Ġ= ĊĠĠĠĠĠĠĠ ĠFrontend Facade ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . basePath , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . title , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration . cache Content ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġrouting ( frontend Facade : ĠFrontend Facade , Ġworking Directory : ĠPath ): ĠSet < Repos il ite Routes > Ġ= ĊĠĠĠĠĠĠĠ Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworking Directory . safe Resolve ( CUSTOM _ FRONT END _ DIRECTORY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġit . exists () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĠCustom Frontend Handler ( frontend Facade , Ġworking Directory . safe Resolve ( CUSTOM _ FRONT END _ DIRECTORY )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠResources Frontend Handler ( frontend Facade ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġj aval in ( app : ĠJ aval in , Ġfrontend Facade : ĠFrontend Facade ) Ġ{ ĊĠĠĠĠĠĠĠ Ġapp . exception ( NotFound Response :: class . java , ĠNotFound Handler ( frontend Facade )) ĊĠĠĠĠĠĠĠ Ġapp . error ( 4 0 4 , ĠNotFound Handler ( frontend Facade )) ĊĠĠĠ Ġ} Ċ Ċ }