// also called by admin.contractInfo.get func FetchDocsForContract(contractAddress string, xeth *xeth.XEth, http *docserver.DocServer) (content []byte, err error) { // retrieve contract hash from state codehex := xeth.CodeAt(contractAddress) codeb := xeth.CodeAtBytes(contractAddress) if codehex == "0x" { err = fmt.Errorf("contract (%v) not found", contractAddress) return } codehash := common.BytesToHash(crypto.Sha3(codeb)) // set up nameresolver with natspecreg + urlhint contract addresses res := resolver.New(xeth) // resolve host via HashReg/UrlHint Resolver uri, hash, err := res.KeyToUrl(codehash) if err != nil { return } // get content via http client and authenticate content using hash content, err = http.GetAuthContent(uri, hash) if err != nil { return } return }
// also called by admin.contractInfo.get func FetchDocsForContract(contractAddress string, xeth *xeth.XEth, ds *docserver.DocServer) (content []byte, err error) { // retrieve contract hash from state codehex := xeth.CodeAt(contractAddress) codeb := xeth.CodeAtBytes(contractAddress) if codehex == "0x" { err = fmt.Errorf("contract (%v) not found", contractAddress) return } codehash := common.BytesToHash(crypto.Sha3(codeb)) // set up nameresolver with natspecreg + urlhint contract addresses reg := registrar.New(xeth) // resolve host via HashReg/UrlHint Resolver hash, err := reg.HashToHash(codehash) if err != nil { return } if ds.HasScheme("bzz") { content, err = ds.Get("bzz://"+hash.Hex()[2:], "") if err == nil { // non-fatal return } err = nil //falling back to urlhint } uri, err := reg.HashToUrl(hash) if err != nil { return } // get content via http client and authenticate content using hash content, err = ds.GetAuthContent(uri, hash) if err != nil { return } return }