[gnome-maps] utils: Add function for detecting invalid URLs



commit 380e9885a204d1a41cd846e55e4767391c2514a5
Author: James Westman <james flyingpimonster net>
Date:   Mon Nov 23 20:58:24 2020 -0600

    utils: Add function for detecting invalid URLs

 meson.build        |  1 +
 src/utils.js       | 11 +++++++++++
 tests/utilsTest.js |  8 ++++++++
 3 files changed, 20 insertions(+)
---
diff --git a/meson.build b/meson.build
index 27244958..164c7227 100644
--- a/meson.build
+++ b/meson.build
@@ -25,6 +25,7 @@ maps_gir_version = '1.0'
 desktop_file_validate = find_program('desktop-file-validate', required: false)
 appstream_util = find_program('appstream-util', required: false)
 
+glib = dependency('glib-2.0', version: '>= 2.66.0')
 gio = dependency('gio-2.0', version: '>= 2.44.0')
 gjs = dependency('gjs-1.0', version: '>= 1.50.0')
 girepository = dependency('gobject-introspection-1.0', version: '>= 0.10.1')
diff --git a/src/utils.js b/src/utils.js
index 3ef85fbb..12c54f14 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -458,3 +458,14 @@ function getCountryCodeForCoordinates(lat, lon) {
     return location.get_country();
 }
 
+/* Determines whether a URI is valid and its scheme is HTTP or HTTPS. */
+function isValidWebsite(website) {
+    try {
+        GLib.Uri.is_valid(website, GLib.UriFlags.NONE);
+    } catch(e) {
+        return false;
+    }
+
+    let scheme = GLib.Uri.parse_scheme(website);
+    return scheme === "http" || scheme === "https";
+}
diff --git a/tests/utilsTest.js b/tests/utilsTest.js
index 5f46aaab..7cdf905e 100644
--- a/tests/utilsTest.js
+++ b/tests/utilsTest.js
@@ -37,6 +37,7 @@ function main() {
     prettyTimeTest();
     prettyDistanceTest();
     normalizeStringTest();
+    validWebsiteTest();
 }
 
 function osmTypeToStringTest() {
@@ -101,3 +102,10 @@ function normalizeStringTest() {
     JsUnit.assertEquals('aao', Utils.normalizeString('åäö'));
     JsUnit.assertEquals('aao', Utils.normalizeString('a\u030aa\u0308o\u0308'));
 }
+
+function validWebsiteTest() {
+    JsUnit.assertEquals(true, Utils.isValidWebsite("https://gnome.org";));
+    JsUnit.assertEquals(true, Utils.isValidWebsite("http://gnome.org";));
+    JsUnit.assertEquals(false, Utils.isValidWebsite("ftp://gnome.org";));
+    JsUnit.assertEquals(false, Utils.isValidWebsite("www.gnome.org"));
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]