package Ġnet . wu ille min . j ds . datas erver . controller Ċ Ċ import Ġio . swagger . annotations . Api Ċ import Ġio . swagger . annotations . ApiOperation Ċ import Ġnet . wu ille min . j ds . common . exception . Denied Permission Exception Ċ import Ġnet . wu ille min . j ds . common . security . server . Authentication Token Ċ import Ġnet . wu ille min . j ds . datas erver . dto . query . Delete Data Query Ċ import Ġnet . wu ille min . j ds . datas erver . dto . query . GetData Query Ċ import Ġnet . wu ille min . j ds . datas erver . dto . query . Insert Data Query Ċ import Ġnet . wu ille min . j ds . datas erver . dto . query . Mass Insert Data Query Ċ import Ġnet . wu ille min . j ds . datas erver . dto . query . Update Data Query Ċ import Ġnet . wu ille min . j ds . datas erver . entity . model . Column Ċ import Ġnet . wu ille min . j ds . datas erver . entity . model . DataSource Ċ import Ġnet . wu ille min . j ds . datas erver . exception . E Ċ import Ġnet . wu ille min . j ds . datas erver . service . access . DataAccess Service Ċ import Ġnet . wu ille min . j ds . datas erver . service . model . DataProvider Service Ċ import Ġnet . wu ille min . j ds . datas erver . service . model . DataSource Service Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . security . access . annotation . Sec ured Ċ import Ġorg . springframework . web . bind . annotation . GetMapping Ċ import Ġorg . springframework . web . bind . annotation . PathVariable Ċ import Ġorg . springframework . web . bind . annotation . PostMapping Ċ import Ġorg . springframework . web . bind . annotation . Put Mapping Ċ import Ġorg . springframework . web . bind . annotation . RequestBody Ċ import Ġorg . springframework . web . bind . annotation . RequestMapping Ċ import Ġorg . springframework . web . bind . annotation . RestController Ċ import Ġspring fox . documentation . annotations . Api Ignore Ċ Ċ /** Ċ Ġ* ĠAPI Ġfor Ġaccessing Ġthe Ġdata Ċ Ġ* Ċ Ġ* Ġ@ param Ġdata Access Service ĠThe Ġbasic Ġservice Ċ Ġ* Ġ@ param ĠdataSource Service ĠThe Ġservice Ġfor Ġretrieving Ġdata Ġsource Ċ Ġ* Ġ@ param Ġdata Provider Server ĠThe Ġservice Ġfor Ġretrieving Ġdata Ġprovider Ċ Ġ* Ġ@ param Ġlogger ĠThe Ġlogger Ċ Ġ*/ Ċ @ RestController Ċ @ RequestMapping (" api / datas erver / v 1 / client ") Ċ @ Api ( tags Ġ= Ġ[" Data Server Ġ- ĠAccess "], Ġdescription Ġ= Ġ" Deliver Ġand Ġupdate Ġdata ") Ċ @ Sec ured ( value Ġ= Ġ[" ROLE _ USER ", Ġ" ROLE _ ADMIN ", Ġ" ROLE _ SERVICE "]) Ċ class ĠData Access Controller ( ĊĠĠĠ Ġprivate Ġval Ġdata Access Service : ĠData Access Service , ĊĠĠĠ Ġprivate Ġval ĠdataSource Service : ĠDataSource Service , ĊĠĠĠ Ġprivate Ġval Ġdata Provider Server : ĠData Provider Service , ĊĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġall Ġthe Ġreadable ĠData Sources ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġauthentication ĠThe Ġauthentication Ġof Ġthe Ġrequest er ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ApiOperation ( value Ġ= Ġ" Get Ġall Ġthe ĠData Sources Ġreadable Ġby Ġthe Ġuser ") ĊĠĠĠ Ġ@ GetMapping (" readable Data Sources ") ĊĠĠĠ Ġfun Ġget Readable Data Sources ( ĊĠĠĠĠĠĠĠ Ġ@ Api Ignore Ġauthentication : ĠAuthentication Token ĊĠĠĠ Ġ): ĠResponseEntity < List < DataSource >> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlogger . debug (" get Readable Data Sources : Ġ${ authentication . get Logging Id () }") ĊĊĠĠĠĠĠĠĠ Ġval Ġdata Sources Ġ= Ġif Ġ( authentication . author ities . none Ġ{ Ġit . toString () Ġ== Ġ" ROLE _ ADMIN " Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource Service . getData Sources For Reader Id ( authentication . permission . userId ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource Service . getData Sources () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( data Sources , ĠHttpStatus . OK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġthe Ġdata Ġfor Ġa Ġdata Ġsource ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbody ĠThe Ġquery ĊĠĠĠĠ Ġ* Ġ@ param Ġauthentication ĠThe Ġauthentication Ġof Ġthe Ġrequest er ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ApiOperation ( value Ġ= Ġ" Get Ġall Ġthe Ġdata Ġfrom Ġa ĠDataSource ") ĊĠĠĠ Ġ@ PostMapping ("{ dataSource Id }/ data ") ĊĠĠĠ Ġfun ĠgetData ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable (" dataSource Id ") ĠdataSource Id : ĠLong , ĊĠĠĠĠĠĠĠ Ġ@ RequestBody Ġbody : ĠGet Data Query , ĊĠĠĠĠĠĠĠ Ġ@ Api Ignore Ġauthentication : ĠAuthentication Token ĊĠĠĠ Ġ): ĠResponseEntity < List < Map < String , ĠAny >>> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlogger . debug (" getData ($ dataSource Id ,$ body ): Ġ${ authentication . get Logging Id () }") ĊĊĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= ĠdataSource Service . getDataSource ById ( dataSource Id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( authentication . author ities . none Ġ{ Ġit . toString () Ġ== Ġ" ROLE _ ADMIN " Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! dataSource . user Allowed To Read Ids . contains ( authentication . permission . userId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDen ied Permission Exception ( E . controller . data Access . getData Denied , Ġauthentication . permission . userId , ĠdataSource . get Logging Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Access Service . getData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . filter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . orders ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġthe Ġlook ups Ġvalues Ġfor Ġa Ġdata Ġsource ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġauthentication ĠThe Ġauthentication Ġof Ġthe Ġrequest er ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ApiOperation ( value Ġ= Ġ" Get Ġall Ġthe Ġlook ups Ġvalues Ġfor Ġa ĠDataSource ") ĊĠĠĠ Ġ@ PostMapping ("{ dataSource Id }/ lookup Values ") ĊĠĠĠ Ġfun Ġget Lookup Values ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable (" dataSource Id ") ĠdataSource Id : ĠLong , ĊĠĠĠĠĠĠĠ Ġ@ Api Ignore Ġauthentication : ĠAuthentication Token ĊĠĠĠ Ġ): ĠResponseEntity < Map < String , ĠMap < String , ĠAny >>> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlogger . debug (" get Lookup Values ($ dataSource Id ): Ġ${ authentication . get Logging Id () }") ĊĊĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= ĠdataSource Service . getDataSource ById ( dataSource Id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( authentication . author ities . none Ġ{ Ġit . toString () Ġ== Ġ" ROLE _ ADMIN " Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! dataSource . user Allowed To Read Ids . contains ( authentication . permission . userId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDen ied Permission Exception ( E . controller . data Access . getData Denied , Ġauthentication . permission . userId , ĠdataSource . get Logging Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Access Service . retrieve All Look ups ( dataProvider Server . getData Provider ById ( dataSource . dataProvider Id )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRetrieve Ġthe Ġcolumns Ġfor Ġa Ġdata Ġsource ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ id ĠThe Ġid Ġof Ġthe ĠdataSource Ġto Ġretrieve ĊĠĠĠĠ Ġ* Ġ@ param Ġauthentication ĠThe Ġauthentication Ġof Ġthe Ġrequest er ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ApiOperation ( value Ġ= Ġ" Get Ġall Ġthe Ġcolumns Ġof Ġa ĠDataSource ") ĊĠĠĠ Ġ@ GetMapping ("{ dataSource Id }/ columns ") ĊĠĠĠ Ġfun Ġget Columns ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable (" dataSource Id ") ĠdataSource Id : ĠLong , ĊĠĠĠĠĠĠĠ Ġ@ Api Ignore Ġauthentication : ĠAuthentication Token ĊĠĠĠ Ġ): ĠResponseEntity < List < Column >> Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlogger . debug (" get Columns ($ dataSource Id ): Ġ${ authentication . get Logging Id () }") ĊĊĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= ĠdataSource Service . getDataSource ById ( dataSource Id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( authentication . author ities . none Ġ{ Ġit . toString () Ġ== Ġ" ROLE _ ADMIN " Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! dataSource . user Allowed To Read Ids . contains ( authentication . permission . userId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDen ied Permission Exception ( E . controller . data Access . get Columns Denied , Ġauthentication . permission . userId , ĠdataSource . get Logging Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Access Service . get Columns ( dataSource ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġnew Ġentry Ġin Ġthe Ġdatabase ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbody ĠThe Ġquery ĊĠĠĠĠ Ġ* Ġ@ param Ġauthentication ĠThe Ġauthentication Ġof Ġthe Ġrequest er ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ApiOperation ( value Ġ= Ġ" Create Ġa Ġnew Ġentry Ġin Ġa ĠDataSource ") ĊĠĠĠ Ġ@ PostMapping ("{ dataSource Id }/ insert ") ĊĠĠĠ Ġfun Ġinsert Data ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable (" dataSource Id ") ĠdataSource Id : ĠLong , ĊĠĠĠĠĠĠĠ Ġ@ RequestBody Ġbody : ĠInsert Data Query , ĊĠĠĠĠĠĠĠ Ġ@ Api Ignore Ġauthentication : ĠAuthentication Token ĊĠĠĠ Ġ): ĠResponseEntity < Int > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlogger . debug (" insert Data ($ dataSource Id ): Ġ${ authentication . get Logging Id () }") ĊĊĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= ĠdataSource Service . getDataSource ById ( dataSource Id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( authentication . author ities . none Ġ{ Ġit . toString () Ġ== Ġ" ROLE _ ADMIN " Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! dataSource . user Allowed To Write Ids . contains ( authentication . permission . userId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDen ied Permission Exception ( E . controller . data Access . insert Denied , Ġauthentication . permission . userId , ĠdataSource . get Logging Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Access Service . insert Data ( dataSource , Ġbody . data ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġmultiple Ġnew Ġentries Ġin Ġthe Ġdatabase ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbody ĠThe Ġquery ĊĠĠĠĠ Ġ* Ġ@ param Ġauthentication ĠThe Ġauthentication Ġof Ġthe Ġrequest er ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ApiOperation ( value Ġ= Ġ" Create Ġmultiple Ġnew Ġentries Ġin Ġa ĠDataSource ") ĊĠĠĠ Ġ@ PostMapping ("{ dataSource Id }/ mass Insert ") ĊĠĠĠ Ġfun Ġmass Insert Data ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable (" dataSource Id ") ĠdataSource Id : ĠLong , ĊĠĠĠĠĠĠĠ Ġ@ RequestBody Ġbody : ĠMass Insert Data Query , ĊĠĠĠĠĠĠĠ Ġ@ Api Ignore Ġauthentication : ĠAuthentication Token ĊĠĠĠ Ġ): ĠResponseEntity < Int > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlogger . debug (" mass Insert Data ($ dataSource Id ): Ġ${ authentication . get Logging Id () }") ĊĊĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= ĠdataSource Service . getDataSource ById ( dataSource Id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( authentication . author ities . none Ġ{ Ġit . toString () Ġ== Ġ" ROLE _ ADMIN " Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! dataSource . user Allowed To Write Ids . contains ( authentication . permission . userId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDen ied Permission Exception ( E . controller . data Access . mass Insert Denied , Ġauthentication . permission . userId , ĠdataSource . get Logging Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Access Service . mass Insert Data ( dataSource , Ġbody . data ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdate Ġexisting Ġentries Ġin Ġthe Ġdatabase ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbody ĠThe Ġquery ĊĠĠĠĠ Ġ* Ġ@ param Ġauthentication ĠThe Ġauthentication Ġof Ġthe Ġrequest er ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ApiOperation ( value Ġ= Ġ" Update Ġexisting Ġentries Ġin Ġa ĠDataSource ") ĊĠĠĠ Ġ@ Put Mapping ("{ dataSource Id }/ update ") ĊĠĠĠ Ġfun Ġupdate Data ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable (" dataSource Id ") ĠdataSource Id : ĠLong , ĊĠĠĠĠĠĠĠ Ġ@ RequestBody Ġbody : ĠUpdate Data Query , ĊĠĠĠĠĠĠĠ Ġ@ Api Ignore Ġauthentication : ĠAuthentication Token ĊĠĠĠ Ġ): ĠResponseEntity < Int > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlogger . debug (" update Data ($ dataSource Id ): Ġ${ authentication . get Logging Id () }") ĊĊĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= ĠdataSource Service . getDataSource ById ( dataSource Id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( authentication . author ities . none Ġ{ Ġit . toString () Ġ== Ġ" ROLE _ ADMIN " Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! dataSource . user Allowed To Write Ids . contains ( authentication . permission . userId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDen ied Permission Exception ( E . controller . data Access . update Denied , Ġauthentication . permission . userId , ĠdataSource . get Logging Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Access Service . update Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . filter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody . data ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDelete Ġexisting Ġentries Ġin Ġthe Ġdatabase ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbody ĠThe Ġquery ĊĠĠĠĠ Ġ* Ġ@ param Ġauthentication ĠThe Ġauthentication Ġof Ġthe Ġrequest er ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ ApiOperation ( value Ġ= Ġ" Delete Ġexisting Ġentries Ġin Ġa ĠDataSource ") ĊĠĠĠ Ġ@ Put Mapping ("{ dataSource Id }/ delete ") ĊĠĠĠ Ġfun Ġdelete Data ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable (" dataSource Id ") ĠdataSource Id : ĠLong , ĊĠĠĠĠĠĠĠ Ġ@ RequestBody Ġbody : ĠDelete Data Query , ĊĠĠĠĠĠĠĠ Ġ@ Api Ignore Ġauthentication : ĠAuthentication Token ĊĠĠĠ Ġ): ĠResponseEntity < Int > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġlogger . debug (" delete Data ($ dataSource Id ): Ġ${ authentication . get Logging Id () }") ĊĊĠĠĠĠĠĠĠ Ġval ĠdataSource Ġ= ĠdataSource Service . getDataSource ById ( dataSource Id ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( authentication . author ities . none Ġ{ Ġit . toString () Ġ== Ġ" ROLE _ ADMIN " Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! dataSource . user Allowed ToDelete Ids . contains ( authentication . permission . userId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠDen ied Permission Exception ( E . controller . data Access . delete Denied , Ġauthentication . permission . userId , ĠdataSource . get Logging Id ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠResponseEntity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Access Service . delete Data ( dataSource , Ġbody . filter ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpStatus . OK ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } ĊĊ