MCPcopy Create free account
hub / github.com/blobcache/blobcache / UnmarshalText

Method UnmarshalText

src/blobcache/fq.go:67–106  ·  view source on GitHub ↗
(xData []byte)

Source from the content-addressed store, hash-verified

65}
66
67func (u *URL) UnmarshalText(xData []byte) error {
68 var x string
69 for _, prefix := range []string{"bc://", "bc::", "blobcache://"} {
70 var ok bool
71 if x, ok = strings.CutPrefix(string(xData), prefix); ok {
72 break
73 }
74 }
75 data := []byte(x)
76
77 var ret URL
78 // 1. Read PeerID
79 if part, rest, err := readUntilDelim(data, ':'); err != nil {
80 return err
81 } else {
82 peerID, err := inet256.ParseAddrBase64(part)
83 if err != nil {
84 return err
85 }
86 ret.Node = peerID
87 data = rest
88 }
89 // 2. Read addr port, if we can find one.
90 if addrPort, rest, err := readAddrPort(data); err == nil {
91 // we found one, so advance data to rest
92 ret.IPPort = addrPort
93 data = rest
94 }
95 // 3. Read everything else as an OID + Extra
96 if oid, rest, err := readOID(data); err != nil {
97 return err
98 } else {
99 ret.OID = oid
100 ret.Extra = string(rest)
101 data = rest
102 }
103
104 *u = ret
105 return nil
106}
107
108// Endpoint returns the endpoint of the URL.
109// If the URL does not contain an IP address and port, then nil is returned.

Callers 8

ParseURLFunction · 0.95
handleVolumeMethod · 0.45
handleTxMethod · 0.45
handleQueueMethod · 0.45
volume.goFile · 0.45
MainFunction · 0.45
parsePeerIDFunction · 0.45
readOIDFunction · 0.45

Calls 3

readUntilDelimFunction · 0.85
readAddrPortFunction · 0.85
readOIDFunction · 0.85

Tested by

no test coverage detected