package Ġcom . ma zen ras hed . log dna android client Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . jak ew h art on . rx relay 2 . Publish Relay Ċ import Ġcom . ma zen ras hed . log dna android client . models . Line Ċ import Ġcom . ma zen ras hed . log dna android client . models . Log Request Ċ import Ġcom . ma zen ras hed . log dna android client . models . Log Result Ċ import Ġcom . ma zen ras hed . log dna android client . network . Service Generator Ċ import Ġcom . ma zen ras hed . log dna android client . utils . Lib Utils Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ object ĠLog D na Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval Ġhost Name Ġ= Ġ" core link - mobile " ĊĠĠĠ Ġprivate Ġvar ĠapiKey : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar ĠappName : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġlog Results Ġ= ĠPublish Relay . create < Log Result >() ĊĠĠĠ Ġvar Ġlog Results Listener : Ġ(( Log Result ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġinit ( apiKey : ĠString , ĠappName : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . apiKey Ġ= ĠapiKey ĊĠĠĠĠĠĠĠ Ġthis . appName Ġ= ĠappName ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlog ( line : ĠLine ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdis posable Ġ= ĠComposite Disposable () ĊĠĠĠĠĠĠĠ Ġval Ġuid Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġval Ġlog Request Ġ= ĠLog Request ( ArrayList < Line >(). apply Ġ{ Ġadd ( line ) Ġ}, Ġuid ) ĊĊĠĠĠĠĠĠĠ Ġdis posable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠService Generator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rest Service ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. log ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis () Ġ/ Ġ 1 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠapiKey Ġ?: Ġerror (" You Ġmust Ġcall ĠLog D na . init () "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Request ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Result Ġ= ĠLog Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Successful , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Successful ) Ġit . body ()?. status !! Ġelse Ġit . error Body ()?. string () !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGson (). fromJson ( Lib Utils . body ToString ( it . raw (). request (). body ()), ĠLog Request :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log Results . has Observer s ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Results . accept ( log Result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Results Listener ?. invoke ( log Result ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis posable . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis posable . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlog ( lines : ĠArrayList < Line >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdis posable Ġ= ĠComposite Disposable () ĊĠĠĠĠĠĠĠ Ġval Ġuid Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġval Ġlog Request Ġ= ĠLog Request ( lines , Ġuid ) ĊĊĠĠĠĠĠĠĠ Ġdis posable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠService Generator ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. rest Service ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. log ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis () Ġ/ Ġ 1 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠapiKey Ġ?: Ġerror (" You Ġmust Ġcall ĠLog D na . init () "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Request ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlog Result Ġ= ĠLog Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Successful , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . is Successful ) Ġit . body ()?. status !! Ġelse Ġit . error Body ()?. string () !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGson (). fromJson ( Lib Utils . body ToString ( it . raw (). request (). body ()), ĠLog Request :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log Results . has Observer s ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Results . accept ( log Result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Results Listener ?. invoke ( log Result ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis posable . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis posable . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ }