From b11e1afe1b480f8abbfa29a94f340d1b1c884c9a Mon Sep 17 00:00:00 2001 From: Mitchell Berry Date: Sun, 1 Oct 2023 12:46:04 +0000 Subject: [PATCH 1/2] Allow urls without schemes Will try parse with http:// If that fails will raise an error --- src-tauri/src/command/mod.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src-tauri/src/command/mod.rs b/src-tauri/src/command/mod.rs index 4724cc4..ab718d3 100644 --- a/src-tauri/src/command/mod.rs +++ b/src-tauri/src/command/mod.rs @@ -15,13 +15,19 @@ use crate::{ }; use tauri::{Builder, Runtime}; -use url::Url; +use url::{Url, ParseError}; use walkdir::{DirEntry, WalkDir}; #[tauri::command] /// Create a `.link` async fn create_link(url: String, metadata: arklib::link::Metadata) -> Result { - let url = Url::parse(url.as_str())?; + let url = match Url::parse(url.as_str()) { + Ok(val) => val, + Err(e) => match e { + ParseError::RelativeUrlWithoutBase => { Url::parse(format!("http://{}", url).as_str())? } + _ => return Err(e.into()) + }, + }; let id = arklib::id::ResourceId::compute_bytes(url.as_ref().as_bytes()) .map_err(|_| CommandError::Arklib)?; let domain = url.domain().expect("Url has no domain"); From 97c694f1ad20ce9d6809081edd9b093124fce950 Mon Sep 17 00:00:00 2001 From: Mitchell Berry Date: Sun, 1 Oct 2023 13:23:10 +0000 Subject: [PATCH 2/2] Fix cargo lint --- src-tauri/src/command/mod.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/command/mod.rs b/src-tauri/src/command/mod.rs index ab718d3..9a09790 100644 --- a/src-tauri/src/command/mod.rs +++ b/src-tauri/src/command/mod.rs @@ -15,7 +15,7 @@ use crate::{ }; use tauri::{Builder, Runtime}; -use url::{Url, ParseError}; +use url::{ParseError, Url}; use walkdir::{DirEntry, WalkDir}; #[tauri::command] @@ -24,8 +24,8 @@ async fn create_link(url: String, metadata: arklib::link::Metadata) -> Result val, Err(e) => match e { - ParseError::RelativeUrlWithoutBase => { Url::parse(format!("http://{}", url).as_str())? } - _ => return Err(e.into()) + ParseError::RelativeUrlWithoutBase => Url::parse(format!("http://{}", url).as_str())?, + _ => return Err(e.into()), }, }; let id = arklib::id::ResourceId::compute_bytes(url.as_ref().as_bytes())