mirror of
https://gitlab.com/jessieh/simple-shortener.git
synced 2024-11-14 00:21:45 +00:00
48 lines
1.5 KiB
Plaintext
48 lines
1.5 KiB
Plaintext
|
;; 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
|