From 6f6bf8e08322052ffcdb814d569dc8222ab25b72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=A4iv=C3=A4rinta?= Date: Thu, 15 Mar 2018 23:51:25 +0100 Subject: [PATCH] Add special status for directories --- src/errors.rs | 5 +++++ src/linky.rs | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/errors.rs b/src/errors.rs index 529bb21..76ecd54 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -18,6 +18,7 @@ pub enum ErrorKind { NoFragment, Protocol, Absolute, + Directory, InvalidUrl, NoMime, UnrecognizedMime, @@ -49,6 +50,7 @@ impl fmt::Display for ErrorKind { ErrorKind::NoFragment => write!(f, "NO_FRAG"), ErrorKind::Protocol => write!(f, "PROTOCOL"), ErrorKind::Absolute => write!(f, "ABSOLUTE"), + ErrorKind::Directory => write!(f, "DIR"), ErrorKind::NoMime => write!(f, "NO_MIME"), ErrorKind::UnrecognizedMime => write!(f, "MIME"), ErrorKind::DecodingError => write!(f, "DEC_ERR"), @@ -77,6 +79,7 @@ impl FromStr for ErrorKind { "NO_FRAG" => Ok(ErrorKind::NoFragment), "PROTOCOL" => Ok(ErrorKind::Protocol), "ABSOLUTE" => Ok(ErrorKind::Absolute), + "DIR" => Ok(ErrorKind::Directory), "NO_MIME" => Ok(ErrorKind::NoMime), "MIME" => Ok(ErrorKind::UnrecognizedMime), "PREFIXED" => Ok(ErrorKind::Prefixed), @@ -139,6 +142,7 @@ impl fmt::Display for LookupError { ErrorKind::NoFragment => write!(f, "Fragment not found"), ErrorKind::Protocol => write!(f, "Unhandled protocol"), ErrorKind::Absolute => write!(f, "Unable to handle absolute path"), + ErrorKind::Directory => write!(f, "Document is a directory"), ErrorKind::NoMime => write!(f, "No mime type"), ErrorKind::UnrecognizedMime => write!(f, "Unrecognized mime type"), ErrorKind::DecodingError => write!(f, "Decoding error"), @@ -158,6 +162,7 @@ impl error::Error for LookupError { ErrorKind::NoFragment => "fragment not found", ErrorKind::Protocol => "unrecognized protocol", ErrorKind::Absolute => "unhandled absolute path", + ErrorKind::Directory => "document is a directory", ErrorKind::NoMime => "no mime type", ErrorKind::UnrecognizedMime => "unrecognized mime type", ErrorKind::DecodingError => "decoding error", diff --git a/src/linky.rs b/src/linky.rs index aba3465..f5b9134 100644 --- a/src/linky.rs +++ b/src/linky.rs @@ -188,12 +188,13 @@ struct FilesystemLocalResolver; impl LocalResolver for FilesystemLocalResolver { fn local(&self, path: &Path) -> Result { if path.is_absolute() { - return Err(ErrorKind::Absolute.into()); + Err(ErrorKind::Absolute.into()) + } else if path.is_dir() { + Err(ErrorKind::Directory.into()) + } else { + let reader = File::open(&path)?; + Document::parse(reader, &MARKDOWN_CONTENT_TYPE) } - - let reader = File::open(&path)?; - - Document::parse(reader, &MARKDOWN_CONTENT_TYPE) } }