1
mirror of https://gitlab.com/jessieh/simple-shortener.git synced 2024-11-12 23:51:46 +00:00
simple-shortener/src/modules/link_utils.fnl

48 lines
1.5 KiB
Fennel

;; modules/link_utils.fnl
;; Provides a collection of utilities for working with link IDs and URIs
;; -------------------------------------------------------------------------- ;;
;; Dependencies
(local hashids (require :hashids))
;; -------------------------------------------------------------------------- ;;
;; Local modules
(local config (require :modules.config))
(local links_db (require :modules.links_db))
;; -------------------------------------------------------------------------- ;;
;; Accepted character sets
(local base62_accepted_char_set "[%a%d]+")
(local scheme_accepted_char_set "[%a%d%.%-]+")
;; -------------------------------------------------------------------------- ;;
;; Module definition
(local link_utils {})
(fn link_utils.normalize_uri [uri]
"Return `uri` normalized. This will add a scheme (default http) if one is not present.)"
(if (string.find uri (.. "^" scheme_accepted_char_set "://"))
uri
(.. "http://" uri)))
(fn link_utils.valid_link_id? [link_id]
"Return true if `link_id` is a valid base62 link ID, otherwise return false."
(if (string.find link_id (.. "^" base62_accepted_char_set "$"))
true
false))
(fn link_utils.valid_link_dest? [link_dest]
"Return true if 'link_dest' is a valid URI, otherwise return false."
(if (string.find link_dest (.. "^" scheme_accepted_char_set "://.+$"))
true
false))
;; -------------------------------------------------------------------------- ;;
;; Return module
link_utils