@ file : Suppress (" Remove Cur ly Br aces From Template ") Ċ Ċ package Ġcom . av ito . android . plugin . build _ metrics Ċ Ċ import Ġcom . av ito . android . gradle . profile . Build Profile Ċ import Ġcom . av ito . android . sentry . sentry Ċ import Ġcom . av ito . kotlin . dsl . get Optional String Property Ċ import Ġio . sentry . connection . Event Send Callback Ċ import Ġio . sentry . event . Event Ċ import Ġorg . gradle . Build Result Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . logging . Logger Ċ Ċ // todo ĠÐ²Ñĭ Ð½ ÐµÑģÑĤ Ð¸ ĠÐ² ĠÑĦ Ð°Ð± ÑĢ Ð¸Ðº Ñĥ ĠÐ· Ð½ Ð°Ð½Ð¸Ñı ĠÐ¿ÑĢÐ¾ Ġproject Ċ internal Ġclass ĠS entry Consumer ( ĊĠĠĠ Ġproject : ĠProject Ċ ) Ġ: ĠAbstract Metrics Consumer () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= Ġproject . logger ĊĠĠĠ Ġprivate Ġval Ġs entry Ġ= Ġproject . sentry ĊĠĠĠ Ġprivate Ġval Ġs entry Url : ĠString ? Ġ= Ġproject . get Optional String Property (" av ito . sentry . project Url ") ĊĠĠĠ Ġprivate Ġval Ġcaptured Outputs Ġ= Ġmutable Set Of < Int >() ĊĠĠĠ Ġprivate Ġvar Ġhas Send Callback Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġon Output ( output : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDo Ġnot Ġprint Ġor Ġlog Ġhere . ĠIt 'll Ġcause Ġinfinite Ġrecursion . ĊĠĠĠĠĠĠĠ Ġif Ġ( is Capt ured ( output )) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( output . contains ( log Tag )) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . startsWith (" Could Ġnot Ġstore Ġentry Ġ") Ġ-> Ġhandle Cache Error ( output ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . startsWith (" Could Ġnot Ġload Ġentry Ġ") Ġ-> Ġhandle Cache Error ( output ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Cache Error ( output : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrecord Capture ( output ) ĊĠĠĠĠĠĠĠ Ġsend Exception ( Gradle Cache Error ( output . toString ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTo Ġdeal Ġwith Ġduplicated Ġmessages ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Capt ured ( output : ĠCharSequence ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcaptured Outputs . contains ( output . hashCode ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrecord Capture ( output : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcaptured Outputs . add ( output . hashCode ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild Finished ( build Result : ĠBuild Result , Ġprofile : ĠBuild Profile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfailure Ġ= Ġbuild Result . failure Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġsend Exception ( failure ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Exception ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! has Send Callback ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs entry . get (). add Event Send Callback ( Default Send Callback ( log Ġ= Ġlog , Ġs entry Url Ġ= Ġs entry Url )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Send Callback Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġs entry . get (). send Exception ( error ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ private Ġclass ĠDefault Send Callback ( ĊĠĠĠ Ġprivate Ġval Ġlog : ĠLogger , ĊĠĠĠ Ġprivate Ġval Ġs entry Url : ĠString ? Ċ ) Ġ: ĠEvent Send Callback Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonSuccess ( event : ĠEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhash Ġ= Ġevent . id . toString (). replace ("- ", Ġ"") ĊĠĠĠĠĠĠĠ Ġif Ġ( sentry Url . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . lifecycle ("${ log Tag } ĠError Ġsent ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . lifecycle ("${ log Tag } ĠError Ġsent : Ġ$ sentry Url ? query =$ hash ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Failure ( event : ĠEvent , Ġexception : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcause Ġ= Ġexception . java Class . simple Name Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠâĨ Ĳ Ġ" Ġ+ Ġexception . cause ?. java Class ?. name Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ": Ġ" Ġ+ Ġexception . cause ?. message ĊĠĠĠĠĠĠĠ Ġlog . warn ("${ log Tag } ĠCan 't Ġsend Ġerror : Ġ$ cause . Ġ\ n Check Ġyour Ġconnection .") ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ private Ġconst Ġval Ġlog Tag Ġ= Ġ"[ sentry ]" Ċ Ċ internal Ġclass ĠGradle Cache Error ( message : ĠString ) Ġ: ĠException ( message ) Ċ