|
||
---|---|---|
.github/workflows | ||
internal/shortie | ||
templates | ||
.dockerignore | ||
.gitignore | ||
CHANGELOG.md | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
LICENSE | ||
main.go | ||
README.md | ||
renovate.json |
Short - simple go url shortener
Short is a very simple url shortener build in golang, the main focus is speed, not data is persisted, but can be dumped and restored.
Syntax is
Usage of short:
-addr string
Address to listen for connections (default "localhost")
-cleanup int
Cleanup interval in hours, default 1 (default 1)
-domain string
Domain to write to the URLs (default "localhost")
-dumpFile string
urls.json (default "Path to the file to dump the kv db")
-exp int
Default expiration time in hours, default 240 (default 240)
-http
proto to the base URL (HTTPS://localhost/path/... no real https here just to set the url (for like a proxy offloading https
-path string
Path to the base URL (https://localhost/PATH/...
-port int
Port to listen for connections (default 8080)
-size int
Define the size of the shortened String (default 10)
-urlPort int
Port to use for building URLs (default 443)
-v prints current version
Includes a Dockerfile to for a standalone docker image.
To shorten a URL just post on /, you will get a reply with the shortened URL
curl -X POST -d "url=http://google.com" http://localhost:8080/
[...]
URL shortened at: https://localhost:8080/9mbIcOwsVP
[...]
URLs missing a Scheme (http[s]://) will be defaulted to https
Dump/Restore endpoints
URLs for mapping data can be checked, listed, dumped and restored in the given endpoints (you might want (and you should) restrict access to this e.g. reverse proxy):
Show the number of mapped urls
$ curl http://localhost:8080/v1/count
X
Dumps the mapped url to json
$ curl http://localhost:8080/v1/dump
[...] #json of mapped urls
Dump the mapped url to -dump
file (defaults to ./urls.json)
curl http://localhost:8080/v1/dumpToFile
Load url mappings from -dump
file to in memory db
curl http://localhost:8080/v1/fromFile
Load url mappings from POST data (Assuming json data on save.json file)
curl -X POST http://localhost:8080/v1/fromPost \
-H "Content-Type: application/json" \
--data $(cat save.json )
HTML templates
A simple collection of html templates are put on templates
folder, the templates I've used are based on @jspark721 "UI 404 PAGE" on freefrontend