diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ebca398
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+# If you prefer the allow list template instead of the deny list, see community template:
+# https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore
+#
+# Binaries for programs and plugins
+*.exe
+*.exe~
+*.dll
+*.so
+*.dylib
+
+# Test binary, built with `go test -c`
+*.test
+
+# Output of the go coverage tool, specifically when used with LiteIDE
+*.out
+
+# Dependency directories (remove the comment below to include it)
+# vendor/
+
+# Go workspace file
+go.work
+go.work.sum
+
+# env file
+.env
+
+dist/
diff --git a/Dockerfile b/Dockerfile
index 66ff498..f885b06 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,17 +1,17 @@
-# syntax=docker/dockerfile:1
-
-FROM golang:1.23
-
-WORKDIR /app
-
-COPY go.mod ./
-
-RUN go mod download
-
-COPY . .
-
-RUN go build -o /Mensa-API
-
-EXPOSE 80
-
+# syntax=docker/dockerfile:1
+
+FROM golang:1.23
+
+WORKDIR /app
+
+COPY go.mod ./
+
+RUN go mod download
+
+COPY . .
+
+RUN go build -o /Mensa-API
+
+EXPOSE 80
+
CMD [ "/Mensa-API" ]
\ No newline at end of file
diff --git a/go.mod b/go.mod
index 5bfb0e7..9240ec8 100644
--- a/go.mod
+++ b/go.mod
@@ -1,37 +1,37 @@
-module github.com/LeRoid-hub/Mensa-API
-
-go 1.23
-
-toolchain go1.23.1
-
-require (
- github.com/PuerkitoBio/goquery v1.10.0 // indirect
- github.com/andybalholm/cascadia v1.3.2 // indirect
- github.com/bytedance/sonic v1.12.2 // indirect
- github.com/bytedance/sonic/loader v0.2.0 // indirect
- github.com/cloudwego/base64x v0.1.4 // indirect
- github.com/cloudwego/iasm v0.2.0 // indirect
- github.com/gabriel-vasile/mimetype v1.4.5 // indirect
- github.com/gin-contrib/sse v0.1.0 // indirect
- github.com/gin-gonic/gin v1.10.0 // indirect
- github.com/go-playground/locales v0.14.1 // indirect
- github.com/go-playground/universal-translator v0.18.1 // indirect
- github.com/go-playground/validator/v10 v10.22.1 // indirect
- github.com/goccy/go-json v0.10.3 // indirect
- github.com/json-iterator/go v1.1.12 // indirect
- github.com/klauspost/cpuid/v2 v2.2.8 // indirect
- github.com/leodido/go-urn v1.4.0 // indirect
- github.com/mattn/go-isatty v0.0.20 // indirect
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/pelletier/go-toml/v2 v2.2.3 // indirect
- github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
- github.com/ugorji/go/codec v1.2.12 // indirect
- golang.org/x/arch v0.10.0 // indirect
- golang.org/x/crypto v0.27.0 // indirect
- golang.org/x/net v0.29.0 // indirect
- golang.org/x/sys v0.25.0 // indirect
- golang.org/x/text v0.18.0 // indirect
- google.golang.org/protobuf v1.34.2 // indirect
- gopkg.in/yaml.v3 v3.0.1 // indirect
-)
+module github.com/LeRoid-hub/Mensa-API
+
+go 1.23
+
+toolchain go1.23.1
+
+require (
+ github.com/PuerkitoBio/goquery v1.10.0 // indirect
+ github.com/andybalholm/cascadia v1.3.2 // indirect
+ github.com/bytedance/sonic v1.12.2 // indirect
+ github.com/bytedance/sonic/loader v0.2.0 // indirect
+ github.com/cloudwego/base64x v0.1.4 // indirect
+ github.com/cloudwego/iasm v0.2.0 // indirect
+ github.com/gabriel-vasile/mimetype v1.4.5 // indirect
+ github.com/gin-contrib/sse v0.1.0 // indirect
+ github.com/gin-gonic/gin v1.10.0 // indirect
+ github.com/go-playground/locales v0.14.1 // indirect
+ github.com/go-playground/universal-translator v0.18.1 // indirect
+ github.com/go-playground/validator/v10 v10.22.1 // indirect
+ github.com/goccy/go-json v0.10.3 // indirect
+ github.com/json-iterator/go v1.1.12 // indirect
+ github.com/klauspost/cpuid/v2 v2.2.8 // indirect
+ github.com/leodido/go-urn v1.4.0 // indirect
+ github.com/mattn/go-isatty v0.0.20 // indirect
+ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+ github.com/modern-go/reflect2 v1.0.2 // indirect
+ github.com/pelletier/go-toml/v2 v2.2.3 // indirect
+ github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
+ github.com/ugorji/go/codec v1.2.12 // indirect
+ golang.org/x/arch v0.10.0 // indirect
+ golang.org/x/crypto v0.27.0 // indirect
+ golang.org/x/net v0.29.0 // indirect
+ golang.org/x/sys v0.25.0 // indirect
+ golang.org/x/text v0.18.0 // indirect
+ google.golang.org/protobuf v1.34.2 // indirect
+ gopkg.in/yaml.v3 v3.0.1 // indirect
+)
diff --git a/go.sum b/go.sum
index b796d24..526c022 100644
--- a/go.sum
+++ b/go.sum
@@ -1,112 +1,112 @@
-github.com/PuerkitoBio/goquery v1.10.0 h1:6fiXdLuUvYs2OJSvNRqlNPoBm6YABE226xrbavY5Wv4=
-github.com/PuerkitoBio/goquery v1.10.0/go.mod h1:TjZZl68Q3eGHNBA8CWaxAN7rOU1EbDz3CWuolcO5Yu4=
-github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss=
-github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU=
-github.com/bytedance/sonic v1.12.2 h1:oaMFuRTpMHYLpCntGca65YWt5ny+wAceDERTkT2L9lg=
-github.com/bytedance/sonic v1.12.2/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
-github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
-github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM=
-github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
-github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
-github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
-github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
-github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/gabriel-vasile/mimetype v1.4.5 h1:J7wGKdGu33ocBOhGy0z653k/lFKLFDPJMG8Gql0kxn4=
-github.com/gabriel-vasile/mimetype v1.4.5/go.mod h1:ibHel+/kbxn9x2407k1izTA1S81ku1z/DlgOW2QE0M4=
-github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU=
-github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y=
-github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
-github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
-github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
-github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
-github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA=
-github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
-github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
-github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
-github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
-github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
-github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
-github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
-github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
-github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
-github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
-github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
-github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
-github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
-github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
-github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
-github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
-github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
-github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-golang.org/x/arch v0.10.0 h1:S3huipmSclq3PJMNe76NGwkBR504WFkQ5dhzWzP8ZW8=
-golang.org/x/arch v0.10.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
-golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
-golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
-golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
-golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
-golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
-google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
+github.com/PuerkitoBio/goquery v1.10.0 h1:6fiXdLuUvYs2OJSvNRqlNPoBm6YABE226xrbavY5Wv4=
+github.com/PuerkitoBio/goquery v1.10.0/go.mod h1:TjZZl68Q3eGHNBA8CWaxAN7rOU1EbDz3CWuolcO5Yu4=
+github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss=
+github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU=
+github.com/bytedance/sonic v1.12.2 h1:oaMFuRTpMHYLpCntGca65YWt5ny+wAceDERTkT2L9lg=
+github.com/bytedance/sonic v1.12.2/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk=
+github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
+github.com/bytedance/sonic/loader v0.2.0 h1:zNprn+lsIP06C/IqCHs3gPQIvnvpKbbxyXQP1iU4kWM=
+github.com/bytedance/sonic/loader v0.2.0/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU=
+github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y=
+github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w=
+github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg=
+github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/gabriel-vasile/mimetype v1.4.5 h1:J7wGKdGu33ocBOhGy0z653k/lFKLFDPJMG8Gql0kxn4=
+github.com/gabriel-vasile/mimetype v1.4.5/go.mod h1:ibHel+/kbxn9x2407k1izTA1S81ku1z/DlgOW2QE0M4=
+github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU=
+github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y=
+github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA=
+github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY=
+github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY=
+github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY=
+github.com/go-playground/validator/v10 v10.22.1 h1:40JcKH+bBNGFczGuoBYgX4I6m/i27HYW8P9FDk5PbgA=
+github.com/go-playground/validator/v10 v10.22.1/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM=
+github.com/goccy/go-json v0.10.3 h1:KZ5WoDbxAIgm2HNbYckL0se1fHD6rz5j4ywS6ebzDqA=
+github.com/goccy/go-json v0.10.3/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
+github.com/klauspost/cpuid/v2 v2.2.8 h1:+StwCXwm9PdpiEkPyzBXIy+M9KUb4ODm0Zarf1kS5BM=
+github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws=
+github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M=
+github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ=
+github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI=
+github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
+github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
+github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
+github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
+github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
+github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+golang.org/x/arch v0.10.0 h1:S3huipmSclq3PJMNe76NGwkBR504WFkQ5dhzWzP8ZW8=
+golang.org/x/arch v0.10.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A=
+golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
+golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
+golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34=
+golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224=
+golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
+google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50=
diff --git a/models/Meal.go b/models/Meal.go
index f303829..9cf7e68 100644
--- a/models/Meal.go
+++ b/models/Meal.go
@@ -1,13 +1,13 @@
-package models
-
-type Meal struct {
- Name string
- Price string
- Attributes string
-}
-
-func (m *Meal) SetMeal(name string, price string, attributes string) {
- m.Name = name
- m.Price = price
- m.Attributes = attributes
-}
+package models
+
+type Meal struct {
+ Name string
+ Price string
+ Attributes string
+}
+
+func (m *Meal) SetMeal(name string, price string, attributes string) {
+ m.Name = name
+ m.Price = price
+ m.Attributes = attributes
+}
diff --git a/models/Menu.go b/models/Menu.go
index 108dc59..ed62c45 100644
--- a/models/Menu.go
+++ b/models/Menu.go
@@ -1,14 +1,14 @@
-package models
-
-type Menu struct {
- Name string
- Meal []Meal
-}
-
-func (m *Menu) SetMenu(name string) {
- m.Name = name
-}
-
-func (m *Menu) AddMeal(meal Meal) {
- m.Meal = append(m.Meal, meal)
-}
+package models
+
+type Menu struct {
+ Name string
+ Meal []Meal
+}
+
+func (m *Menu) SetMenu(name string) {
+ m.Name = name
+}
+
+func (m *Menu) AddMeal(meal Meal) {
+ m.Meal = append(m.Meal, meal)
+}
diff --git a/models/cacheItem.go b/models/cacheItem.go
index f616c8b..475b4ec 100644
--- a/models/cacheItem.go
+++ b/models/cacheItem.go
@@ -1,42 +1,42 @@
-package models
-
-import (
- "errors"
- "time"
-)
-
-type CacheItem struct {
- data Mensa
- lastUpdated time.Time
- lifetime int64
-}
-
-func (c *CacheItem) SetData(data Mensa, lifetime ...int64) {
- if len(lifetime) > 0 {
- c.lifetime = lifetime[0]
- } else {
- c.lifetime = 60
- }
-
- c.data = data
- c.lastUpdated = time.Now()
-}
-
-func (c *CacheItem) GetData() (Mensa, error) {
- if time.Now().Unix()-c.lastUpdated.Unix() > c.lifetime {
- return Mensa{}, errors.New("cache expired")
- }
-
- if c.lastUpdated.IsZero() {
- return Mensa{}, errors.New("no data in cache")
- }
-
- return c.data, nil
-}
-
-func (c *CacheItem) IsExpired() bool {
- if time.Now().Unix()-c.lastUpdated.Unix() > c.lifetime {
- return true
- }
- return false
-}
+package models
+
+import (
+ "errors"
+ "time"
+)
+
+type CacheItem struct {
+ data Mensa
+ lastUpdated time.Time
+ lifetime int64
+}
+
+func (c *CacheItem) SetData(data Mensa, lifetime ...int64) {
+ if len(lifetime) > 0 {
+ c.lifetime = lifetime[0]
+ } else {
+ c.lifetime = 60
+ }
+
+ c.data = data
+ c.lastUpdated = time.Now()
+}
+
+func (c *CacheItem) GetData() (Mensa, error) {
+ if time.Now().Unix()-c.lastUpdated.Unix() > c.lifetime {
+ return Mensa{}, errors.New("cache expired")
+ }
+
+ if c.lastUpdated.IsZero() {
+ return Mensa{}, errors.New("no data in cache")
+ }
+
+ return c.data, nil
+}
+
+func (c *CacheItem) IsExpired() bool {
+ if time.Now().Unix()-c.lastUpdated.Unix() > c.lifetime {
+ return true
+ }
+ return false
+}
diff --git a/models/day.go b/models/day.go
index d95e3f9..3f55906 100644
--- a/models/day.go
+++ b/models/day.go
@@ -1,14 +1,14 @@
-package models
-
-type Day struct {
- DayName string
- Menu []Menu
-}
-
-func (d *Day) SetDay(dayName string) {
- d.DayName = dayName
-}
-
-func (d *Day) AddMenu(menu Menu) {
- d.Menu = append(d.Menu, menu)
-}
+package models
+
+type Day struct {
+ DayName string
+ Menu []Menu
+}
+
+func (d *Day) SetDay(dayName string) {
+ d.DayName = dayName
+}
+
+func (d *Day) AddMenu(menu Menu) {
+ d.Menu = append(d.Menu, menu)
+}
diff --git a/models/mensa.go b/models/mensa.go
index e92cd1e..4c4c99d 100644
--- a/models/mensa.go
+++ b/models/mensa.go
@@ -1,16 +1,16 @@
-package models
-
-type Mensa struct {
- Name string
- Location string
- Days []Day
-}
-
-func (m *Mensa) SetMensa(name string, location string) {
- m.Name = name
- m.Location = location
-}
-
-func (m *Mensa) AddDay(day Day) {
- m.Days = append(m.Days, day)
-}
+package models
+
+type Mensa struct {
+ Name string
+ Location string
+ Days []Day
+}
+
+func (m *Mensa) SetMensa(name string, location string) {
+ m.Name = name
+ m.Location = location
+}
+
+func (m *Mensa) AddDay(day Day) {
+ m.Days = append(m.Days, day)
+}
diff --git a/scrape/mensa.go b/scrape/mensa.go
index 69c2c2c..801b086 100644
--- a/scrape/mensa.go
+++ b/scrape/mensa.go
@@ -1,80 +1,80 @@
-package scrape
-
-import (
- "io"
- "strings"
-
- "github.com/LeRoid-hub/Mensa-API/models"
- "github.com/PuerkitoBio/goquery"
-)
-
-func ScrapeMensa(h io.ReadCloser) models.Mensa {
- var mensa models.Mensa
- var mensaName = ""
- var mensaLocation = ""
-
- doc, err := goquery.NewDocumentFromReader(h)
- if err != nil {
- return models.Mensa{}
- }
-
- doc.Find("h1.aw-title-header-title").First().Each(func(i int, s *goquery.Selection) {
- mensaName = s.Text()
- })
-
- doc.Find("a.panel-body").Each(func(i int, s *goquery.Selection) {
- l, err := s.Html()
- if err != nil {
- return
- }
- l = strings.Replace(l, "
", " ", -1)
- l = strings.Replace(l, "
", " ", -1)
- l = strings.Replace(l, "", " ", -1)
-
- mensaLocation = l
- })
-
- mensa.SetMensa(mensaName, mensaLocation)
-
- //Day
- var day models.Day
-
- doc.Find("h2.aw-menu-title").Each(func(i int, s *goquery.Selection) {
- day.SetDay(s.Text())
- })
-
- //Menu
- doc.Find("div.aw-meal-category").Each(func(i int, s *goquery.Selection) {
-
- var menu models.Menu
-
- s.Find("h3.aw-meal-category-name").Each(func(i int, t *goquery.Selection) {
- menu.SetMenu(t.Text())
- })
-
- //Meal
- var meal models.Meal
-
- s.Find("div.aw-meal").Each(func(i int, t *goquery.Selection) {
- mealName := ""
- mealPrice := ""
- mealAttributes := ""
- t.Find("p.aw-meal-description").First().Each(func(i int, u *goquery.Selection) {
- mealName = u.Text()
- })
- t.Find("div.aw-meal-price").First().Each(func(i int, u *goquery.Selection) {
- mealPrice = u.Text()
- })
- t.Find("p.aw-meal-attributes").First().Each(func(i int, u *goquery.Selection) {
- mealAttributes = u.Text()
- })
- meal.SetMeal(mealName, mealPrice, mealAttributes)
- menu.AddMeal(meal)
- })
- day.AddMenu(menu)
- })
- mensa.AddDay(day)
-
- return mensa
-
-}
+package scrape
+
+import (
+ "io"
+ "strings"
+
+ "github.com/LeRoid-hub/Mensa-API/models"
+ "github.com/PuerkitoBio/goquery"
+)
+
+func ScrapeMensa(h io.ReadCloser) models.Mensa {
+ var mensa models.Mensa
+ var mensaName = ""
+ var mensaLocation = ""
+
+ doc, err := goquery.NewDocumentFromReader(h)
+ if err != nil {
+ return models.Mensa{}
+ }
+
+ doc.Find("h1.aw-title-header-title").First().Each(func(i int, s *goquery.Selection) {
+ mensaName = s.Text()
+ })
+
+ doc.Find("a.panel-body").Each(func(i int, s *goquery.Selection) {
+ l, err := s.Html()
+ if err != nil {
+ return
+ }
+ l = strings.Replace(l, "
", " ", -1)
+ l = strings.Replace(l, "
", " ", -1)
+ l = strings.Replace(l, "", " ", -1)
+
+ mensaLocation = l
+ })
+
+ mensa.SetMensa(mensaName, mensaLocation)
+
+ //Day
+ var day models.Day
+
+ doc.Find("h2.aw-menu-title").Each(func(i int, s *goquery.Selection) {
+ day.SetDay(s.Text())
+ })
+
+ //Menu
+ doc.Find("div.aw-meal-category").Each(func(i int, s *goquery.Selection) {
+
+ var menu models.Menu
+
+ s.Find("h3.aw-meal-category-name").Each(func(i int, t *goquery.Selection) {
+ menu.SetMenu(t.Text())
+ })
+
+ //Meal
+ var meal models.Meal
+
+ s.Find("div.aw-meal").Each(func(i int, t *goquery.Selection) {
+ mealName := ""
+ mealPrice := ""
+ mealAttributes := ""
+ t.Find("p.aw-meal-description").First().Each(func(i int, u *goquery.Selection) {
+ mealName = u.Text()
+ })
+ t.Find("div.aw-meal-price").First().Each(func(i int, u *goquery.Selection) {
+ mealPrice = u.Text()
+ })
+ t.Find("p.aw-meal-attributes").First().Each(func(i int, u *goquery.Selection) {
+ mealAttributes = u.Text()
+ })
+ meal.SetMeal(mealName, mealPrice, mealAttributes)
+ menu.AddMeal(meal)
+ })
+ day.AddMenu(menu)
+ })
+ mensa.AddDay(day)
+
+ return mensa
+
+}
diff --git a/scrape/state.go b/scrape/state.go
index 626dbf7..b456a99 100644
--- a/scrape/state.go
+++ b/scrape/state.go
@@ -1,27 +1,27 @@
-package scrape
-
-import (
- "io"
- "strings"
-
- "github.com/PuerkitoBio/goquery"
-)
-
-func ScrapeState(h io.ReadCloser) []string {
- var cities []string
-
- doc, err := goquery.NewDocumentFromReader(h)
- if err != nil {
- return []string{}
- }
-
- doc.Find("a.primary").Each(func(i int, s *goquery.Selection) {
- href, _ := s.Attr("href")
-
- city := strings.Split(href, "/")[0]
-
- cities = append(cities, string(city))
- })
- return cities
-
-}
+package scrape
+
+import (
+ "io"
+ "strings"
+
+ "github.com/PuerkitoBio/goquery"
+)
+
+func ScrapeState(h io.ReadCloser) []string {
+ var cities []string
+
+ doc, err := goquery.NewDocumentFromReader(h)
+ if err != nil {
+ return []string{}
+ }
+
+ doc.Find("a.primary").Each(func(i int, s *goquery.Selection) {
+ href, _ := s.Attr("href")
+
+ city := strings.Split(href, "/")[0]
+
+ cities = append(cities, string(city))
+ })
+ return cities
+
+}
diff --git a/server/city.go b/server/city.go
index 44a1344..8c5f04c 100644
--- a/server/city.go
+++ b/server/city.go
@@ -1,36 +1,36 @@
-package server
-
-import (
- "github.com/LeRoid-hub/Mensa-API/fetch"
- "github.com/LeRoid-hub/Mensa-API/scrape"
- "github.com/gin-gonic/gin"
-)
-
-func city(c *gin.Context) {
- city := c.Param("city")
- if city == "" {
- c.JSON(400, gin.H{
- "error": "city is required",
- })
- return
- }
-
- resp, err := fetch.Fetch(city)
- if err != nil {
- c.JSON(500, gin.H{
- "error": err.Error(),
- })
- return
- }
-
- defer resp.Body.Close()
- if resp.StatusCode != 200 {
- c.JSON(500, gin.H{
- "error": "status code is not 200",
- })
- return
- }
-
- scraped := scrape.ScrapeState(resp.Body)
- c.JSON(200, scraped)
-}
+package server
+
+import (
+ "github.com/LeRoid-hub/Mensa-API/fetch"
+ "github.com/LeRoid-hub/Mensa-API/scrape"
+ "github.com/gin-gonic/gin"
+)
+
+func city(c *gin.Context) {
+ city := c.Param("city")
+ if city == "" {
+ c.JSON(400, gin.H{
+ "error": "city is required",
+ })
+ return
+ }
+
+ resp, err := fetch.Fetch(city)
+ if err != nil {
+ c.JSON(500, gin.H{
+ "error": err.Error(),
+ })
+ return
+ }
+
+ defer resp.Body.Close()
+ if resp.StatusCode != 200 {
+ c.JSON(500, gin.H{
+ "error": "status code is not 200",
+ })
+ return
+ }
+
+ scraped := scrape.ScrapeState(resp.Body)
+ c.JSON(200, scraped)
+}
diff --git a/server/mensa.go b/server/mensa.go
index baa4d5f..5bd8373 100644
--- a/server/mensa.go
+++ b/server/mensa.go
@@ -1,59 +1,59 @@
-package server
-
-import (
- "github.com/LeRoid-hub/Mensa-API/cache"
- "github.com/LeRoid-hub/Mensa-API/fetch"
- "github.com/LeRoid-hub/Mensa-API/scrape"
- "github.com/gin-gonic/gin"
-)
-
-func mensa(c *gin.Context) {
- mensa := c.Param("mensa")
- if mensa == "" {
- c.JSON(400, gin.H{
- "error": "mensa is required",
- })
- return
- }
- city := c.Param("city")
- if city == "" {
- c.JSON(400, gin.H{
- "error": "city is required",
- })
- return
- }
-
- if cache.HasCacheData(city + "/" + mensa) {
- cacheData, err := cache.GetCacheData(city + "/" + mensa)
- if err != nil {
- c.JSON(500, gin.H{
- "error": err.Error(),
- })
- return
- }
- c.JSON(200, cacheData)
- return
- }
-
- resp, err := fetch.Fetch(city + "/" + mensa)
- if err != nil {
- c.JSON(500, gin.H{
- "error": err.Error(),
- })
- return
- }
-
- defer resp.Body.Close()
- if resp.StatusCode != 200 {
- c.JSON(500, gin.H{
- "error": "status code is not 200",
- })
- return
- }
-
- scraped := scrape.ScrapeMensa(resp.Body)
-
- cache.SetCacheData(city+"/"+mensa, scraped)
-
- c.JSON(200, scraped)
-}
+package server
+
+import (
+ "github.com/LeRoid-hub/Mensa-API/cache"
+ "github.com/LeRoid-hub/Mensa-API/fetch"
+ "github.com/LeRoid-hub/Mensa-API/scrape"
+ "github.com/gin-gonic/gin"
+)
+
+func mensa(c *gin.Context) {
+ mensa := c.Param("mensa")
+ if mensa == "" {
+ c.JSON(400, gin.H{
+ "error": "mensa is required",
+ })
+ return
+ }
+ city := c.Param("city")
+ if city == "" {
+ c.JSON(400, gin.H{
+ "error": "city is required",
+ })
+ return
+ }
+
+ if cache.HasCacheData(city + "/" + mensa) {
+ cacheData, err := cache.GetCacheData(city + "/" + mensa)
+ if err != nil {
+ c.JSON(500, gin.H{
+ "error": err.Error(),
+ })
+ return
+ }
+ c.JSON(200, cacheData)
+ return
+ }
+
+ resp, err := fetch.Fetch(city + "/" + mensa)
+ if err != nil {
+ c.JSON(500, gin.H{
+ "error": err.Error(),
+ })
+ return
+ }
+
+ defer resp.Body.Close()
+ if resp.StatusCode != 200 {
+ c.JSON(500, gin.H{
+ "error": "status code is not 200",
+ })
+ return
+ }
+
+ scraped := scrape.ScrapeMensa(resp.Body)
+
+ cache.SetCacheData(city+"/"+mensa, scraped)
+
+ c.JSON(200, scraped)
+}
diff --git a/server/state.go b/server/state.go
index f6beb8f..3f8671c 100644
--- a/server/state.go
+++ b/server/state.go
@@ -1,37 +1,37 @@
-package server
-
-import (
- "github.com/LeRoid-hub/Mensa-API/fetch"
- "github.com/LeRoid-hub/Mensa-API/scrape"
- "github.com/gin-gonic/gin"
-)
-
-func state(c *gin.Context) {
- state := c.Param("state")
- if state == "" {
- c.JSON(400, gin.H{
- "error": "state is required",
- })
- return
- }
-
- resp, err := fetch.Fetch(state + ".html")
- if err != nil {
- c.JSON(500, gin.H{
- "error": err.Error(),
- })
- return
- }
-
- defer resp.Body.Close()
- if resp.StatusCode != 200 {
- c.JSON(500, gin.H{
- "error": "status code is not 200",
- })
- return
- }
-
- scraped := scrape.ScrapeState(resp.Body)
-
- c.JSON(200, scraped)
-}
+package server
+
+import (
+ "github.com/LeRoid-hub/Mensa-API/fetch"
+ "github.com/LeRoid-hub/Mensa-API/scrape"
+ "github.com/gin-gonic/gin"
+)
+
+func state(c *gin.Context) {
+ state := c.Param("state")
+ if state == "" {
+ c.JSON(400, gin.H{
+ "error": "state is required",
+ })
+ return
+ }
+
+ resp, err := fetch.Fetch(state + ".html")
+ if err != nil {
+ c.JSON(500, gin.H{
+ "error": err.Error(),
+ })
+ return
+ }
+
+ defer resp.Body.Close()
+ if resp.StatusCode != 200 {
+ c.JSON(500, gin.H{
+ "error": "status code is not 200",
+ })
+ return
+ }
+
+ scraped := scrape.ScrapeState(resp.Body)
+
+ c.JSON(200, scraped)
+}