Skip to content

Commit 3b9ce18

Browse files
feat(sdk): add support for URL in multiaddr
1 parent 29b663c commit 3b9ce18

File tree

2 files changed

+38
-7
lines changed

2 files changed

+38
-7
lines changed

packages/sdk/src/utils/getMultiaddrAsString.ts

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,28 @@ export function getMultiaddrAsString({
2222
if (!multiAddrAsBytesArray) {
2323
return undefined;
2424
}
25+
const multiaddrAsBytes = new Uint8Array(multiAddrAsBytesArray);
26+
27+
// try utf8 encoded url
28+
try {
29+
const decodedString = new TextDecoder().decode(multiaddrAsBytes);
30+
if (decodedString.startsWith('https://')) {
31+
return decodedString;
32+
}
33+
} catch {
34+
// noop
35+
}
36+
37+
// try machine format multiaddr
2538
try {
26-
const multiaddrAsBytes = new Uint8Array(multiAddrAsBytesArray);
2739
const decodedMultiaddr = multiaddr(multiaddrAsBytes);
2840
return decodedMultiaddr.toString();
29-
} catch (err) {
30-
console.warn(
31-
`[getMultiaddrAsString] ERROR: "${multiaddrAsHexString}" is not a valid hex input string?`,
32-
err
33-
);
34-
return undefined;
41+
} catch {
42+
// noop
3543
}
44+
45+
console.warn(
46+
`[getMultiaddrAsString] ERROR: "${multiaddrAsHexString}" is not a valid hex encoded multiaddr?`
47+
);
48+
return undefined;
3649
}

packages/sdk/tests/unit/utils/getMultiaddrAsString.test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,22 @@ describe('getMultiaddrAsString', () => {
4848
);
4949
});
5050
});
51+
52+
describe('When giving hex encoded URL', () => {
53+
it('should return a human readable URL', () => {
54+
// --- GIVEN
55+
const multiaddrAsHexString =
56+
'0x68747470733a2f2f617277656176652e6e65742f6431426e58434f667430654d387573576467643137327a4c616b7452546d6a6d547032526f582d4762314d';
57+
58+
// --- WHEN
59+
const decodedMultiaddr = getMultiaddrAsString({
60+
multiaddrAsHexString,
61+
});
62+
63+
// --- THEN
64+
expect(decodedMultiaddr).toEqual(
65+
'https://arweave.net/d1BnXCOft0eM8usWdgd172zLaktRTmjmTp2RoX-Gb1M'
66+
);
67+
});
68+
});
5169
});

0 commit comments

Comments
 (0)