package Ġcom . ex emplo . astro image md od ia . configuration Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . ex emplo . astro image md od ia . data . repositories . Image Day Data Repository Ċ import Ġcom . ex emplo . astro image md od ia . data . services . Config Service Ċ import Ġcom . ex emplo . astro image md od ia . data . services . N asa Service Imp Ċ import Ġcom . ex emplo . astro image md od ia . data . vol ley . Vol ley Adapter Ċ import Ġcom . ex emplo . astro image md od ia . domain . repositories . Image Day Repository Ċ import Ġcom . ex emplo . astro image md od ia . domain . use cases . Get Image Day UseCase Ċ Ċ class ĠApp Module ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġapp Module : ĠApp Module ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Module Ġ?: Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Module Ġ?: ĠApp Module ( context ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Module Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġvol ley Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Service Ġ= ĠConfig Service () ĊĊĠĠĠĠĠĠĠ ĠVol ley Adapter . Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( config Service . get Api Url ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add QueryParameter (" api _ key ", Ġconfig Service . get ApiKey ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġn asa Service Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠN asa Service Imp ( vol ley Adapter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġimage Day Data Repository : ĠImage Day Repository Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠImage Day Data Repository ( nasa Service ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠgetImage Day UseCase Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠGet Image Day UseCase ( image Day Data Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetImage Day UseCase () Ġ= ĠgetImage Day UseCase Ċ }