Skip to content

Commit 0175670

Browse files
Rhiliptux-tn
andauthored
feat(isMagnetURI): support Bittorrent v2 (#1992)
* feat(isMagnetURI): support Bittorrent v2 * fix(isMagnetURI): make sure `xt=` is uri component * Apply suggestions from code review Co-authored-by: Sarhan Aissi <[email protected]> Co-authored-by: Sarhan Aissi <[email protected]>
1 parent 9a0bb35 commit 0175670

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

src/lib/isMagnetURI.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
import assertString from './util/assertString';
22

3-
const magnetURI = /^magnet:\?xt(?:\.1)?=urn:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?($|&)/i;
3+
const magnetURIComponent = /(?:^magnet:\?|[^?&]&)xt(?:\.1)?=urn:(?:(?:aich|bitprint|btih|ed2k|ed2khash|kzhash|md5|sha1|tree:tiger):[a-z0-9]{32}(?:[a-z0-9]{8})?|btmh:1220[a-z0-9]{64})(?:$|&)/i;
44

55
export default function isMagnetURI(url) {
66
assertString(url);
7-
return magnetURI.test(url.trim());
7+
8+
if (url.indexOf('magnet:?') !== 0) {
9+
return false;
10+
}
11+
12+
return magnetURIComponent.test(url);
813
}

test/validators.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10256,6 +10256,8 @@ describe('Validators', () => {
1025610256
'magnet:?xt=urn:md5:ABCDEFGHIJKLMNOPQRSTUVWXYZ123456',
1025710257
'magnet:?xt=urn:tree:tiger:ABCDEFGHIJKLMNOPQRSTUVWXYZ123456',
1025810258
'magnet:?xt=urn:ed2k:ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234',
10259+
'magnet:?tr=udp://helloworld:1337/announce&xt=urn:btih:ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234',
10260+
'magnet:?xt=urn:btmh:1220caf1e1c30e81cb361b9ee167c4aa64228a7fa4fa9f6105232b28ad099f3a302e',
1025910261
],
1026010262
invalid: [
1026110263
':?xt=urn:btih:ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234',
@@ -10268,6 +10270,8 @@ describe('Validators', () => {
1026810270
'magnet:?xt:urn:nonexisting:ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234',
1026910271
'magnet:?xt.2=urn:btih:ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234',
1027010272
'magnet:?xt=urn:ed2k:ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678901234567890123456789ABCD',
10273+
'magnet:?xt=urn:btmh:1120caf1e1c30e81cb361b9ee167c4aa64228a7fa4fa9f6105232b28ad099f3a302e',
10274+
'magnet:?ttxt=urn:btmh:1220caf1e1c30e81cb361b9ee167c4aa64228a7fa4fa9f6105232b28ad099f3a302e',
1027110275
],
1027210276
});
1027310277
/* eslint-enable max-len */

0 commit comments

Comments
 (0)