package Ġio . ipfs . kotlin Ċ Ċ import Ġio . ipfs . kotlin . defaults .* Ċ Ċ /** Ċ Ġ* ĠProvide Ġ: Ġthe ĠMulti Hash Value Ġfor Ġa ĠMulti Hash Type Ċ Ġ* ĠNeeds ĠĠ Ġ: ĠHash ĠFunction Ġname Ġstored Ġin ĠParameter Map ĠĠĊ Ġ* ĠNeeds ĠĠ Ġ: ĠHash ĠHash able Ġinformation Ġ( directory , Ġfile , Ġstring ) Ġstored Ġin ĠParameter Map ĠĠĊ Ġ* ĠDone ĠĠĠ Ġ: ĠLocal Ip fs (). add . string ( str ). Multi Hash Ċ Ġ* ĠAuthor Ġ Ġ: ĠEm ile ĠA ch ad de Ġ 2 2 Ġf Ã© v rier Ġ 2 0 2 0 Ġat Ġ 1 0 : 3 2 : 1 8 + 0 1 : 0 0 ; Ċ Ġ* ĠImprove Ġ: ĠImplement ĠHash ĠSt uff Ċ Ġ* ĠRevision Ġ: ĠRegister Ġas Ġsingleton Ġby ĠEm ile ĠA ch ad de Ġ 1 1 Ġm ars Ġ 2 0 2 0 Ġat Ġ 1 7 : 4 8 : 3 2 + 0 1 : 0 0 Ċ Ġ*/ Ċ Ċ class ĠMulti Hash Provider Ġ{ ĊĊĠĠĠ Ġval Ġregister Ġ= ĠMulti Hash Register ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġbuild Ġ( fun Nam : ĠString , Ġhas Inf : ĠString ): ĠMulti Hash Value Ġ{ Ċ ĉ val Ġ( here , Ġcaller ) Ġ= Ġmodule Here And Caller () Ċ ĉ enter ing ( here , Ġcaller ) ĊĉĊ ĉ println ("$ here : Ġinput Ġfun Nam Ġ'$ fun Nam '") Ċ ĉ println ("$ here : Ġinput Ġhas Inf Ġ'$ has Inf '") ĊĉĊ ĉ val Ġhash Ġ= Ġhash String Of TypeOf Input ( fun Nam , Ġhas Inf ) Ċ ĉ val Ġresult Ġ= ĠMulti Hash Value ( fun Nam , Ġhash ) ĊĉĊ ĉ println ("$ here : Ġoutput Ġresult Ġ$ result ") ĊĉĊ ĉ exit ing ( here ) Ċ ĉ return Ġresult ĠĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġbuild And Store ( mul Typ : ĠMulti Hash Type ) Ġ: ĠMulti Hash Value Ġ{ Ċ ĉ val Ġ( here , Ġcaller ) Ġ= Ġmodule Here And Caller () Ċ ĉ enter ing ( here , Ġcaller ) ĊĉĊ ĉ println ("$ here : Ġinput Ġmul Typ Ġ'$ mul Typ '") Ċ // ĠImprove Ġget Ġfrom ĠParameter Map ĠInput Ċ ĉ val Ġhas Fun Typ Ġ= Ġhash FunctionType () Ċ ĉ val Ġhas In p Str Ġ= Ġhash Input String () Ċ ĉ val Ġresult Ġ= Ġbuild ( has Fun Typ , Ġhas In p Str ) Ċ ĉ register . store ( mul Typ , Ġresult ) ĊĊ ĉ println ("$ here : Ġoutput Ġresult Ġ$ result ") Ċ ĉ exit ing ( here ) Ċ ĉ return Ġresult ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġpublic Ġfun Ġprovide Of Multi Hash Type ( mul Typ : ĠMulti Hash Type ) Ġ: ĠMulti Hash Value Ġ{ Ċ ĉ val Ġ( here , Ġcaller ) Ġ= Ġmodule Here And Caller () Ċ ĉ enter ing ( here , Ġcaller ) ĊĉĊ ĉ println ("$ here : Ġinput Ġmul Typ Ġ'$ mul Typ '") ĊĉĊ ĉ val Ġresult Ġ= ĊĉĠĠĠ Ġif Ġ( register . is Stored ( mul Typ )){ ĊĉĠĠĠĠĠĠĠ Ġregister . retrieve ( mul Typ ) ĊĉĠĠĠ Ġ} ĊĠĠ ĉĠĠĠ Ġelse Ġ{ Ċĉ ĉ build And Store ( mul Typ ) ĊĉĠĠĠ Ġ} ĊĊ ĉ println () Ċ ĉ println ( mul Typ . toString ()+" Ġ=> Ġ'$ result '") Ċ ĉ println () ĊĉĊ ĉ exit ing ( here ) Ċ ĉ return Ġresult ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġprint Ġ( mul Typ : ĠMulti Hash Type ) Ġ{ Ċ ĉ val Ġ( here , Ġcaller ) Ġ= Ġmodule Here And Caller () Ċ ĉ enter ing ( here , Ġcaller ) ĊĉĊ ĉ val Ġresult Ġ= Ġprovide Of Multi Hash Type ( mul Typ ) Ċ ĉ println Ġ(" Multi Hash Value : Ġ$ result ") Ċ ĉ exit ing ( here ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ