From f1b07bab2f433568de02684cfe3f38a2f41a8b9b Mon Sep 17 00:00:00 2001
From: Arnas Udovic
Date: Thu, 1 Feb 2024 16:39:37 +0200
Subject: [PATCH] added url shorting flow
---
.gitignore | 1 +
assests/favicon.ico | Bin 0 -> 19134 bytes
db.go | 145 ++++++++++++++++++++++++++++++++++++++
go.mod | 41 +++++++++++
go.sum | 141 ++++++++++++++++++++++++++++++++++++
main.go | 54 ++++++++++++++
views/index.html | 28 ++++++++
views/layouts/footer.html | 13 ++++
views/layouts/master.html | 26 +++++++
9 files changed, 449 insertions(+)
create mode 100644 assests/favicon.ico
create mode 100644 db.go
create mode 100644 go.mod
create mode 100644 go.sum
create mode 100644 main.go
create mode 100644 views/index.html
create mode 100644 views/layouts/footer.html
create mode 100644 views/layouts/master.html
diff --git a/.gitignore b/.gitignore
index adf8f72..2b4c842 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,4 @@
# Go workspace file
go.work
+main.db
diff --git a/assests/favicon.ico b/assests/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..5d58779b86f6c6f02778c6737c0e6ebc3858e51b
GIT binary patch
literal 19134
zcmeI4O^h5@5yyKnR^}3IUn7)cd_l^M-~;$zWfl%ZaS$hRwF45zMD`)DhsZP59#%q1
zEP;I_A>!j;2_Z#BAjNoRSw$8`A;AVj91D7~d}T>OkK@1q<7xiCo~~8R+n!x#W);}k
zEvcsJ)vH(URlRy2-M!i
z!j_PB9}zsJe!f>Aya&oHVJP=HyO}?(!T(#B6?i3ZhO*VY7}V|NBJ=sWuqQPCpzjLT
zg$qK!`%k^)!IJp*gcpSO3wIlYe&L&s1u+1Q3U3Q7MlT~2ye~A_Q@Lb!{4lSn8#_Mq
zg|7rM`;l{@|wt^4{!0|0p~vWZt~|
zmda&uM~}7dbv=Jfbvp^mGG_MSrvZFtUd>)d{Ly0Wzv1M}>zXSQ2M=Ma%pUar+5bOj
zd^Xmb;_t_IK>WI^GaXM=Jp#VY^V8-(u{|$jJj~a!(Couc1LU;XdZY0BpkzN1+FGXm
z=fV$!rW?+`sy6CO2l`hb|DO-!J(YjsWSj>_g(3V}
z0&fqV^K@D`B?D&n@8ZAf%5O|)JY28m@Ewr7M}&5UeND0u$O)@AO0F0X
zvzCxJF>j^=C8lM-Jo)=1Jm-_OWu7Jh{4yI|@4x4z!vh_JDyJO#yoU?&D
z266WA0~J^g{}H|?w7y?1{I@dn3&KfY?E1I-mr>TK_2t(fvN9-JE5DWEw}iyytHRJ%
ziAI3>UkI(=LBSIX_80mfHdcQ~{3Jj>W&^r$?{WUq-<1NNbozczlQ;+Lk+0rnS7kd#
z*2OOfw*&IQ+kk&nXl)sf)iaLm;whD}z#21KkDA|QRC?jQ6B-T2?QL5h?0;L0m$}6!
z(}((VIm|E4kZItbYHWQyU*@;Tq{m#E?xmnp#zlTw{cZ7KysVBml>u=H&%_JXKUDRc
z$7biIc=B@^u-wFE;`{Qv>c~Co7fPN3$hqHzbH-W+d`zr;lGkkh3G)a2ku|BZ?VZ%!
z+HB%OOZ-}T)BEgsS@q9I^iABDU%wBTf82{K$JyUaZj?C;0e#kn=|JBN#z2nwcM3mK
zd0Oy$8on&}K8=^0So^WT`?X_r=Os7a#YV@4J~x=ZFlWi3@NB_e{{DqAh!5As4aq(&
zoCfHZHRS!cVLp2*9sFV(J`e0%Le5<%^h=@~=x1Gs4IdkLvx^On>;v`=0zGod>RD6c
z`cl=FV12S?eJ+`8^7=9FJG^AHJ0$$R(Ca2DpTBiKx99jVq5CW0q&y7FXV3mpdfp$t6|$dfobTev&+r_$
zEg5_6q&csqd0RhT_Lz-zX5*EN*oQgyqSbpUJ-+Ff&C+MbK%eJX)-HWN8`RP71tGqg
zO{3=}n+AxR&+D=4jWJ1=xh40kf9S>>*|;V1`{18VK8{NNi12CQ<6cK)*5!|dzCYvf
zo!CqRH`Lhd;XCj4mxb4a>|^Z5&kBz@JSE=WTe+`|#DKDp@vRF>_b=~f8LxJ%0UMjA
zZ+lXnF^$Ba%%?k%$qsYw*N=^f{W(ATMRy9W$dK8emXbf4?m2hjv+1Zk
zzWaBVHm3ZWlj?RF$RqArmr9U3CHHaeBOb%`Z(}q%X}*{F&fc`sb1suR0>qBB@1K#0
zK~H#5Sb9gYx%O1L>=di=okJ&NZ3)$l#=UVlQP4*w{I*?kE?e_mpdA?axWJ+u*zg
zY~we&@qWtBx$)8`?|D8neduoVUBk}vIQ+hWKW__5*MsD&A@BRD%Ci8>q4#UkGlS|`
z_u-uu*{lHXpezRLAxz2HAShWBNQ!z`V9Tg|2U
z3-#-P_g#Ad{F!IZ3sAn7?FG0gCoKoef69N@3(m_&??1eKXL@sw_?UoPF-wS8`E>!lO%wlj#{?9s;JrnbNgSgE4+}qsp
zJjmaVvLEafpUwAux*vi42>g#CkY%0A!|yLE#ouy8pNVrpLHp4YdAS!oQOmM8>qTi!
z)99g`Ceh)79;sz%oF&nawxc64<(BB`kls^GC_k)!XD~`@dHEULe2_0x26x3-TYrnv
zkLsc)bVGp7&-bE+Xf&S=X*&^ZMb%C#YI1qd2f_?0&@h2Y#)Tq^ss*iScmU=+Z5HKh
zNUH^vW0^XTx8@s_`%|0kl7M`izKKLX<-uw^pkmEA1uH?n>+&62bZZMKq}HY)8{<=(^9N=>x?
zKwMoE9n4j0r*m4Vw?&hUw1GUSD@KF^%bpi
zXrymOfMKC88QYn$$X?jkJ?>vX!KnCZek=Sr@vvnsw7=H>+LFy1hoX
zuZ^y&v1_*)(ncra57yF!&d{^o%Fz8@^|H3YrL0%g5{qkE*^62CZaEcKyJ;(m4$M_j
z=-u~K(i4hgtzStO4ytYMlf5JHnZe=oq`Z%F8rR~t?oGObcrkt}>S!#h^|ffFn=L^X
zRbH&GonGn=YPEW2 0 {
+ shortUrl = "https://" + c.Request.Host + "/" + shortUrl
+ }
+ c.HTML(http.StatusOK, "index", gin.H{
+ "shortUrl": shortUrl,
+ })
+ })
+
+ r.GET("/:short_url", func(c *gin.Context) {
+ redirectUrl := getRedirectUrl(db, c.Param("short_url"))
+
+ if len(redirectUrl) == 0 {
+ c.Redirect(http.StatusMovedPermanently, "/")
+ }
+
+ c.Redirect(http.StatusMovedPermanently, redirectUrl)
+ })
+
+ r.Run()
+}
diff --git a/views/index.html b/views/index.html
new file mode 100644
index 0000000..fa407fc
--- /dev/null
+++ b/views/index.html
@@ -0,0 +1,28 @@
+{{define "head"}}
+
+{{end}}
+
+
+{{define "content"}}
+
+
+
+
+{{if .shortUrl}}
+ {{ .shortUrl }}
+{{end}}
+
+
+{{end}}
diff --git a/views/layouts/footer.html b/views/layouts/footer.html
new file mode 100644
index 0000000..0de27d1
--- /dev/null
+++ b/views/layouts/footer.html
@@ -0,0 +1,13 @@
+
diff --git a/views/layouts/master.html b/views/layouts/master.html
new file mode 100644
index 0000000..e728aa6
--- /dev/null
+++ b/views/layouts/master.html
@@ -0,0 +1,26 @@
+
+
+
+
+ Arna trumpintuos
+
+
+ {{template "head" .}}
+
+
+
+
+
Arna trumpintuos
+
+
+
+ {{template "content" .}}
+
+
+
+ {{include "layouts/footer"}}
+
+
+
+
+