« get me outta code hell

Open JSON playlist files in new tab - mtui - Music Text User Interface - user-friendly command line music player
about summary refs log tree commit diff
path: root/general-util.js
diff options
context:
space:
mode:
authorFlorrie <towerofnix@gmail.com>2019-10-15 18:13:40 -0300
committerFlorrie <towerofnix@gmail.com>2019-10-15 18:13:40 -0300
commit0f1197138e3aae2d9cc25f3f1d3c6c3d7a235422 (patch)
tree55c61c843707ac91e2b696e63604c037a259c6c3 /general-util.js
parentc0d6ea0363473cbb43e4f1f50c92803ed14742cb (diff)
Open JSON playlist files in new tab
Diffstat (limited to 'general-util.js')
-rw-r--r--general-util.js17
1 files changed, 14 insertions, 3 deletions
diff --git a/general-util.js b/general-util.js
index a7bfb11..3aa4180 100644
--- a/general-util.js
+++ b/general-util.js
@@ -3,6 +3,7 @@ const { promisify } = require('util')
 const fetch = require('node-fetch')
 const fs = require('fs')
 const npmCommandExists = require('command-exists')
+const url = require('url')
 
 const readFile = promisify(fs.readFile)
 
@@ -61,9 +62,19 @@ function downloadPlaylistFromLocalPath(path) {
 }
 
 module.exports.downloadPlaylistFromOptionValue = function(arg) {
-  // TODO: Verify things!
-  if (arg.startsWith('http://') || arg.startsWith('https://')) {
-    return downloadPlaylistFromURL(arg)
+  let argURL
+  try {
+    argURL = new url.URL(arg)
+  } catch (err) {
+    // Definitely not a URL.
+  }
+
+  if (argURL) {
+    if (argURL.protocol === 'http:' || argURL.protocol === 'https:') {
+      return downloadPlaylistFromURL(arg)
+    } else if (argURL.protocol === 'file:') {
+      return downloadPlaylistFromLocalPath(url.fileURLToPath(argURL))
+    }
   } else {
     return downloadPlaylistFromLocalPath(arg)
   }