Skip to content

Commit

Permalink
[#10974] ENS resolving for IPNS names.
Browse files Browse the repository at this point in the history
  • Loading branch information
flexsurfer committed Sep 1, 2020
1 parent fdf8d11 commit 80eeca1
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 20 deletions.
13 changes: 6 additions & 7 deletions src/status_im/browser/core.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,7 @@
[status-im.multiaccounts.update.core :as multiaccounts.update]
[status-im.ui.components.bottom-sheet.core :as bottom-sheet]
[status-im.browser.webview-ref :as webview-ref]
[alphabase.base58 :as alphabase.base58]
["eth-phishing-detect" :as eth-phishing-detect]
["hi-base32" :as hi-base32]))
["eth-phishing-detect" :as eth-phishing-detect]))

(fx/defn update-browser-option
[{:keys [db]} option-key option-value]
Expand Down Expand Up @@ -170,12 +168,13 @@

(defmulti storage-gateway :namespace)

(defmethod storage-gateway :ipns
[{:keys [hash]}]
hash)

(defmethod storage-gateway :ipfs
[{:keys [hash]}]
(let [base32hash (-> (.encode ^js hi-base32 (alphabase.base58/decode hash))
(string/replace #"=" "")
(string/lower-case))]
(str base32hash ".infura.status.im")))
(str hash ".ipfs.cf-ipfs.com"))

(defmethod storage-gateway :swarm
[{:keys [hash]}]
Expand Down
26 changes: 13 additions & 13 deletions src/status_im/utils/contenthash.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
implementing swarm and other protocols will come later"
(:refer-clojure :exclude [cat])
(:require [alphabase.base58 :as b58]
["hi-base32" :as hi-base32]
[alphabase.hex :as hex]
[clojure.string :as string]
[status-im.ethereum.core :as ethereum]
Expand Down Expand Up @@ -39,25 +40,24 @@
:hash hash})
(and (= 78 (count hex))
(string/starts-with? hex "0xe3010170"))
;; for retrocompatibility with old CIDv0
{:namespace :ipfs
:hash (str "b" (-> hex
(subs 6)
hex/decode
((fn [v] (.encode ^js hi-base32 v)))
(string/replace #"=" "")
string/lower-case))}
(and (string/starts-with? hex "0xe50101700"))
{:namespace :ipns
:hash (-> hex
(subs 10)
hex/decode
b58/encode)}
(and (= 78 (count hex))
(string/starts-with? hex "0xe30101"))
;; new CIDv1
{:namespace :ipfs
:hash (str "z" (-> hex
(subs 6)
hex/decode
b58/encode))})))
(subs 14)
((fn [v] (str "0x" v)))
(ethereum/hex-to-utf8))})))

(defn url-fn [hex]
(let [{:keys [namespace hash]} (decode (ethereum/normalized-hex hex))]
(case namespace
:ipfs (str "https://ipfs.infura.io/ipfs/" hash)
:ipfs (str "https://" hash ".ipfs.cf-ipfs.com")
"")))

(def url (memoize url-fn))
Expand Down

0 comments on commit 80eeca1

Please sign in to comment.