package Ġuc fs . claim ant . consumer . transformer . impl Ċ Ċ import Ġarrow . core . Either Ċ import Ġcom . google . gson . JsonObject Ċ import Ġio . prometheus . client . Counter Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġuc fs . claim ant . consumer . repository . Salt Repository Ċ import Ġuc fs . claim ant . consumer . transformer . Transformer Ċ import Ġuc fs . claim ant . consumer . utility . Gson Extensions . getObject Ċ import Ġuc fs . claim ant . consumer . utility . Gson Extensions . nullable String Ċ import Ġjava . security . Message Digest Ċ import Ġjava . util .* Ċ Ċ @ Component Ċ class ĠClaim ant Transformer ( private Ġval Ġsalt Repository : ĠS alt Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġsalt Failures : ĠCounter ): ĠTransformer Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġtransform ( db Object : ĠJsonObject ): ĠEither < Any , ĠString > Ġ= ĊĠĠĠĠĠĠĠ Ġdb Object . getObject ("_ id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn ino Ġ= Ġdb Object . nullable String (" n ino ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"_ id ": Ġ$ id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" n ino ": Ġ"${ n ino ?. take If ( String :: isNotBlank )?. let ( this :: hash ) Ġ?: Ġ"" Ġ}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhash ( x : ĠString ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( Base 6 4 . get Encoder ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencode ToString ( digest ( x )). replace ('+ ', Ġ'- '). replace ('/', Ġ'_ ') ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdigest ( x : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Digest . getInstance (" SHA - 5 1 2 "). digest ("$ x ${ salt Repository . salt ()} ". toByteArray ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsalt Failures . inc () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ