package Ġcom . tech be lo ved . h ym nb ook . utils Ċ Ċ import Ġandroid . net . Uri Ċ Ċ const Ġval ĠD Y NAMIC _ LINK _ DOMAIN Ġ= Ġ" https :// h ym nb ook . page . link " Ċ const Ġval ĠMIN IMUM _ VERSION _ FOR _ SHARE _ LINK Ġ= Ġ 1 0 Ċ const Ġval ĠW CC RM _ LOG O _ URL Ġ= Ġ" https :// firebase storage . googleapis . com / v 0 / b / h ym nb ook - 5 0 b 7 e . app spot . com / o / w cc rm _ logo . jpg ? alt = media & token = 8 f 3 3 8 e 2 0 - b 8 e 4 - 4 ca 7 - 8 e 9 b - 9 9 7 f 8 8 2 ab 1 8 e " Ċ Ċ // Ġcontent :// h ym nb ook . com /{ category }/{ categoryId }/{ h ym ns }/{ h ym n Id } Ċ const Ġval ĠAUTH ORITY Ġ= Ġ" h ym nb ook . com " Ċ const Ġval ĠS CHE ME _ NORMAL Ġ= Ġ" https " Ċ const Ġval ĠS CHE ME _ HTTP Ġ= Ġ" https " Ċ Ċ // ĠSupported Ġh ym n Ġlisting Ġcategories Ċ const Ġval ĠC ATEG ORY _ W CC RM Ġ= Ġ" w cc rm " Ċ const Ġval ĠC ATEG ORY _ TOP ICS Ġ= Ġ" topics " Ċ const Ġval ĠC ATEG ORY _ PLAY LIST S Ġ= Ġ" play lists " Ċ const Ġval ĠC ATEG ORY _ W CC RM _ SHE ET _ M US IC Ġ= Ġ" w cc rm _ sheet _ music " Ċ Ċ // Ġdefault Ġsheet Ġmusic Ġcategory Ċ val ĠDEFAULT _ SHE ET _ M US IC _ CATEGORY Ġby Ġlazy Ġ{ ĊĠĠĠ Ġbuild Category Uri ( CATEGORY _ W CC RM _ SHE ET _ M US IC , Ġ 0 ) Ċ } Ċ Ċ const Ġval ĠDEFAULT _ CATEGORY _ URI Ġ= Ġ"$ SCHEME _ NORMAL :// $ AUTH ORITY /$ CATEGORY _ W CC RM / 0 " Ċ Ċ /** Ċ Ġ* ĠMat ches Ġa Ġurl Ġstring Ġof Ġthe Ġform Ġcontent :// h ym nb ook . com /{ category }/{ categoryId } Ċ Ġ* Ċ Ġ**/ Ċ const Ġval ĠC ATEG ORY _ REGEX Ġ= Ġ""" ($ SCHEME _ HTTP |$ SCHEME _ NORMAL ) :// $ AUTH ORITY / (\ w +)/ (\ d +)/ ?$ """ Ċ Ċ /** Ċ Ġ* ĠMat ches Ġa Ġurl Ġstring Ġof Ġthe Ġform Ġcontent :// h ym nb ook . com /{ category }/{ categoryId }/ h ym ns /{ h ym n Id } Ċ Ġ*/ Ċ const Ġval ĠITEM _ REGEX Ġ= Ġ""" ($ SCHEME _ HTTP |$ SCHEME _ NORMAL ) :// $ AUTH ORITY / (\ w +)/ (\ d +)/ h ym ns / (\ d +)/ ?$ """ Ċ Ċ const Ġval ĠC ATEG ORY _ URI _ EXTRACT _ REGEX Ġ= Ġ""" ($ SCHEME _ HTTP |$ SCHEME _ NORMAL :// $ AUTH ORITY /\ w + /\ d +)/ h ym ns / (\ d +)/ ?$ """ Ċ Ċ /** Ċ Ġ* ĠRetrieve Ġcategory Ġname Ġfrom Ġh ym nb ook Ġuri . ĠReturns Ġnull Ġif Ġuri Ġis Ġnot Ġvalid Ġcategory Ġuri Ċ Ġ*/ Ċ fun ĠString . category (): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġcategory Regex Ġ= ĠC ATEG ORY _ REGEX . to Regex () ĊĠĠĠ Ġval Ġitem Regex Ġ= ĠITEM _ REGEX . to Regex () ĊĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġcategory Regex Ġmatches Ġthis Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Result Ġ= Ġcategory Regex . find ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Result ?. group Values ?. get ( 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġitem Regex Ġmatches Ġthis Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Result Ġ= Ġitem Regex . find ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Result ?. group Values ?. get ( 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠExtract s Ġcategory Ġid Ġfrom Ġa Ġh ym nb ook Ġuri . Ċ Ġ* Ġ@ return Ġcategory Ġid Ġor Ġnull Ġif Ġuri Ġis Ġnot Ġvalid Ċ Ġ*/ Ċ fun ĠString . categoryId (): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġcategory Regex Ġ= ĠC ATEG ORY _ REGEX . to Regex () ĊĠĠĠ Ġval Ġitem Regex Ġ= ĠITEM _ REGEX . to Regex () ĊĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġcategory Regex Ġmatches Ġthis Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Result Ġ= Ġcategory Regex . find ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Result ?. group Values ?. get ( 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġitem Regex Ġmatches Ġthis Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Result Ġ= Ġitem Regex . find ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatch Result ?. group Values ?. get ( 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠExtract s Ġh ym n Id Ġfrom Ġa Ġh ym nb ook Ġuri . Ċ Ġ* Ġ@ return Ġh ym n Ġid Ġor Ġnull Ġif Ġuri Ġis Ġnot Ġa Ġvalid Ġuri Ġpointing Ġto Ġa Ġh ym n Ġitem Ċ Ġ*/ Ċ fun ĠString . h ym n Id (): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġitem Regex Ġ= ĠITEM _ REGEX . to Regex () ĊĊĠĠĠ Ġreturn Ġif Ġ( item Regex Ġmatches Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Result Ġ= Ġitem Regex . find ( this ) ĊĠĠĠĠĠĠĠ Ġmatch Result ?. group Values ?. get ( 4 ) ĊĠĠĠ Ġ} Ġelse Ġnull Ċ } Ċ Ċ fun ĠString . isValid Category Uri (): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġcategory Regex Ġ= ĠC ATEG ORY _ REGEX . to Regex () ĊĠĠĠ Ġreturn Ġcategory Regex Ġmatches Ġthis Ċ } Ċ Ċ fun ĠString . isValid H ym n Uri (): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġcategory Regex Ġ= ĠITEM _ REGEX . to Regex () ĊĠĠĠ Ġreturn Ġcategory Regex Ġmatches Ġthis Ċ } Ċ Ċ fun Ġbuild H ym nb ook Uri ( category : ĠString , Ġcategory Id : ĠInt , Ġh ym n Id : ĠInt ? Ġ= Ġnull , Ġscheme : ĠString Ġ= ĠS CHE ME _ NORMAL ): ĠUri Ġ{ ĊĠĠĠ Ġreturn ĠUri . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġscheme ( scheme ) ĊĠĠĠĠĠĠĠ Ġauthority ( AUTH ORITY ) ĊĠĠĠĠĠĠĠ Ġappend Encoded Path ( category ) ĊĠĠĠĠĠĠĠ Ġappend Encoded Path ( categoryId . toString ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( h ym n Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Encoded Path (" h ym ns ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Encoded Path ( h ym n Id . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ}. build () Ċ } Ċ Ċ /** Ċ Ġ* ĠUses Ġstring Ġconcat enation Ġto Ġbuild Ġa Ġsimple Ġcategory Ġuri Ċ Ġ*/ Ċ fun Ġbuild Category Uri ( category : ĠString , Ġcategory Id : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ"$ SCHEME _ HTTP :// $ AUTH ORITY /$ category /$ categoryId " Ċ } Ċ Ċ fun ĠString . append H ym n Id ( h ym n Id : ĠInt ): ĠString ? Ġ{ ĊĠĠĠ Ġif Ġ( this . isValid Category Uri ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ this / h ym ns /$ h ym n Id " ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ fun ĠString . parent Category Uri (): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġitem Uri Regex Ġ= ĠC ATEG ORY _ URI _ EXTRACT _ REGEX . to Regex () ĊĠĠĠ Ġreturn Ġif Ġ( item Uri Regex Ġmatches Ġthis ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Result Ġ= Ġitem Uri Regex . find ( this ) ĊĠĠĠĠĠĠĠ Ġmatch Result ?. group Values ?. get ( 1 ) ĊĠĠĠ Ġ} Ġelse Ġnull Ċ }