package Ġai . plat on . pulsar . common . urls . preprocess Ċ Ċ interface ĠUrl Normalizer Ġ: Ġ( String ?) Ġ-> ĠString ? Ċ Ċ abstract Ġclass ĠAbstract Url Normalizer Ġ: ĠUrl Normalizer Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( url : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġurl ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠDefault Url Normalizer Ġ: ĠAbstract Url Normalizer () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( url : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġurl ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠStrip Query Url Normalizer Ġ: ĠAbstract Url Normalizer () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( url : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġurl ?. substring After (" ?") ?. trim End (' ?') ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠUrl Normalizer Pipeline ( ĊĠĠĠ Ġval Ġnormal izers : ĠMutable List < Url Normalizer > Ġ= Ġmutable ListOf () Ċ ) Ġ: ĠAbstract Url Normalizer () Ġ{ ĊĊĠĠĠ Ġfun Ġadd First ( normal izer : ĠUrl Normalizer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnormal izers . add ( 0 , Ġnormal izer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Last ( normal izer : ĠUrl Normalizer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnormal izers . add ( normal izer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinvoke ( url : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnormalized Url : ĠString ? Ġ= Ġurl ĊĠĠĠĠĠĠĠ Ġnormal izers . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormalized Url Ġ= Ġit . invoke ( normalized Url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnormalized Url ĊĠĠĠ Ġ} Ċ } Ċ