From 6c73a6802494ab5ee7dcd2dcbdc8bb7f71bb1b4c Mon Sep 17 00:00:00 2001 From: ghost Date: Mon, 4 Sep 2023 00:16:37 +0300 Subject: [PATCH] add info hash v2 support --- src/Magnet.php | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/Magnet.php b/src/Magnet.php index 949c887..2f4198c 100644 --- a/src/Magnet.php +++ b/src/Magnet.php @@ -9,13 +9,36 @@ class Magnet { return ('magnet' == parse_url($link, PHP_URL_SCHEME)); } + public static function isXTv1(string $xt) : bool + { + return ('urn' == parse_url($xt, PHP_URL_SCHEME) && false !== strpos($xt, ':btih:')); + } + + public static function isXTv2(string $xt) : bool + { + return ('urn' == parse_url($xt, PHP_URL_SCHEME) && false !== strpos($xt, ':btmh:')); + } + + public static function filterInfoHash(string $value) : string + { + return str_replace( + [ + 'urn:', + 'btih:', + 'btmh:', + ], + false, + $value + ); + } + public static function parse(string $link) : mixed { $result = [ - 'xt' => null, 'dn' => null, 'xl' => 0, + 'xt' => [], 'tr' => [], 'ws' => [], 'as' => [], @@ -37,6 +60,7 @@ class Magnet { [ 'magnet:', '?', + 'xt=', 'tr=', 'ws=', 'as=', @@ -47,6 +71,7 @@ class Magnet { [ false, false, + 'xt[]=', 'tr[]=', 'ws[]=', 'as[]=',