From c1a0d6a7894df54646712e8da7e744e4ff41a2ec Mon Sep 17 00:00:00 2001
From: Tom Andrade <wolvie@gmail.com>
Date: Wed, 1 May 2019 12:25:50 +0200
Subject: [PATCH] Improved documentation

---
 main.go | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/main.go b/main.go
index 96f0b04..1a2cd00 100644
--- a/main.go
+++ b/main.go
@@ -57,6 +57,9 @@ func set(key, suffix string) {
 	pool.Set(suffix, key, 0)
 }
 
+// redirect reads the key from the requests url (GET /key) searches the
+// kv database for it and if found redirects the user to value, if not
+// found return a 404.
 func redirect(w http.ResponseWriter, r *http.Request, path string) {
 	vals := mux.Vars(r)
 	key := vals["key"]
@@ -78,6 +81,11 @@ func redirect(w http.ResponseWriter, r *http.Request, path string) {
 	}
 }
 
+// shortner reads url from a POST request, validates the url, generate a
+// random suffix string of urlSize size, checks if the suffix string is
+// unique on the kv database and if not unique regenerates it and checks again,
+// then if writes the kv pair suffix, url to the database and return the
+// shortened url to the user
 func shortner(w http.ResponseWriter, r *http.Request, proto, domain, hostSuf, path string, urlSize int) {
 	if govalidator.IsURL(r.FormValue("url")) {
 		u, _ := url.Parse(r.FormValue("url"))
@@ -101,7 +109,7 @@ func shortner(w http.ResponseWriter, r *http.Request, proto, domain, hostSuf, pa
 	}
 }
 
-// RandStringBytesMaskImprSrc Generate random string for URL
+// RandStringBytesMaskImprSrc Generate random string of n size
 func RandStringBytesMaskImprSrc(n int) string {
 	b := make([]byte, n)
 	// A src.Int63() generates 63 random bits, enough for letterIdxMax characters!
@@ -127,6 +135,7 @@ func internalError(w http.ResponseWriter, msg string, err error) {
 	internalErrorTmpl.Execute(w, msg+err.Error())
 }
 
+// itemsCount returns the number of kv pairs on the in meomry database
 func itemsCount(w http.ResponseWriter, r *http.Request) {
 	w.Write(
 		[]byte(
@@ -137,6 +146,7 @@ func itemsCount(w http.ResponseWriter, r *http.Request) {
 	)
 }
 
+// itemsDump returns a json with all the kv pairs on the in memory database
 func itemsDump(w http.ResponseWriter, r *http.Request) {
 	dumpObj, err := json.Marshal(
 		pool.Items(),
@@ -149,6 +159,7 @@ func itemsDump(w http.ResponseWriter, r *http.Request) {
 	)
 }
 
+// itemsFromFile loads kv pairs from the dumpFile json to the in memory database
 func itemsFromFile(w http.ResponseWriter, r *http.Request, dumpFile string) {
 	jsonFile, err := ioutil.ReadFile(dumpFile)
 	var dumpObj map[string]cache.Item
@@ -161,6 +172,7 @@ func itemsFromFile(w http.ResponseWriter, r *http.Request, dumpFile string) {
 	}
 }
 
+// itemsFromPost loads kv pairs from a json POST to the in memory database
 func itemsFromPost(w http.ResponseWriter, r *http.Request) {
 	decoder := json.NewDecoder(r.Body)
 	var dumpObj map[string]cache.Item
@@ -173,6 +185,7 @@ func itemsFromPost(w http.ResponseWriter, r *http.Request) {
 	}
 }
 
+// itemsDumpToFile dumps the kv pairs from the in memory database to the dumpFile
 func itemsDumpToFile(w http.ResponseWriter, r *http.Request, dumpFile string) {
 	dumpObj, _ := json.Marshal(
 		pool.Items(),