package Ġdev . top pe . img . host . route Ċ Ċ import Ġdev . top pe . img . host . Raw Image Ċ import Ġdev . top pe . img . host . View Image Ċ import Ġdev . top pe . img . host . database . Image Database Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . fre emark er . Free Marker Content Ċ import Ġio . ktor . http . ContentType Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . http . content . Local FileContent Ċ import Ġio . ktor . http . from FilePath Ċ import Ġio . ktor . locations . get Ċ import Ġio . ktor . response . respond Ċ import Ġio . ktor . routing . Route Ċ import Ġorg . bson . types . ObjectId Ċ import Ġjava . io . File Ċ Ċ fun ĠRoute . view Image ( image Database : ĠImage Database ) Ġ{ ĊĊĠĠĠ Ġget < View Image > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! ObjectId . isValid ( it . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . BadRequest ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġfile Ġextension Ġif Ġpresent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġstrip Extension ( it . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg Ġ= Ġimage Database . find Image ById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( img Ġ== Ġnull Ġ|| Ġ! img . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . NotFound ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFree Marker Content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" image . ft l ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" image " Ġto Ġimg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġget < Raw Image > Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ(! ObjectId . isValid ( it . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . NotFound ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġfile Ġextension Ġif Ġpresent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġstrip Extension ( it . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimg Ġ= Ġimage Database . find Image ById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( img Ġ== Ġnull Ġ|| Ġ! img . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . NotFound ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( img . path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( HttpStatusCode . NotFound ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocal FileContent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType Ġ= ĠContentType . from FilePath ( file . path ). first Ġ{ Ġit . contentType Ġ== Ġ" image " Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Database . update On View ( img , Ġid ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġstrip Extension ( str : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( str . contains (". ")) Ġstr . substring ( 0 , Ġstr . lastIndexOf ('. ')) Ġelse Ġstr Ċ }