package Ġcom . fd uran orte ga . mar vel hero es . data . remote Ċ Ċ import Ġcom . fd uran orte ga . mar vel hero es . Build Config Ċ import Ġokhttp 3 . Interceptor Ċ import Ġokhttp 3 . Response Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . math . BigInteger Ċ import Ġjava . security . Message Digest Ċ Ċ class ĠHttpRequest Interceptor Ġ: ĠInter ceptor Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġconst Ġval ĠMD 5 Ġ= Ġ" MD 5 " ĊĠĠĠ Ġconst Ġval ĠAPI _ KEY _ LABEL Ġ= Ġ" apikey " ĊĠĠĠ Ġconst Ġval ĠHASH _ LABEL Ġ= Ġ" hash " ĊĠĠĠ Ġconst Ġval ĠTIMESTAMP _ LABEL Ġ= Ġ" ts " ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġintercept ( chain : ĠInter ceptor . Chain ): ĠResponse Ġ{ ĊĠĠĠ Ġval Ġtimestamp Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠ Ġval Ġpublic ApiKey Ġ= ĠBuild Config . PUBLIC _ API _ KEY ĊĠĠĠ Ġval Ġprivate ApiKey Ġ= ĠBuild Config . PRIVATE _ API _ KEY ĊĊĠĠĠ Ġval Ġhash Ġ= Ġmd 5 ("$ timestamp $ private ApiKey $ public ApiKey ") ĊĠĠĠ Ġval Ġoriginal Request Ġ= Ġchain . request () ĊĠĠĠ Ġval Ġurl Ġ= Ġoriginal Request . url ĊĠĠĠĠĠ Ġ. newBuilder () ĊĠĠĠĠĠ Ġ. add QueryParameter ( TIMESTAMP _ LABEL , Ġtimestamp . toString ()) ĊĠĠĠĠĠ Ġ. add QueryParameter ( API _ KEY _ LABEL , Ġpublic ApiKey ) ĊĠĠĠĠĠ Ġ. add QueryParameter ( HASH _ LABEL , Ġhash ) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġrequest Ġ= Ġoriginal Request . newBuilder (). url ( url ). build () ĊĠĠĠ ĠTim ber . d ( request . toString ()) ĊĠĠĠ Ġreturn Ġchain . proceed ( request ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġmd 5 ( input : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġval Ġmd Ġ= ĠMessage Digest . getInstance ( MD 5 ) ĊĠĠĠ Ġreturn ĠBigInteger ( 1 , Ġmd . digest ( input . toByteArray ())). toString ( 1 6 ). pad Start ( 3 2 , Ġ' 0 ') ĊĠ Ġ} Ċ } Ċ