torrentPropertiesUtil: use tldts for getDomainsFromURLs

This commit is contained in:
Jesse Chan
2021-02-04 17:16:29 +08:00
parent e9f86fd09f
commit 861f301414
3 changed files with 40 additions and 8 deletions
+34
View File
@@ -186,6 +186,7 @@
"tar-fs": "^2.1.1",
"tar-stream": "^2.2.0",
"terser-webpack-plugin": "^5.1.1",
"tldts": "^5.7.2",
"ts-jest": "^26.5.0",
"ts-node-dev": "^1.1.1",
"tsconfig-paths": "^3.9.0",
@@ -22360,6 +22361,24 @@
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
"dev": true
},
"node_modules/tldts": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/tldts/-/tldts-5.7.2.tgz",
"integrity": "sha512-fDgg3TD8uETU/713Vv/wB+TJHY5xjU+hHQcRynExe7bI9xUJLiltyVP2L6JMO1UlvzpCo313WhI73IVfY0s9rw==",
"dev": true,
"dependencies": {
"tldts-core": "^5.7.2"
},
"bin": {
"tldts": "bin/cli.js"
}
},
"node_modules/tldts-core": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.7.2.tgz",
"integrity": "sha512-lZyNJhui/CQbQ/NmDEpod8BvNRi28wBofotWLK3WudJETZcridgzIikHbGedVhBr1MBvq+ZVO3EmFwe1XfqpVg==",
"dev": true
},
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -41799,6 +41818,21 @@
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
"dev": true
},
"tldts": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/tldts/-/tldts-5.7.2.tgz",
"integrity": "sha512-fDgg3TD8uETU/713Vv/wB+TJHY5xjU+hHQcRynExe7bI9xUJLiltyVP2L6JMO1UlvzpCo313WhI73IVfY0s9rw==",
"dev": true,
"requires": {
"tldts-core": "^5.7.2"
}
},
"tldts-core": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.7.2.tgz",
"integrity": "sha512-lZyNJhui/CQbQ/NmDEpod8BvNRi28wBofotWLK3WudJETZcridgzIikHbGedVhBr1MBvq+ZVO3EmFwe1XfqpVg==",
"dev": true
},
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+1
View File
@@ -209,6 +209,7 @@
"tar-fs": "^2.1.1",
"tar-stream": "^2.2.0",
"terser-webpack-plugin": "^5.1.1",
"tldts": "^5.7.2",
"ts-jest": "^26.5.0",
"ts-node-dev": "^1.1.1",
"tsconfig-paths": "^3.9.0",
+5 -8
View File
@@ -1,3 +1,5 @@
import {getDomain} from 'tldts';
import type {TorrentProperties} from '../../shared/types/Torrent';
export const hasTorrentFinished = (
@@ -22,15 +24,10 @@ export const hasTorrentFinished = (
export const getDomainsFromURLs = (urls: Array<string>): Array<string> => {
return [
...urls.reduce((memo: Set<string>, url: string) => {
const fqdn = url.split('/')[2]?.split(':')[0];
const domain = getDomain(url);
if (fqdn?.length > 0) {
const domainLastParts = fqdn.split('.').slice(-2);
// ignore IP addresses. RFC 952: first char of a valid TLD must be an alpha char
if (!'0123456789'.includes(domainLastParts[domainLastParts.length - 1]?.[0])) {
memo.add(domainLastParts.join('.'));
}
if (domain != null) {
memo.add(domain);
}
return memo;