package Ġcom . project city build . features . b ans . use cases Ċ Ċ import Ġcom . project city build . core . Regex Ċ import Ġcom . project city build . core . utilities . Failure Ċ import Ġcom . project city build . core . utilities . Result Ċ import Ġcom . project city build . core . utilities . Success Ċ import Ġcom . project city build . features . b ans . Sanit izer Ċ import Ġcom . project city build . repositories . IP Ban Repository Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠU nb an IP UseCase Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġip Ban Repository : ĠIP Ban Repository , Ċ ) Ġ{ ĊĠĠĠ Ġenum Ġclass ĠFailure Reason Ġ{ ĊĠĠĠĠĠĠĠ ĠIP _ NOT _ BAN N ED , ĊĠĠĠĠĠĠĠ ĠINVALID _ IP , ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġun ban IP ( ip : ĠString ): ĠResult < Unit , ĠFailure Reason > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsanitized IP Ġ= ĠSanit izer (). sanit ized IP ( ip ) ĊĊĠĠĠĠĠĠĠ Ġval ĠisValid IP Ġ= ĠRegex . IP . matcher ( sanit ized IP ). matches () ĊĠĠĠĠĠĠĠ Ġif Ġ(! isValid IP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFailure ( Failure Reason . INVALID _ IP ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġip Ban Repository . get ( sanit ized IP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠFailure ( Failure Reason . IP _ NOT _ BAN N ED ) ĊĊĠĠĠĠĠĠĠ Ġip Ban Repository . delete ( sanit ized IP ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠSuccess ( Unit ) ĊĠĠĠ Ġ} Ċ } Ċ