package Ġcom . ish ub h ams ing h . jenkins . inter actor čĊč Ċ import Ġcom . ish ub h ams ing h . jenkins . Constants č Ċ import Ġcom . ish ub h ams ing h . jenkins . core . exception . Failure č Ċ import Ġcom . ish ub h ams ing h . jenkins . core . functional . Either č Ċ import Ġcom . ish ub h ams ing h . jenkins . data . Preferences č Ċ import Ġcom . ish ub h ams ing h . jenkins . models . Home č Ċ import Ġokhttp 3 . Headers č Ċ import Ġru . g ild or . coroutines . ret rofit . Result č Ċ import Ġru . g ild or . coroutines . ret rofit . await Result č Ċ import Ġjavax . inject . Inject čĊč Ċ /** čĊ Ġ* ĠCreated Ġby ĠSh ub ham ĠSing h Ġon Ġ 1 5 - 0 7 - 2 0 1 9 . čĊ Ġ*/ čĊč Ċ class ĠGet J enkins Data Use case Ġ@ Inject Ġconstructor ( val Ġpreferences : ĠPreferences ) Ġ: ĠUse Case < Home , ĠUse Case . None >() Ġ{ čĊčĊĠĠĠ Ġvar Ġurl : ĠString Ġ= Ġpreferences . fetch String ( Constants . KEY _ URL ) čĊčĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġrun (): ĠEither < Failure , ĠHome > Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠResult < Home > Ġ= Ġif ( preferences . fetch Boolean ( Constants . KEY _ IS _ AUTHOR I SED )) Ġ{ jenkins Auth Api . get J enkins Instance Info ("$ url / api / json / "). await Result () Ġ} Ġelse Ġ{ jenkins Api . get J enkins Instance Info ("$ url / api / json / "). await Result ()} čĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( result ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Successful ĠHTTP Ġresult čĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Ok Ġ-> ĠEither . Right ( result . value ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAny ĠHTTP Ġerror čĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Error Ġ-> ĠEither . Left ( get Failure ( result )) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠException Ġwhile Ġrequest Ġinvocation čĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Exception Ġ-> ĠEither . Left ( get FailureException ( result . exception )) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} čĊč Ċ }