From b97408f9ae1ad20402369ad98a770efbedd10919 Mon Sep 17 00:00:00 2001 From: Achraf RRAMI <51409801+rramiachraf@users.noreply.github.com> Date: Fri, 19 Jan 2024 19:53:29 +0000 Subject: [PATCH 01/76] Add privacyfucking.rocks instance --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6323e61..33e5248 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ The default port is 5555, you can use other ports by setting the `PORT` environm | | DE | Yes | @MaximilianGT500 | | | FR | No | https://privacydev.net | | | NL | No | https://ducks.party | +| | DE | - | https://privacyfucking.rocks | ### Tor | URL | Operator | From 412f2d63b48a44d52c458a7b6b1e8b534001b77d Mon Sep 17 00:00:00 2001 From: jamesbrown8532 <128091819+jamesbrown8532@users.noreply.github.com> Date: Sat, 17 Feb 2024 22:18:57 +0000 Subject: [PATCH 02/76] Merge Tor instances with main table --- README.md | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 33e5248..9fa83d4 100644 --- a/README.md +++ b/README.md @@ -18,20 +18,14 @@ The default port is 5555, you can use other ports by setting the `PORT` environm ## Public Instances -| URL | Region | CDN? | Operator | -| --- | --- | --- | --- | -| | US | No | https://vern.cc | -| | US/DE | Yes | Whatever Social | -| | DE | Yes | @MaximilianGT500 | -| | FR | No | https://privacydev.net | -| | NL | No | https://ducks.party | -| | DE | - | https://privacyfucking.rocks | - -### Tor -| URL | Operator | -| --- | --- | -| | https://vern.cc | -| | https://privacydev.net | +| URL | Tor | Region | CDN? | Operator | +| --- | --- | --- | --- | --- | +| | [Yes](http://dm.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion) | US | No | https://vern.cc | +| | No | US/DE | Yes | Whatever Social | +| | No | DE | Yes | @MaximilianGT500 | +| | [Yes](http://dumb.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion) | FR | No | https://privacydev.net | +| | No | NL | No | https://ducks.party | +| | No | DE | - | https://privacyfucking.rocks | ### I2P | URL | Operator | From 4070bdc2a50bd339dcf5b8c228dd6c7750608edd Mon Sep 17 00:00:00 2001 From: jamesbrown8532 <128091819+jamesbrown8532@users.noreply.github.com> Date: Sat, 17 Feb 2024 22:24:56 +0000 Subject: [PATCH 03/76] Merge I2P instances with main table --- README.md | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 9fa83d4..932102c 100644 --- a/README.md +++ b/README.md @@ -18,19 +18,14 @@ The default port is 5555, you can use other ports by setting the `PORT` environm ## Public Instances -| URL | Tor | Region | CDN? | Operator | -| --- | --- | --- | --- | --- | -| | [Yes](http://dm.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion) | US | No | https://vern.cc | -| | No | US/DE | Yes | Whatever Social | -| | No | DE | Yes | @MaximilianGT500 | -| | [Yes](http://dumb.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion) | FR | No | https://privacydev.net | -| | No | NL | No | https://ducks.party | -| | No | DE | - | https://privacyfucking.rocks | - -### I2P -| URL | Operator | -| --- | --- | -| | https://vern.cc | +| URL | Tor | I2P | Region | CDN? | Operator | +| --- | --- | --- | --- | --- | --- | +| | [Yes](http://dm.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion) | [Yes](http://vernxpcpqi2y4uhu7to4rnjmyjjgzh3x3qxyzpmkhykefchkmleq.b32.i2p) | US | No | https://vern.cc | +| | No | No | US/DE | Yes | Whatever Social | +| | No | No | DE | Yes | @MaximilianGT500 | +| | [Yes](http://dumb.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion) | No | FR | No | https://privacydev.net | +| | No | No | NL | No | https://ducks.party | +| | No | No | DE | - | https://privacyfucking.rocks | For people who might be capable and interested in hosting a public instance feel free to do so and don't forget to open a pull request so your instance can be included here. From 4e083cc641de241bba0b4a5c23b8ac154f666dbf Mon Sep 17 00:00:00 2001 From: jamesbrown8532 <128091819+jamesbrown8532@users.noreply.github.com> Date: Sat, 17 Feb 2024 22:44:24 +0000 Subject: [PATCH 04/76] Add instances list in JSON format --- instances.json | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 instances.json diff --git a/instances.json b/instances.json new file mode 100644 index 0000000..96c5e0b --- /dev/null +++ b/instances.json @@ -0,0 +1,35 @@ +[ + { + "clearnet": "https://dm.vern.cc/", + "tor": "http://dm.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion/", + "i2p": "http://vernxpcpqi2y4uhu7to4rnjmyjjgzh3x3qxyzpmkhykefchkmleq.b32.i2p/", + "country": "US", + "cdn": false + }, + { + "clearnet": "https://sing.whatever.social/", + "country": "US/DE", + "cdn": true + }, + { + "clearnet": "https://dumb.lunar.icu/", + "country": "DE", + "cdn": true + }, + { + "clearnet": "https://dumb.privacydev.net/", + "tor": "http://dumb.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion/", + "country": "FR", + "cdn": false + }, + { + "clearnet": "https://dumb.ducks.party/", + "country": "NL", + "cdn": false + }, + { + "clearnet": "https://dumb.privacyfucking.rocks/", + "country": "DE", + "cdn": false + } +] From 5325941e0f192d92710783c39c958dee4780360c Mon Sep 17 00:00:00 2001 From: jamesbrown8532 <128091819+jamesbrown8532@users.noreply.github.com> Date: Sat, 17 Feb 2024 22:46:05 +0000 Subject: [PATCH 05/76] Fix table in README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 932102c..66e5c75 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,8 @@ The default port is 5555, you can use other ports by setting the `PORT` environm ## Public Instances -| URL | Tor | I2P | Region | CDN? | Operator | -| --- | --- | --- | --- | --- | --- | +| URL | Tor | I2P | Region | CDN? | Operator | +| --- | --- | --- | --- | --- | --- | | | [Yes](http://dm.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion) | [Yes](http://vernxpcpqi2y4uhu7to4rnjmyjjgzh3x3qxyzpmkhykefchkmleq.b32.i2p) | US | No | https://vern.cc | | | No | No | US/DE | Yes | Whatever Social | | | No | No | DE | Yes | @MaximilianGT500 | From 6c0750485140ca614cbdda4750b3f8054ab70865 Mon Sep 17 00:00:00 2001 From: jamesbrown8532 <128091819+jamesbrown8532@users.noreply.github.com> Date: Sat, 17 Feb 2024 22:47:48 +0000 Subject: [PATCH 06/76] Mention instances.json in README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 33e5248..87d03ba 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,8 @@ The default port is 5555, you can use other ports by setting the `PORT` environm | --- | --- | | | https://vern.cc | +Instances list in JSON format can be found in [instances.json](instances.json) file. + For people who might be capable and interested in hosting a public instance feel free to do so and don't forget to open a pull request so your instance can be included here. ## Contributing From e2d5ef044b2e32e093319bba1c901835c0a0c860 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 14:59:47 +0100 Subject: [PATCH 07/76] feat: replace text/template with templ and refactor code --- .gitignore | 1 + Dockerfile | 2 +- Makefile | 4 ++ README.md | 2 +- album.go | 139 ------------------------------------ annotations.go | 127 -------------------------------- data/album.go | 74 +++++++++++++++++++ data/annotation.go | 15 ++++ lyrics.go => data/lyrics.go | 78 +++----------------- data/proxy.go | 16 +++++ data/search.go | 28 ++++++++ data/utils.go | 46 ++++++++++++ go.mod | 15 ++-- go.sum | 51 +++++++++---- handlers/album.go | 67 +++++++++++++++++ handlers/annotations.go | 103 ++++++++++++++++++++++++++ handlers/cache.go | 35 +++++++++ handlers/lyrics.go | 62 ++++++++++++++++ handlers/proxy.go | 58 +++++++++++++++ handlers/search.go | 40 +++++++++++ handlers/utils.go | 49 +++++++++++++ main.go | 31 ++++---- proxy.go | 73 ------------------- scripts/dumb.service | 21 ------ scripts/nginx-config | 35 --------- search.go | 61 ---------------- utils.go | 119 ------------------------------ views/album.templ | 32 +++++++++ views/album.tmpl | 35 --------- views/error.templ | 12 ++++ views/error.tmpl | 20 ------ views/footer.templ | 7 ++ views/footer.tmpl | 5 -- views/head.templ | 12 ++++ views/home.templ | 15 ++++ views/home.tmpl | 26 ------- views/layout.templ | 15 ++++ views/lyrics.templ | 38 ++++++++++ views/lyrics.tmpl | 40 ----------- views/navbar.templ | 7 ++ views/navbar.tmpl | 5 -- views/search.templ | 29 ++++++++ views/search.tmpl | 37 ---------- 43 files changed, 836 insertions(+), 851 deletions(-) create mode 100644 Makefile delete mode 100644 album.go delete mode 100644 annotations.go create mode 100644 data/album.go create mode 100644 data/annotation.go rename lyrics.go => data/lyrics.go (57%) create mode 100644 data/proxy.go create mode 100644 data/search.go create mode 100644 data/utils.go create mode 100644 handlers/album.go create mode 100644 handlers/annotations.go create mode 100644 handlers/cache.go create mode 100644 handlers/lyrics.go create mode 100644 handlers/proxy.go create mode 100644 handlers/search.go create mode 100644 handlers/utils.go delete mode 100644 proxy.go delete mode 100644 scripts/dumb.service delete mode 100644 scripts/nginx-config delete mode 100644 search.go delete mode 100644 utils.go create mode 100644 views/album.templ delete mode 100644 views/album.tmpl create mode 100644 views/error.templ delete mode 100644 views/error.tmpl create mode 100644 views/footer.templ delete mode 100644 views/footer.tmpl create mode 100644 views/head.templ create mode 100644 views/home.templ delete mode 100644 views/home.tmpl create mode 100644 views/layout.templ create mode 100644 views/lyrics.templ delete mode 100644 views/lyrics.tmpl create mode 100644 views/navbar.templ delete mode 100644 views/navbar.tmpl create mode 100644 views/search.templ delete mode 100644 views/search.tmpl diff --git a/.gitignore b/.gitignore index b016f34..8373007 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ dumb +views/*_templ.go diff --git a/Dockerfile b/Dockerfile index d063447..9e08192 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ COPY go.mod go.sum ./ RUN go mod download COPY . . -RUN go build +RUN make build EXPOSE 5555/tcp diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..009f4d6 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +gentempl: + @command -v templ &> /dev/null || go install github.com/a-h/templ/cmd/templ@latest +build:gentempl + templ generate && go build -o dumb diff --git a/README.md b/README.md index 33e5248..08fef1f 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ With the massive daily increase of useless scripts on Genius's web frontend and ```bash git clone https://github.com/rramiachraf/dumb cd dumb -go build +make build ./dumb ``` diff --git a/album.go b/album.go deleted file mode 100644 index e21d8a2..0000000 --- a/album.go +++ /dev/null @@ -1,139 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "net/http" - "strings" - - "github.com/PuerkitoBio/goquery" - "github.com/gorilla/mux" -) - -type album struct { - Artist string - Name string - Image string - About [2]string - - Tracks []Track -} - -type Track struct { - Title string - Url string -} - -type albumMetadata struct { - Album struct { - Id int `json:"id"` - Image string `json:"cover_art_thumbnail_url"` - Name string `json:"name"` - Description string `json:"description_preview"` - Artist `json:"artist"` - } - AlbumAppearances []AlbumAppearances `json:"album_appearances"` -} - -type AlbumAppearances struct { - Id int `json:"id"` - TrackNumber int `json:"track_number"` - Song struct { - Title string `json:"title"` - Url string `json:"url"` - } -} - -type Artist struct { - Name string `json:"name"` -} - -func (a *album) parseAlbumData(doc *goquery.Document) { - pageMetadata, exists := doc.Find("meta[itemprop='page_data']").Attr("content") - if !exists { - return - } - - var albumMetadataFromPage albumMetadata - json.Unmarshal([]byte(pageMetadata), &albumMetadataFromPage) - - albumData := albumMetadataFromPage.Album - a.Artist = albumData.Artist.Name - a.Name = albumData.Name - a.Image = albumData.Image - a.About[0] = albumData.Description - a.About[1] = truncateText(albumData.Description) - - for _, track := range albumMetadataFromPage.AlbumAppearances { - url := strings.Replace(track.Song.Url, "https://genius.com", "", -1) - a.Tracks = append(a.Tracks, Track{Title: track.Song.Title, Url: url}) - } -} - -func (a *album) parse(doc *goquery.Document) { - a.parseAlbumData(doc) -} - -func albumHandler(w http.ResponseWriter, r *http.Request) { - artist := mux.Vars(r)["artist"] - albumName := mux.Vars(r)["albumName"] - - id := fmt.Sprintf("%s/%s", artist, albumName) - - if data, err := getCache(id); err == nil { - render("album", w, data) - return - } - - url := fmt.Sprintf("https://genius.com/albums/%s/%s", artist, albumName) - - resp, err := sendRequest(url) - if err != nil { - logger.Errorln(err) - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "cannot reach genius servers", - }) - return - } - - defer resp.Body.Close() - - if resp.StatusCode == http.StatusNotFound { - w.WriteHeader(http.StatusNotFound) - render("error", w, map[string]string{ - "Status": "404", - "Error": "page not found", - }) - return - } - - doc, err := goquery.NewDocumentFromReader(resp.Body) - if err != nil { - logger.Errorln(err) - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "something went wrong", - }) - return - } - - cf := doc.Find(".cloudflare_content").Length() - if cf > 0 { - logger.Errorln("cloudflare got in the way") - render("error", w, map[string]string{ - "Status": "500", - "Error": "damn cloudflare, issue #21 on GitHub", - }) - return - } - - var a album - a.parse(doc) - - render("album", w, a) - - setCache(id, a) -} diff --git a/annotations.go b/annotations.go deleted file mode 100644 index f77d35c..0000000 --- a/annotations.go +++ /dev/null @@ -1,127 +0,0 @@ -package main - -import ( - "bytes" - "encoding/json" - "fmt" - "net/http" - "regexp" - "strings" - - "github.com/gorilla/mux" -) - -type annotationsResponse struct { - Response struct { - Referent struct { - Annotations []struct { - Body struct { - Html string `json:"html"` - } `json:"body"` - } `json:"annotations"` - } `json:"referent"` - } `json:"response"` -} - -func annotationsHandler(w http.ResponseWriter, r *http.Request) { - id := mux.Vars(r)["id"] - - if data, err := getCache(id); err == nil { - - response, err := json.Marshal(data) - - if err != nil { - logger.Errorf("could not marshal json: %s\n", err) - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "Could not parse genius api response", - }) - return - } - w.Header().Set("content-type", "application/json") - _, err = w.Write(response) - if err != nil { - logger.Errorln("Error sending response: ", err) - } - return - } - - url := fmt.Sprintf("https://genius.com/api/referents/%s?text_format=html", id) - resp, err := sendRequest(url) - - if err != nil { - logger.Errorln(err) - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "cannot reach genius servers", - }) - return - } - - defer resp.Body.Close() - - if resp.StatusCode == http.StatusNotFound { - w.WriteHeader(http.StatusNotFound) - render("error", w, map[string]string{ - "Status": "404", - "Error": "page not found", - }) - return - } - - buf := new(bytes.Buffer) - _, err = buf.ReadFrom(resp.Body) - if err != nil { - logger.Errorln("Error paring genius api response", err) - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "Parsing error", - }) - return - } - - var data annotationsResponse - err = json.Unmarshal(buf.Bytes(), &data) - if err != nil { - logger.Errorf("could not unmarshal json: %s\n", err) - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "Could not parse genius api response", - }) - return - } - - w.Header().Set("content-type", "application/json") - body := data.Response.Referent.Annotations[0].Body - body.Html = cleanBody(body.Html) - response, err := json.Marshal(body) - - if err != nil { - logger.Errorf("could not marshal json: %s\n", err) - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "Could not parse genius api response", - }) - return - } - - setCache(id, body) - _, err = w.Write(response) - if err != nil { - logger.Errorln("Error sending response: ", err) - } -} - -func cleanBody(body string) string { - var withCleanedImageLinks = strings.Replace(body, "https://images.rapgenius.com/", "/images/", -1) - - var re = regexp.MustCompile(`https?:\/\/[a-z]*.?genius.com`) - var withCleanedLinks = re.ReplaceAllString(withCleanedImageLinks, "") - - return withCleanedLinks -} diff --git a/data/album.go b/data/album.go new file mode 100644 index 0000000..775f7bb --- /dev/null +++ b/data/album.go @@ -0,0 +1,74 @@ +package data + +import ( + "encoding/json" + "strings" + + "github.com/PuerkitoBio/goquery" +) + +type Album struct { + Artist string + Name string + Image string + About [2]string + + Tracks []Track +} + +type Track struct { + Title string + Url string +} + +type albumMetadata struct { + Album struct { + Id int `json:"id"` + Image string `json:"cover_art_thumbnail_url"` + Name string `json:"name"` + Description string `json:"description_preview"` + Artist `json:"artist"` + } + AlbumAppearances []AlbumAppearances `json:"album_appearances"` +} + +type AlbumAppearances struct { + Id int `json:"id"` + TrackNumber int `json:"track_number"` + Song struct { + Title string `json:"title"` + Url string `json:"url"` + } +} + +type Artist struct { + Name string `json:"name"` +} + +func (a *Album) parseAlbumData(doc *goquery.Document) { + pageMetadata, exists := doc.Find("meta[itemprop='page_data']").Attr("content") + if !exists { + return + } + + var albumMetadataFromPage albumMetadata + json.Unmarshal([]byte(pageMetadata), &albumMetadataFromPage) + + albumData := albumMetadataFromPage.Album + a.Artist = albumData.Artist.Name + a.Name = albumData.Name + a.Image = albumData.Image + a.About[0] = albumData.Description + //a.About[1] = truncateText(albumData.Description) + a.About[1] = "" + + for _, track := range albumMetadataFromPage.AlbumAppearances { + url := strings.Replace(track.Song.Url, "https://genius.com", "", -1) + a.Tracks = append(a.Tracks, Track{Title: track.Song.Title, Url: url}) + } +} + +func (a *Album) Parse(doc *goquery.Document) { + a.parseAlbumData(doc) +} + diff --git a/data/annotation.go b/data/annotation.go new file mode 100644 index 0000000..70787bc --- /dev/null +++ b/data/annotation.go @@ -0,0 +1,15 @@ +package data + +type AnnotationsResponse struct { + Response struct { + Referent struct { + Annotations []Annotation `json:"annotations"` + } `json:"referent"` + } `json:"response"` +} + +type Annotation struct { + Body struct { + Html string `json:"html"` + } `json:"body"` +} diff --git a/lyrics.go b/data/lyrics.go similarity index 57% rename from lyrics.go rename to data/lyrics.go index 0fdcb8c..5ba8636 100644 --- a/lyrics.go +++ b/data/lyrics.go @@ -1,16 +1,15 @@ -package main +package data import ( "encoding/json" "fmt" - "net/http" "strings" "github.com/PuerkitoBio/goquery" - "github.com/gorilla/mux" + "github.com/sirupsen/logrus" ) -type song struct { +type Song struct { Artist string Title string Image string @@ -46,17 +45,17 @@ type customPerformance struct { } } -func (s *song) parseLyrics(doc *goquery.Document) { +func (s *Song) parseLyrics(doc *goquery.Document) { doc.Find("[data-lyrics-container='true']").Each(func(i int, ss *goquery.Selection) { h, err := ss.Html() if err != nil { - logger.Errorln("unable to parse lyrics", err) + logrus.Errorln("unable to parse lyrics", err) } s.Lyrics += h }) } -func (s *song) parseSongData(doc *goquery.Document) { +func (s *Song) parseSongData(doc *goquery.Document) { attr, exists := doc.Find("meta[property='twitter:app:url:iphone']").Attr("content") if exists { songID := strings.Replace(attr, "genius://songs/", "", 1) @@ -65,7 +64,7 @@ func (s *song) parseSongData(doc *goquery.Document) { res, err := sendRequest(u) if err != nil { - logger.Errorln(err) + logrus.Errorln(err) } defer res.Body.Close() @@ -74,7 +73,7 @@ func (s *song) parseSongData(doc *goquery.Document) { decoder := json.NewDecoder(res.Body) err = decoder.Decode(&data) if err != nil { - logger.Errorln(err) + logrus.Errorln(err) } songData := data.Response.Song @@ -107,66 +106,7 @@ func truncateText(text string) string { return text } -func (s *song) parse(doc *goquery.Document) { +func (s *Song) Parse(doc *goquery.Document) { s.parseLyrics(doc) s.parseSongData(doc) } - -func lyricsHandler(w http.ResponseWriter, r *http.Request) { - id := mux.Vars(r)["id"] - - if data, err := getCache(id); err == nil { - render("lyrics", w, data) - return - } - - url := fmt.Sprintf("https://genius.com/%s-lyrics", id) - resp, err := sendRequest(url) - if err != nil { - logger.Errorln(err) - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "cannot reach genius servers", - }) - return - } - - defer resp.Body.Close() - - if resp.StatusCode == http.StatusNotFound { - w.WriteHeader(http.StatusNotFound) - render("error", w, map[string]string{ - "Status": "404", - "Error": "page not found", - }) - return - } - - doc, err := goquery.NewDocumentFromReader(resp.Body) - if err != nil { - logger.Errorln(err) - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "something went wrong", - }) - return - } - - cf := doc.Find(".cloudflare_content").Length() - if cf > 0 { - logger.Errorln("cloudflare got in the way") - render("error", w, map[string]string{ - "Status": "500", - "Error": "damn cloudflare, issue #21 on GitHub", - }) - return - } - - var s song - s.parse(doc) - - render("lyrics", w, s) - setCache(id, s) -} diff --git a/data/proxy.go b/data/proxy.go new file mode 100644 index 0000000..4b432d8 --- /dev/null +++ b/data/proxy.go @@ -0,0 +1,16 @@ +package data + +import ( + "fmt" + "net/url" +) + +func ExtractImageURL(image string) string { + u, err := url.Parse(image) + if err != nil { + return "" + } + + return fmt.Sprintf("/images%s", u.Path) +} + diff --git a/data/search.go b/data/search.go new file mode 100644 index 0000000..d78ce41 --- /dev/null +++ b/data/search.go @@ -0,0 +1,28 @@ +package data + +type SearchResponse struct { + Response struct { + Sections sections + } +} + +type result struct { + ArtistNames string `json:"artist_names"` + Title string + Path string + Thumbnail string `json:"song_art_image_thumbnail_url"` +} + +type hits []struct { + Result result +} + +type sections []struct { + Type string + Hits hits +} + +type SearchResults struct { + Query string + Sections sections +} diff --git a/data/utils.go b/data/utils.go new file mode 100644 index 0000000..022533a --- /dev/null +++ b/data/utils.go @@ -0,0 +1,46 @@ +package data + +import ( + "net" + "net/http" + "net/url" + "time" + + "github.com/caffix/cloudflare-roundtripper/cfrt" +) + +const UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" + +var client = &http.Client{ + Timeout: 20 * time.Second, + Transport: &http.Transport{ + DialContext: (&net.Dialer{ + Timeout: 15 * time.Second, + KeepAlive: 15 * time.Second, + DualStack: true, + }).DialContext, + }, +} + +func sendRequest(u string) (*http.Response, error) { + url, err := url.Parse(u) + if err != nil { + return nil, err + } + + client.Transport, err = cfrt.New(client.Transport) + if err != nil { + return nil, err + } + + req := &http.Request{ + Method: http.MethodGet, + URL: url, + Header: map[string][]string{ + "Accept-Language": {"en-US"}, + "User-Agent": {UA}, + }, + } + + return client.Do(req) +} diff --git a/go.mod b/go.mod index 6b46600..8455ef0 100644 --- a/go.mod +++ b/go.mod @@ -1,20 +1,23 @@ module github.com/rramiachraf/dumb -go 1.18 +go 1.21 + +toolchain go1.22.0 require ( - github.com/PuerkitoBio/goquery v1.8.0 + github.com/PuerkitoBio/goquery v1.8.1 + github.com/a-h/templ v0.2.598 github.com/allegro/bigcache/v3 v3.0.2 + github.com/caffix/cloudflare-roundtripper v0.0.0-20181218223503-4c29d231c9cb github.com/gorilla/mux v1.8.0 github.com/sirupsen/logrus v1.9.3 ) require ( github.com/andybalholm/cascadia v1.3.1 // indirect - github.com/caffix/cloudflare-roundtripper v0.0.0-20181218223503-4c29d231c9cb // indirect github.com/robertkrimen/otto v0.2.1 // indirect - golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 // indirect - golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect - golang.org/x/text v0.4.0 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect gopkg.in/sourcemap.v1 v1.0.5 // indirect ) diff --git a/go.sum b/go.sum index 3eb7ee1..101c6db 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,7 @@ -github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U= -github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI= +github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM= +github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ= +github.com/a-h/templ v0.2.598 h1:6jMIHv6wQZvdPxTuv87erW4RqN/FPU0wk7ZHN5wVuuo= +github.com/a-h/templ v0.2.598/go.mod h1:SA7mtYwVEajbIXFRh3vKdYm/4FYyLQAtPH1+KxzGPA8= github.com/allegro/bigcache/v3 v3.0.2 h1:AKZCw+5eAaVyNTBmI2fgyPVJhHkdWder3O9IrprcQfI= github.com/allegro/bigcache/v3 v3.0.2/go.mod h1:aPyh7jEvrog9zAwx5N7+JUQX5dZTSGpxF1LAR4dr35I= github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= @@ -9,35 +11,60 @@ github.com/caffix/cloudflare-roundtripper v0.0.0-20181218223503-4c29d231c9cb/go. github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/robertkrimen/otto v0.2.1 h1:FVP0PJ0AHIjC+N4pKCG9yCDz6LHNPCwi/GKID5pGGF0= github.com/robertkrimen/otto v0.2.1/go.mod h1:UPwtJ1Xu7JrLcZjNWN8orJaM5n5YEtqL//farB5FlRY= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 h1:/6y1LfuqNuQdHAm0jjtPtgRcxIxjVZgm5OTu8/QhZvk= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +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/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +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-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +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/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-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8 h1:0A+M6Uqn+Eje4kHMK80dtF3JCXC4ykBgQG4Fe06QRhQ= +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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= 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.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.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/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.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +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.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 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/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/sourcemap.v1 v1.0.5 h1:inv58fC9f9J3TK2Y2R1NPntXEn3/wjWHkonhIUODNTI= gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= 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= diff --git a/handlers/album.go b/handlers/album.go new file mode 100644 index 0000000..bbdca54 --- /dev/null +++ b/handlers/album.go @@ -0,0 +1,67 @@ +package handlers + +import ( + "context" + "fmt" + "net/http" + + "github.com/PuerkitoBio/goquery" + "github.com/gorilla/mux" + "github.com/rramiachraf/dumb/data" + "github.com/rramiachraf/dumb/views" + "github.com/sirupsen/logrus" +) + +func Album(l *logrus.Logger) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + artist := mux.Vars(r)["artist"] + albumName := mux.Vars(r)["albumName"] + + id := fmt.Sprintf("%s/%s", artist, albumName) + + if a, err := getCache[data.Album](id); err == nil { + views.AlbumPage(a).Render(context.Background(), w) + return + } + + url := fmt.Sprintf("https://genius.com/albums/%s/%s", artist, albumName) + + resp, err := sendRequest(url) + if err != nil { + l.Errorln(err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "cannot reach Genius servers").Render(context.Background(), w) + return + } + + defer resp.Body.Close() + + if resp.StatusCode == http.StatusNotFound { + w.WriteHeader(http.StatusNotFound) + views.ErrorPage(404, "page not found").Render(context.Background(), w) + return + } + + doc, err := goquery.NewDocumentFromReader(resp.Body) + if err != nil { + l.Errorln(err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "something went wrong").Render(context.Background(), w) + return + } + + cf := doc.Find(".cloudflare_content").Length() + if cf > 0 { + l.Errorln("cloudflare got in the way") + views.ErrorPage(500, "i'll fix this later #21").Render(context.Background(), w) + return + } + + var a data.Album + a.Parse(doc) + + views.AlbumPage(a).Render(context.Background(), w) + + setCache(id, a) + } +} diff --git a/handlers/annotations.go b/handlers/annotations.go new file mode 100644 index 0000000..a12df8f --- /dev/null +++ b/handlers/annotations.go @@ -0,0 +1,103 @@ +package handlers + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "net/http" + "regexp" + "strings" + + "github.com/gorilla/mux" + "github.com/rramiachraf/dumb/data" + "github.com/rramiachraf/dumb/views" + "github.com/sirupsen/logrus" +) + +func Annotations(l *logrus.Logger) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id := mux.Vars(r)["id"] + + if data, err := getCache[data.Annotation](id); err == nil { + + response, err := json.Marshal(data) + + if err != nil { + l.Errorf("could not marshal json: %s\n", err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "something went wrong").Render(context.Background(), w) + return + } + w.Header().Set("content-type", "application/json") + _, err = w.Write(response) + if err != nil { + l.Errorln("Error sending response: ", err) + } + return + } + + url := fmt.Sprintf("https://genius.com/api/referents/%s?text_format=html", id) + resp, err := sendRequest(url) + + if err != nil { + l.Errorln(err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "cannot reach genius servers").Render(context.Background(), w) + return + } + + defer resp.Body.Close() + + if resp.StatusCode == http.StatusNotFound { + w.WriteHeader(http.StatusNotFound) + views.ErrorPage(404, "page not found").Render(context.Background(), w) + return + } + + buf := new(bytes.Buffer) + _, err = buf.ReadFrom(resp.Body) + if err != nil { + l.Errorln("Error paring genius api response", err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "something went wrong").Render(context.Background(), w) + return + } + + var data data.AnnotationsResponse + err = json.Unmarshal(buf.Bytes(), &data) + if err != nil { + l.Errorf("could not unmarshal json: %s\n", err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "something went wrong").Render(context.Background(), w) + return + } + + w.Header().Set("content-type", "application/json") + body := data.Response.Referent.Annotations[0].Body + body.Html = cleanBody(body.Html) + response, err := json.Marshal(body) + + if err != nil { + l.Errorf("could not marshal json: %s\n", err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "something went wrong").Render(context.Background(), w) + return + } + + setCache(id, body) + _, err = w.Write(response) + if err != nil { + l.Errorln("Error sending response: ", err) + } + } +} + +func cleanBody(body string) string { + var withCleanedImageLinks = strings.Replace(body, "https://images.rapgenius.com/", "/images/", -1) + + var re = regexp.MustCompile(`https?:\/\/[a-z]*.?genius.com`) + var withCleanedLinks = re.ReplaceAllString(withCleanedImageLinks, "") + + return withCleanedLinks +} diff --git a/handlers/cache.go b/handlers/cache.go new file mode 100644 index 0000000..f0d718e --- /dev/null +++ b/handlers/cache.go @@ -0,0 +1,35 @@ +package handlers + +import ( + "encoding/json" + "time" + + "github.com/allegro/bigcache/v3" + "github.com/rramiachraf/dumb/data" +) + +var c, _ = bigcache.NewBigCache(bigcache.DefaultConfig(time.Hour * 24)) + +func setCache(key string, entry interface{}) error { + data, err := json.Marshal(&entry) + if err != nil { + return err + } + + return c.Set(key, data) +} + +func getCache[v data.Album | data.Song | data.Annotation](key string) (v, error) { + var decoded v + + data, err := c.Get(key) + if err != nil { + return decoded, err + } + + if err = json.Unmarshal(data, &decoded); err != nil { + return decoded, err + } + + return decoded, nil +} diff --git a/handlers/lyrics.go b/handlers/lyrics.go new file mode 100644 index 0000000..3e2ee4b --- /dev/null +++ b/handlers/lyrics.go @@ -0,0 +1,62 @@ +package handlers + +import ( + "context" + "fmt" + "net/http" + + "github.com/PuerkitoBio/goquery" + "github.com/gorilla/mux" + "github.com/rramiachraf/dumb/data" + "github.com/rramiachraf/dumb/views" + "github.com/sirupsen/logrus" +) + +func Lyrics(l *logrus.Logger) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + id := mux.Vars(r)["id"] + + if s, err := getCache[data.Song](id); err == nil { + views.LyricsPage(s).Render(context.Background(), w) + return + } + + url := fmt.Sprintf("https://genius.com/%s-lyrics", id) + resp, err := sendRequest(url) + if err != nil { + l.Errorln(err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "cannot reach Genius servers").Render(context.Background(), w) + return + } + + defer resp.Body.Close() + + if resp.StatusCode == http.StatusNotFound { + w.WriteHeader(http.StatusNotFound) + views.ErrorPage(404, "page not found").Render(context.Background(), w) + return + } + + doc, err := goquery.NewDocumentFromReader(resp.Body) + if err != nil { + l.Errorln(err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "something went wrong").Render(context.Background(), w) + return + } + + cf := doc.Find(".cloudflare_content").Length() + if cf > 0 { + l.Errorln("cloudflare got in the way") + views.ErrorPage(500, "TODO: fix Cloudflare #21").Render(context.Background(), w) + return + } + + var s data.Song + s.Parse(doc) + + views.LyricsPage(s).Render(context.Background(), w) + setCache(id, s) + } +} diff --git a/handlers/proxy.go b/handlers/proxy.go new file mode 100644 index 0000000..ea3003d --- /dev/null +++ b/handlers/proxy.go @@ -0,0 +1,58 @@ +package handlers + +import ( + "context" + "fmt" + "io" + "net/http" + "strings" + + "github.com/gorilla/mux" + "github.com/rramiachraf/dumb/views" + "github.com/sirupsen/logrus" +) + +func isValidExt(ext string) bool { + valid := []string{"jpg", "jpeg", "png", "gif"} + for _, c := range valid { + if strings.ToLower(ext) == c { + return true + } + } + + return false +} + +func ImageProxy(l *logrus.Logger) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + v := mux.Vars(r) + f := v["filename"] + ext := v["ext"] + + if !isValidExt(ext) { + w.WriteHeader(http.StatusBadRequest) + views.ErrorPage(400, "something went wrong").Render(context.Background(), w) + return + } + + // first segment of URL resize the image to reduce bandwith usage. + url := fmt.Sprintf("https://t2.genius.com/unsafe/300x300/https://images.genius.com/%s.%s", f, ext) + + res, err := sendRequest(url) + if err != nil { + l.Errorln(err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "cannot reach Genius servers").Render(context.Background(), w) + return + } + + if res.StatusCode != http.StatusOK { + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "something went wrong").Render(context.Background(), w) + return + } + + w.Header().Add("Content-type", fmt.Sprintf("image/%s", ext)) + io.Copy(w, res.Body) + } +} diff --git a/handlers/search.go b/handlers/search.go new file mode 100644 index 0000000..26265d9 --- /dev/null +++ b/handlers/search.go @@ -0,0 +1,40 @@ +package handlers + +import ( + "context" + "encoding/json" + "fmt" + "net/http" + "net/url" + + "github.com/rramiachraf/dumb/data" + "github.com/rramiachraf/dumb/views" + "github.com/sirupsen/logrus" +) + +func Search(l *logrus.Logger) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + query := r.URL.Query().Get("q") + url := fmt.Sprintf(`https://genius.com/api/search/multi?q=%s`, url.QueryEscape(query)) + + res, err := sendRequest(url) + if err != nil { + l.Errorln(err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "cannot reach Genius servers").Render(context.Background(), w) + return + } + + defer res.Body.Close() + + var sRes data.SearchResponse + + d := json.NewDecoder(res.Body) + d.Decode(&sRes) + + results := data.SearchResults{Query: query, Sections: sRes.Response.Sections} + + views.SearchPage(results).Render(context.Background(), w) + } + +} diff --git a/handlers/utils.go b/handlers/utils.go new file mode 100644 index 0000000..8eeb669 --- /dev/null +++ b/handlers/utils.go @@ -0,0 +1,49 @@ +package handlers + +import ( + "net" + "net/http" + "net/url" + "time" +) + +func MustHeaders(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + csp := "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; object-src 'none'" + w.Header().Add("content-security-policy", csp) + w.Header().Add("referrer-policy", "no-referrer") + w.Header().Add("x-content-type-options", "nosniff") + next.ServeHTTP(w, r) + }) +} + +const UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" + +var client = &http.Client{ + Timeout: 20 * time.Second, + Transport: &http.Transport{ + DialContext: (&net.Dialer{ + Timeout: 15 * time.Second, + KeepAlive: 15 * time.Second, + DualStack: true, + }).DialContext, + }, +} + +func sendRequest(u string) (*http.Response, error) { + url, err := url.Parse(u) + if err != nil { + return nil, err + } + + req := &http.Request{ + Method: http.MethodGet, + URL: url, + Header: map[string][]string{ + "Accept-Language": {"en-US"}, + "User-Agent": {UA}, + }, + } + + return client.Do(req) +} diff --git a/main.go b/main.go index 69799f9..39c9c21 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "context" "fmt" "net" "net/http" @@ -8,38 +9,30 @@ import ( "strconv" "time" - "github.com/allegro/bigcache/v3" + "github.com/a-h/templ" "github.com/gorilla/mux" + "github.com/rramiachraf/dumb/handlers" + "github.com/rramiachraf/dumb/views" "github.com/sirupsen/logrus" ) var logger = logrus.New() func main() { - c, err := bigcache.NewBigCache(bigcache.DefaultConfig(time.Hour * 24)) - if err != nil { - logger.Fatalln("can't initialize caching") - } - cache = c - r := mux.NewRouter() - r.Use(securityHeaders) + r.Use(handlers.MustHeaders) - r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { render("home", w, nil) }) - r.HandleFunc("/search", searchHandler).Methods("GET") - r.HandleFunc("/{id}-lyrics", lyricsHandler) - r.HandleFunc("/{id}/{artist-song}/{verse}/annotations", annotationsHandler) - r.HandleFunc("/images/{filename}.{ext}", proxyHandler) + r.Handle("/", templ.Handler(views.HomePage())) + r.HandleFunc("/{id}-lyrics", handlers.Lyrics(logger)).Methods("GET") + r.HandleFunc("/albums/{artist}/{albumName}", handlers.Album(logger)).Methods("GET") + r.HandleFunc("/images/{filename}.{ext}", handlers.ImageProxy(logger)).Methods("GET") + r.HandleFunc("/search", handlers.Search(logger)).Methods("GET") + r.HandleFunc("/{id}/{artist-song}/{verse}/annotations", handlers.Annotations(logger)).Methods("GET") r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) - r.HandleFunc("/albums/{artist}/{albumName}", albumHandler) r.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusNotFound) - render("error", w, map[string]string{ - "Status": "404", - "Error": "page not found", - }) - + views.ErrorPage(404, "page not found").Render(context.Background(), w) }) server := &http.Server{ diff --git a/proxy.go b/proxy.go deleted file mode 100644 index 006c932..0000000 --- a/proxy.go +++ /dev/null @@ -1,73 +0,0 @@ -package main - -import ( - "fmt" - "io" - "net/http" - "net/url" - "strings" - - "github.com/gorilla/mux" -) - -func isValidExt(ext string) bool { - valid := []string{"jpg", "jpeg", "png", "gif"} - for _, c := range valid { - if strings.ToLower(ext) == c { - return true - } - } - - return false -} - -func extractURL(image string) string { - u, err := url.Parse(image) - if err != nil { - return "" - } - - return fmt.Sprintf("/images%s", u.Path) -} - -func proxyHandler(w http.ResponseWriter, r *http.Request) { - v := mux.Vars(r) - f := v["filename"] - ext := v["ext"] - - if !isValidExt(ext) { - w.WriteHeader(http.StatusBadRequest) - render("error", w, map[string]string{ - "Status": "400", - "Error": "Something went wrong", - }) - return - } - - // first segment of URL resize the image to reduce bandwith usage. - url := fmt.Sprintf("https://t2.genius.com/unsafe/300x300/https://images.genius.com/%s.%s", f, ext) - - res, err := sendRequest(url) - if err != nil { - logger.Errorln(err) - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "cannot reach genius servers", - }) - return - } - - if res.StatusCode != http.StatusOK { - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "something went wrong", - }) - - return - } - - w.Header().Add("Content-type", fmt.Sprintf("image/%s", ext)) - io.Copy(w, res.Body) -} diff --git a/scripts/dumb.service b/scripts/dumb.service deleted file mode 100644 index 09d242f..0000000 --- a/scripts/dumb.service +++ /dev/null @@ -1,21 +0,0 @@ -[Unit] -Description=ListMonk -Documentation=https://github.com/rramiachraf/dumb -After=system.slice multi-user.target postgresql.service network.target - -[Service] -User=git -Type=simple - -StandardOutput=syslog -StandardError=syslog -SyslogIdentifier=listmonk - -WorkingDirectory=/etc/dumb -ExecStart=/etc/dumb/dumb - -Restart=always -RestartSec=5 - -[Install] -WantedBy=multi-user.target diff --git a/scripts/nginx-config b/scripts/nginx-config deleted file mode 100644 index 7cafb9d..0000000 --- a/scripts/nginx-config +++ /dev/null @@ -1,35 +0,0 @@ -server { - # root /var/www/dumb.yoursite.com/html; - # index index.html index.htm index.nginx-debian.html; - - server_name dumb.yoursite.com; - # www.dumb.yoursite.com; - - location / { - try_files $uri $uri/ =404; - proxy_pass http://localhost:5555; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - listen 443 ssl; # managed by Certbot - ssl_certificate /etc/letsencrypt/live/dumb.yoursite.com/fullchain.pem; # managed by Certbot - ssl_certificate_key /etc/letsencrypt/live/dumb.yoursite.com/privkey.pem; # managed by Certbot - include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot - ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot - -} -server { - if ($host = dumb.yoursite.com) { - return 301 https://$host$request_uri; - } # managed by Certbot - - server_name dumb.yoursite.com; - - listen 80; - return 404; # managed by Certbot - -} - diff --git a/search.go b/search.go deleted file mode 100644 index 1392e8d..0000000 --- a/search.go +++ /dev/null @@ -1,61 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "net/http" - "net/url" -) - -type response struct { - Response struct { - Sections sections - } -} - -type result struct { - ArtistNames string `json:"artist_names"` - Title string - Path string - Thumbnail string `json:"song_art_image_thumbnail_url"` -} - -type hits []struct { - Result result -} - -type sections []struct { - Type string - Hits hits -} - -type renderVars struct { - Query string - Sections sections -} - -func searchHandler(w http.ResponseWriter, r *http.Request) { - query := r.URL.Query().Get("q") - url := fmt.Sprintf(`https://genius.com/api/search/multi?q=%s`, url.QueryEscape(query)) - - res, err := sendRequest(url) - if err != nil { - logger.Errorln(err) - w.WriteHeader(http.StatusInternalServerError) - render("error", w, map[string]string{ - "Status": "500", - "Error": "cannot reach genius servers", - }) - } - - defer res.Body.Close() - - var data response - - d := json.NewDecoder(res.Body) - d.Decode(&data) - - vars := renderVars{query, data.Response.Sections} - - render("search", w, vars) -} diff --git a/utils.go b/utils.go deleted file mode 100644 index 94a686a..0000000 --- a/utils.go +++ /dev/null @@ -1,119 +0,0 @@ -package main - -import ( - "encoding/json" - "fmt" - "net" - "net/http" - "net/url" - "path" - "text/template" - "time" - - "github.com/allegro/bigcache/v3" - "github.com/caffix/cloudflare-roundtripper/cfrt" -) - -var cache *bigcache.BigCache - -func setCache(key string, entry interface{}) error { - data, err := json.Marshal(&entry) - if err != nil { - return err - } - - return cache.Set(key, data) -} - -func getCache(key string) (interface{}, error) { - data, err := cache.Get(key) - if err != nil { - return nil, err - } - - var decoded interface{} - - if err = json.Unmarshal(data, &decoded); err != nil { - return nil, err - } - - return decoded, nil -} - -func write(w http.ResponseWriter, status int, data []byte) { - w.WriteHeader(status) - w.Write(data) -} - -func securityHeaders(next http.Handler) http.Handler { - return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - csp := "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; object-src 'none'" - w.Header().Add("content-security-policy", csp) - w.Header().Add("referrer-policy", "no-referrer") - w.Header().Add("x-content-type-options", "nosniff") - next.ServeHTTP(w, r) - }) -} - -func getTemplates(templates ...string) []string { - var pths []string - for _, t := range templates { - tmpl := path.Join("views", fmt.Sprintf("%s.tmpl", t)) - pths = append(pths, tmpl) - } - return pths -} - -func render(n string, w http.ResponseWriter, data interface{}) { - w.Header().Set("content-type", "text/html") - t := template.New(n + ".tmpl").Funcs(template.FuncMap{"extractURL": extractURL}) - t, err := t.ParseFiles(getTemplates(n, "navbar", "footer")...) - if err != nil { - logger.Errorln(err) - w.WriteHeader(http.StatusInternalServerError) - return - } - - if err = t.Execute(w, data); err != nil { - logger.Errorln(err) - w.WriteHeader(http.StatusInternalServerError) - return - } -} - -const UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" - -var client = &http.Client{ - Timeout: 20 * time.Second, - Transport: &http.Transport{ - DialContext: (&net.Dialer{ - Timeout: 15 * time.Second, - KeepAlive: 15 * time.Second, - DualStack: true, - }).DialContext, - }, -} - -func sendRequest(u string) (*http.Response, error) { - url, err := url.Parse(u) - if err != nil { - return nil, err - } - - client.Transport, err = cfrt.New(client.Transport) - if err != nil { - return nil, err - } - - - req := &http.Request{ - Method: http.MethodGet, - URL: url, - Header: map[string][]string{ - "Accept-Language": {"en-US"}, - "User-Agent": {UA}, - }, - } - - return client.Do(req) -} diff --git a/views/album.templ b/views/album.templ new file mode 100644 index 0000000..5e61a04 --- /dev/null +++ b/views/album.templ @@ -0,0 +1,32 @@ +package views + +import ( + "fmt" + "github.com/rramiachraf/dumb/data" +) + +templ AlbumPage(a data.Album) { + @layout(fmt.Sprintf("%s - %s", a.Artist, a.Name)) { +
+
+ +

{ a.Artist }

+

{ a.Name }

+
+
+ for _, t := range a.Tracks { + +

{ t.Title }

+
+ } +
+
+
+

About

+ +

{ a.About[1] }

+
+
+
+ } +} diff --git a/views/album.tmpl b/views/album.tmpl deleted file mode 100644 index db35d77..0000000 --- a/views/album.tmpl +++ /dev/null @@ -1,35 +0,0 @@ - - - - {{.Artist}} - {{.Name}} - - - - - - - {{template "navbar"}} -
-
- -

{{.Artist}}

-

{{.Name}}

-
-
- {{range .Tracks}} - -

{{.Title}}

-
- {{end}} -
-
-
-

About

- -

{{index .About 1}}

-
-
-
- {{template "footer"}} - - diff --git a/views/error.templ b/views/error.templ new file mode 100644 index 0000000..7bfe3ec --- /dev/null +++ b/views/error.templ @@ -0,0 +1,12 @@ +package views + +import "strconv" + +templ ErrorPage(code int, display string) { + @layout("Error - dumb") { +
+

{ strconv.Itoa(code) }

+

{ display }

+
+ } +} diff --git a/views/error.tmpl b/views/error.tmpl deleted file mode 100644 index 39e0729..0000000 --- a/views/error.tmpl +++ /dev/null @@ -1,20 +0,0 @@ - - - - dumb - - - - - - -
- {{template "navbar"}} -
-

{{.Status}}

-

{{.Error}}

-
- {{template "footer"}} - - - diff --git a/views/footer.templ b/views/footer.templ new file mode 100644 index 0000000..1701078 --- /dev/null +++ b/views/footer.templ @@ -0,0 +1,7 @@ +package views + +templ footer() { + +} diff --git a/views/footer.tmpl b/views/footer.tmpl deleted file mode 100644 index 394117c..0000000 --- a/views/footer.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{define "footer"}} - -{{end}} diff --git a/views/head.templ b/views/head.templ new file mode 100644 index 0000000..f82ffd1 --- /dev/null +++ b/views/head.templ @@ -0,0 +1,12 @@ +package views + +templ head(title string) { + + { title } + + + + + + +} diff --git a/views/home.templ b/views/home.templ new file mode 100644 index 0000000..3890c20 --- /dev/null +++ b/views/home.templ @@ -0,0 +1,15 @@ +package views + +templ HomePage() { + @layout("dumb") { +
+
+

Welcome to dumb

+

An alternative frontend for genius.com

+
+
+ +
+
+ } +} diff --git a/views/home.tmpl b/views/home.tmpl deleted file mode 100644 index 0b3397e..0000000 --- a/views/home.tmpl +++ /dev/null @@ -1,26 +0,0 @@ - - - - dumb - - - - - - -
- {{template "navbar"}} -
-
-

Welcome to dumb

-

An alternative frontend for genius.com

-
-
- -
- -
- {{template "footer"}} - - - diff --git a/views/layout.templ b/views/layout.templ new file mode 100644 index 0000000..b02da33 --- /dev/null +++ b/views/layout.templ @@ -0,0 +1,15 @@ +package views + +templ layout(title string) { + + + @head(title) + +
+ @navbar() + { children... } + @footer() +
+ + +} diff --git a/views/lyrics.templ b/views/lyrics.templ new file mode 100644 index 0000000..73806e0 --- /dev/null +++ b/views/lyrics.templ @@ -0,0 +1,38 @@ +package views + +import ( + "fmt" + "github.com/rramiachraf/dumb/data" +) + +templ LyricsPage(s data.Song) { + @layout(fmt.Sprintf("%s - %s lyrics", s.Artist, s.Title)) { +
+
+ +

{ s.Artist }

+

{ s.Title }

+

{ s.Album }

+
+
+ @templ.Raw(s.Lyrics) +
+
+
+

About

+ +

{ s.About[1] }

+
+
+

Credits

+ for key, val := range s.Credits { +
+ { key } +

{ val }

+
+ } +
+
+
+ } +} diff --git a/views/lyrics.tmpl b/views/lyrics.tmpl deleted file mode 100644 index 5b9505d..0000000 --- a/views/lyrics.tmpl +++ /dev/null @@ -1,40 +0,0 @@ - - - - {{.Artist}} - {{.Title}} lyrics - - - - - - - - {{template "navbar"}} -
-
- -

{{.Artist}}

-

{{.Title}}

-

{{.Album}}

-
-
{{.Lyrics}}
-
-
-

About

- -

{{index .About 1}}

-
-
-

Credits

- {{range $key, $val := .Credits}} -
- {{$key}} -

{{$val}}

-
- {{end}} -
-
-
- {{template "footer"}} - - diff --git a/views/navbar.templ b/views/navbar.templ new file mode 100644 index 0000000..66c7255 --- /dev/null +++ b/views/navbar.templ @@ -0,0 +1,7 @@ +package views + +templ navbar() { + +} diff --git a/views/navbar.tmpl b/views/navbar.tmpl deleted file mode 100644 index bf117cd..0000000 --- a/views/navbar.tmpl +++ /dev/null @@ -1,5 +0,0 @@ -{{define "navbar"}} - -{{end}} diff --git a/views/search.templ b/views/search.templ new file mode 100644 index 0000000..9a48b4e --- /dev/null +++ b/views/search.templ @@ -0,0 +1,29 @@ +package views + +import "github.com/rramiachraf/dumb/data" + +templ SearchPage(r data.SearchResults) { + @layout("Search - dumb") { +
+
+ +
+
+ for _, s := range r.Sections { + if s.Type == "song" { +

Songs

+ for _, s := range s.Hits { + + +
+ { s.Result.ArtistNames } +

{ s.Result.Title }

+
+
+ } + } + } +
+
+ } +} diff --git a/views/search.tmpl b/views/search.tmpl deleted file mode 100644 index eecea1b..0000000 --- a/views/search.tmpl +++ /dev/null @@ -1,37 +0,0 @@ - - - - Search - dumb - - - - - - -
- {{template "navbar"}} -
-
- -
-
- {{range .Sections}} - {{if eq .Type "song"}} -

Songs

- {{range .Hits}} - - -
- {{.Result.ArtistNames}} -

{{.Result.Title}}

-
-
- {{end}} - {{end}} - {{end}} -
-
- {{template "footer"}} - - - From a5bc03959e1ace931b6d2892181dc17727c91bf3 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 17:41:01 +0100 Subject: [PATCH 08/76] feat: improve lyrics page UI --- data/lyrics.go | 29 +++++++++++++++++------------ static/style.css | 28 +++++++++++++++++++++------- views/lyrics.templ | 17 +++++++++++++---- 3 files changed, 51 insertions(+), 23 deletions(-) diff --git a/data/lyrics.go b/data/lyrics.go index 5ba8636..a2f3c8d 100644 --- a/data/lyrics.go +++ b/data/lyrics.go @@ -10,14 +10,17 @@ import ( ) type Song struct { - Artist string - Title string - Image string - Lyrics string - Credits map[string]string - About [2]string - Album string - LinkToAlbum string + Artist string + Title string + Image string + Lyrics string + Credits map[string]string + About [2]string + Album struct { + URL string + Name string + Image string + } } type songResponse struct { @@ -30,8 +33,9 @@ type songResponse struct { Plain string } Album struct { - Url string `json:"url"` - Name string `json:"name"` + URL string `json:"url"` + Name string `json:"name"` + Image string `json:"cover_art_url"` } CustomPerformances []customPerformance `json:"custom_performances"` } @@ -83,8 +87,9 @@ func (s *Song) parseSongData(doc *goquery.Document) { s.About[0] = songData.Description.Plain s.About[1] = truncateText(songData.Description.Plain) s.Credits = make(map[string]string) - s.Album = songData.Album.Name - s.LinkToAlbum = strings.Replace(songData.Album.Url, "https://genius.com", "", -1) + s.Album.Name = songData.Album.Name + s.Album.URL = strings.Replace(songData.Album.URL, "https://genius.com", "", -1) + s.Album.Image = ExtractImageURL(songData.Album.Image) for _, perf := range songData.CustomPerformances { var artists []string diff --git a/static/style.css b/static/style.css index 530484d..8a9961d 100644 --- a/static/style.css +++ b/static/style.css @@ -53,7 +53,6 @@ body { #lyrics a { color: inherit; - cursor: initial; } #lyrics a, .annotation { @@ -84,7 +83,7 @@ a { #metadata { display: flex; flex-direction: column; - gap: 0.5rem; + gap: 2rem; flex-basis: 0; } @@ -99,17 +98,25 @@ a { font-weight: 500; } +#metadata-info { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + #album-artwork { - width: 20rem; + width: 24rem; border-radius: 3px; box-shadow: 0 1px 1px #ddd; - max-width: 200px; } #container { - display: flex; - padding: 5rem 10rem; - gap: 5rem; + display: grid; + padding: 5rem 0; + grid-template-columns: 24rem 1fr 24rem; + max-width: 1024px; + margin: auto; + gap: 4rem; } #credits { @@ -129,6 +136,12 @@ a { color: #1e1e1e; } +#lyrics-album-container { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + #album-tracklist{ display: flex; flex-direction: column; @@ -214,6 +227,7 @@ a { @media screen and (max-width: 900px) { #container { padding: 3rem 2rem; + display: flex; flex-direction: column; gap: 3rem; } diff --git a/views/lyrics.templ b/views/lyrics.templ index 73806e0..3a96454 100644 --- a/views/lyrics.templ +++ b/views/lyrics.templ @@ -9,10 +9,11 @@ templ LyricsPage(s data.Song) { @layout(fmt.Sprintf("%s - %s lyrics", s.Artist, s.Title)) {
- -

{ s.Artist }

-

{ s.Title }

-

{ s.Album }

+ +
+

{ s.Artist }

+

{ s.Title }

+
@templ.Raw(s.Lyrics) @@ -32,6 +33,14 @@ templ LyricsPage(s data.Song) { }
+ if s.Album.Name != "" { +
+

{ s.Album.Name }

+ + + +
+ }
} From dccfd17bccd812d5da0bcbae266d8f17a629535f Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 18:46:23 +0100 Subject: [PATCH 09/76] fix: check ignored errors --- data/album.go | 17 ++++++++++------- handlers/album.go | 8 ++++++-- handlers/annotations.go | 8 +++++--- handlers/lyrics.go | 4 +++- handlers/proxy.go | 4 +++- handlers/search.go | 6 +++++- 6 files changed, 32 insertions(+), 15 deletions(-) diff --git a/data/album.go b/data/album.go index 775f7bb..65dc60f 100644 --- a/data/album.go +++ b/data/album.go @@ -45,30 +45,33 @@ type Artist struct { Name string `json:"name"` } -func (a *Album) parseAlbumData(doc *goquery.Document) { +func (a *Album) parseAlbumData(doc *goquery.Document) error { pageMetadata, exists := doc.Find("meta[itemprop='page_data']").Attr("content") if !exists { - return + return nil } var albumMetadataFromPage albumMetadata - json.Unmarshal([]byte(pageMetadata), &albumMetadataFromPage) + if err := json.Unmarshal([]byte(pageMetadata), &albumMetadataFromPage); err != nil { + return err + } albumData := albumMetadataFromPage.Album a.Artist = albumData.Artist.Name a.Name = albumData.Name a.Image = albumData.Image a.About[0] = albumData.Description - //a.About[1] = truncateText(albumData.Description) + a.About[1] = truncateText(albumData.Description) a.About[1] = "" for _, track := range albumMetadataFromPage.AlbumAppearances { url := strings.Replace(track.Song.Url, "https://genius.com", "", -1) a.Tracks = append(a.Tracks, Track{Title: track.Song.Title, Url: url}) } + + return nil } -func (a *Album) Parse(doc *goquery.Document) { - a.parseAlbumData(doc) +func (a *Album) Parse(doc *goquery.Document) error { + return a.parseAlbumData(doc) } - diff --git a/handlers/album.go b/handlers/album.go index bbdca54..e9aa8bc 100644 --- a/handlers/album.go +++ b/handlers/album.go @@ -58,10 +58,14 @@ func Album(l *logrus.Logger) http.HandlerFunc { } var a data.Album - a.Parse(doc) + if err = a.Parse(doc); err != nil { + l.Error(err) + } views.AlbumPage(a).Render(context.Background(), w) - setCache(id, a) + if err = setCache(id, a); err != nil { + l.Errorln(err) + } } } diff --git a/handlers/annotations.go b/handlers/annotations.go index a12df8f..2696c98 100644 --- a/handlers/annotations.go +++ b/handlers/annotations.go @@ -85,9 +85,11 @@ func Annotations(l *logrus.Logger) http.HandlerFunc { return } - setCache(id, body) - _, err = w.Write(response) - if err != nil { + if err = setCache(id, body); err != nil { + l.Errorln(err) + } + + if _, err = w.Write(response); err != nil { l.Errorln("Error sending response: ", err) } } diff --git a/handlers/lyrics.go b/handlers/lyrics.go index 3e2ee4b..d0e1c34 100644 --- a/handlers/lyrics.go +++ b/handlers/lyrics.go @@ -57,6 +57,8 @@ func Lyrics(l *logrus.Logger) http.HandlerFunc { s.Parse(doc) views.LyricsPage(s).Render(context.Background(), w) - setCache(id, s) + if err = setCache(id, s); err != nil { + l.Errorln(err) + } } } diff --git a/handlers/proxy.go b/handlers/proxy.go index ea3003d..3f85baa 100644 --- a/handlers/proxy.go +++ b/handlers/proxy.go @@ -53,6 +53,8 @@ func ImageProxy(l *logrus.Logger) http.HandlerFunc { } w.Header().Add("Content-type", fmt.Sprintf("image/%s", ext)) - io.Copy(w, res.Body) + if _, err = io.Copy(w, res.Body); err != nil { + l.Errorln("unable to write image", err) + } } } diff --git a/handlers/search.go b/handlers/search.go index 26265d9..b2a83cd 100644 --- a/handlers/search.go +++ b/handlers/search.go @@ -30,7 +30,11 @@ func Search(l *logrus.Logger) http.HandlerFunc { var sRes data.SearchResponse d := json.NewDecoder(res.Body) - d.Decode(&sRes) + if err = d.Decode(&sRes); err != nil { + l.Errorln(err) + w.WriteHeader(http.StatusInternalServerError) + views.ErrorPage(500, "something went wrong").Render(context.Background(), w) + } results := data.SearchResults{Query: query, Sections: sRes.Response.Sections} From 3b18d79b15ce472a5633449533cf068cb1f922d1 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 19:18:32 +0100 Subject: [PATCH 10/76] fix: improve styling --- static/style.css | 6 ++++-- views/lyrics.templ | 32 ++++++++++++++++++-------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/static/style.css b/static/style.css index 8a9961d..2486873 100644 --- a/static/style.css +++ b/static/style.css @@ -114,9 +114,10 @@ a { display: grid; padding: 5rem 0; grid-template-columns: 24rem 1fr 24rem; - max-width: 1024px; - margin: auto; + width: 1024px; + margin: 0 auto; gap: 4rem; + flex: 1; } #credits { @@ -230,6 +231,7 @@ a { display: flex; flex-direction: column; gap: 3rem; + width: calc(100vw - 4rem);; } #metadata { diff --git a/views/lyrics.templ b/views/lyrics.templ index 3a96454..d03256b 100644 --- a/views/lyrics.templ +++ b/views/lyrics.templ @@ -19,20 +19,24 @@ templ LyricsPage(s data.Song) { @templ.Raw(s.Lyrics)
-
-

About

- -

{ s.About[1] }

-
-
-

Credits

- for key, val := range s.Credits { -
- { key } -

{ val }

-
- } -
+ if s.About[0] != "" { +
+

About

+ +

{ s.About[1] }

+
+ } + if len(s.Credits) > 0 { +
+

Credits

+ for key, val := range s.Credits { +
+ { key } +

{ val }

+
+ } +
+ } if s.Album.Name != "" {

{ s.Album.Name }

From 833a6afd15c4e7fa6e85f422dba4c79f25a9c468 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 19:27:30 +0100 Subject: [PATCH 11/76] chore: update screenshot --- screenshot.png | Bin 237245 -> 411468 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshot.png b/screenshot.png index 675667e24eaace31f74bd7f02908e835cffdda0a..168c657ccff0eeb334c88d7c7fdb0244bc1b2057 100644 GIT binary patch literal 411468 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 +3qA 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

RTm|Xh|qQu=m(q`&4z5M1n6A&8G_Z*#X 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 Date: Mon, 4 Mar 2024 19:49:03 +0100 Subject: [PATCH 12/76] fix images not working on annotations --- handlers/annotations.go | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/handlers/annotations.go b/handlers/annotations.go index 2696c98..a45785a 100644 --- a/handlers/annotations.go +++ b/handlers/annotations.go @@ -20,19 +20,11 @@ func Annotations(l *logrus.Logger) http.HandlerFunc { id := mux.Vars(r)["id"] if data, err := getCache[data.Annotation](id); err == nil { + encoder := json.NewEncoder(w) - response, err := json.Marshal(data) - - if err != nil { - l.Errorf("could not marshal json: %s\n", err) - w.WriteHeader(http.StatusInternalServerError) - views.ErrorPage(500, "something went wrong").Render(context.Background(), w) - return - } w.Header().Set("content-type", "application/json") - _, err = w.Write(response) - if err != nil { - l.Errorln("Error sending response: ", err) + if err = encoder.Encode(&data); err != nil { + l.Errorln(err) } return } @@ -96,7 +88,8 @@ func Annotations(l *logrus.Logger) http.HandlerFunc { } func cleanBody(body string) string { - var withCleanedImageLinks = strings.Replace(body, "https://images.rapgenius.com/", "/images/", -1) + var withCleanedImageLinks = strings.ReplaceAll(body, "https://images.rapgenius.com/", "/images/") + withCleanedImageLinks = strings.ReplaceAll(body, "https://images.genius.com/", "/images/") var re = regexp.MustCompile(`https?:\/\/[a-z]*.?genius.com`) var withCleanedLinks = re.ReplaceAllString(withCleanedImageLinks, "") From 679f34678cc7081fefa7fc25b6da7c2af3b4b367 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 20:43:46 +0100 Subject: [PATCH 13/76] fix cached annotations not displaying --- data/annotation.go | 8 ++++---- handlers/annotations.go | 25 ++++++++++--------------- handlers/cache.go | 6 +++++- static/script.js | 1 + 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/data/annotation.go b/data/annotation.go index 70787bc..9e8bd66 100644 --- a/data/annotation.go +++ b/data/annotation.go @@ -3,13 +3,13 @@ package data type AnnotationsResponse struct { Response struct { Referent struct { - Annotations []Annotation `json:"annotations"` + Annotations []struct { + Body Annotation `json:"body"` + } `json:"annotations"` } `json:"referent"` } `json:"response"` } type Annotation struct { - Body struct { - Html string `json:"html"` - } `json:"body"` + HTML string `json:"html"` } diff --git a/handlers/annotations.go b/handlers/annotations.go index a45785a..ccec630 100644 --- a/handlers/annotations.go +++ b/handlers/annotations.go @@ -18,14 +18,14 @@ import ( func Annotations(l *logrus.Logger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { id := mux.Vars(r)["id"] - - if data, err := getCache[data.Annotation](id); err == nil { + if a, err := getCache[data.Annotation]("annotation:" + id); err == nil { encoder := json.NewEncoder(w) w.Header().Set("content-type", "application/json") - if err = encoder.Encode(&data); err != nil { + if err = encoder.Encode(&a); err != nil { l.Errorln(err) } + return } @@ -65,25 +65,20 @@ func Annotations(l *logrus.Logger) http.HandlerFunc { return } - w.Header().Set("content-type", "application/json") body := data.Response.Referent.Annotations[0].Body - body.Html = cleanBody(body.Html) - response, err := json.Marshal(body) + body.HTML = cleanBody(body.HTML) - if err != nil { - l.Errorf("could not marshal json: %s\n", err) - w.WriteHeader(http.StatusInternalServerError) - views.ErrorPage(500, "something went wrong").Render(context.Background(), w) + w.Header().Set("content-type", "application/json") + encoder := json.NewEncoder(w) + + if err = encoder.Encode(&body); err != nil { + l.Errorln("Error sending response: ", err) return } - if err = setCache(id, body); err != nil { + if err = setCache("annotation:"+id, body); err != nil { l.Errorln(err) } - - if _, err = w.Write(response); err != nil { - l.Errorln("Error sending response: ", err) - } } } diff --git a/handlers/cache.go b/handlers/cache.go index f0d718e..af1d684 100644 --- a/handlers/cache.go +++ b/handlers/cache.go @@ -8,6 +8,10 @@ import ( "github.com/rramiachraf/dumb/data" ) +type cachable interface { + data.Album | data.Song | data.Annotation +} + var c, _ = bigcache.NewBigCache(bigcache.DefaultConfig(time.Hour * 24)) func setCache(key string, entry interface{}) error { @@ -19,7 +23,7 @@ func setCache(key string, entry interface{}) error { return c.Set(key, data) } -func getCache[v data.Album | data.Song | data.Annotation](key string) (v, error) { +func getCache[v cachable](key string) (v, error) { var decoded v data, err := c.Get(key) diff --git a/static/script.js b/static/script.js index 327ae5a..cecad3b 100644 --- a/static/script.js +++ b/static/script.js @@ -14,6 +14,7 @@ document.querySelectorAll("#lyrics a").forEach(item => { function getAnnotation(e) { e.preventDefault() + //document.querySelector('.annotation')?.remove() const uri = e.target.parentElement.getAttribute("href") const presentAnnotation = document.getElementById(uri) if (presentAnnotation) { From ea1a891ef16e22aa25dd44d453f55e6ef353d8e5 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 22:12:22 +0100 Subject: [PATCH 14/76] feat: spoof JA3 fingerprints --- go.mod | 14 +- go.sum | 349 ++++++++++++++++++++++++++++++++++++++++++++++ handlers/utils.go | 31 ++-- 3 files changed, 373 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index 8455ef0..246bd35 100644 --- a/go.mod +++ b/go.mod @@ -14,10 +14,20 @@ require ( ) require ( + github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26 // indirect + github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1 // indirect + github.com/andybalholm/brotli v1.1.0 // indirect github.com/andybalholm/cascadia v1.3.1 // indirect + github.com/cloudflare/circl v1.3.7 // indirect + github.com/gorilla/websocket v1.5.1 // indirect + github.com/klauspost/compress v1.17.6 // indirect + github.com/quic-go/quic-go v0.41.0 // indirect + github.com/refraction-networking/utls v1.6.2 // indirect github.com/robertkrimen/otto v0.2.1 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/sys v0.15.0 // indirect + golang.org/x/crypto v0.19.0 // indirect + golang.org/x/net v0.21.0 // indirect + golang.org/x/sys v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect gopkg.in/sourcemap.v1 v1.0.5 // indirect + h12.io/socks v1.0.3 // indirect ) diff --git a/go.sum b/go.sum index 101c6db..1ad3590 100644 --- a/go.sum +++ b/go.sum @@ -1,70 +1,419 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26 h1:6fexoGmvzoXMSk14BZ0AirapVm5c3KUsEjE0jLlVKi8= +github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26/go.mod h1:QFi/EVO7qqru3Ftxz1LR+96jIc91Tifv0DnskF/gWQ8= +github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1 h1:/lqhaiz7xdPr6kuaW1tQ/8DdpWdxkdyd9W/6EHz4oRw= +github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1/go.mod h1:Hvab/V/YKCDXsEpKYKHjAXH5IFOmoq9FsfxjztEqvDc= github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM= github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ= github.com/a-h/templ v0.2.598 h1:6jMIHv6wQZvdPxTuv87erW4RqN/FPU0wk7ZHN5wVuuo= github.com/a-h/templ v0.2.598/go.mod h1:SA7mtYwVEajbIXFRh3vKdYm/4FYyLQAtPH1+KxzGPA8= github.com/allegro/bigcache/v3 v3.0.2 h1:AKZCw+5eAaVyNTBmI2fgyPVJhHkdWder3O9IrprcQfI= github.com/allegro/bigcache/v3 v3.0.2/go.mod h1:aPyh7jEvrog9zAwx5N7+JUQX5dZTSGpxF1LAR4dr35I= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/caffix/cloudflare-roundtripper v0.0.0-20181218223503-4c29d231c9cb h1:RKySaWkjoE/ECY1FFk4JbcfG9dTrJmoqp08rQ2oA51Y= github.com/caffix/cloudflare-roundtripper v0.0.0-20181218223503-4c29d231c9cb/go.mod h1:LkIRP8n1KY5Ew4Y7S+V7ooavIXNrraFZ1IKmI4SNMuE= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/gaukas/godicttls v0.0.4/go.mod h1:l6EenT4TLWgTdwslVb4sEMOCf7Bv0JAK67deKr9/NCI= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= +github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= +github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= +github.com/onsi/ginkgo/v2 v2.2.0/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= +github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= +github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= +github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= +github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc= +github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk= +github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= +github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= +github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= +github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= +github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= +github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= +github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= +github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= +github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/qtls-go1-20 v0.3.1/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/quic-go v0.37.4/go.mod h1:YsbH1r4mSHPJcLF4k4zruUkLBqctEMBDR6VPvcYjIsU= +github.com/quic-go/quic-go v0.41.0 h1:aD8MmHfgqTURWNJy48IYFg2OnxwHT3JL7ahGs73lb4k= +github.com/quic-go/quic-go v0.41.0/go.mod h1:qCkNjqczPEvgsOnxZ0eCD14lv+B2LHlFAB++CNOh9hA= +github.com/refraction-networking/utls v1.5.4/go.mod h1:SPuDbBmgLGp8s+HLNc83FuavwZCFoMmExj+ltUHiHUw= +github.com/refraction-networking/utls v1.6.2 h1:iTeeGY0o6nMNcGyirxkD5bFIsVctP5InGZ3E0HrzS7k= +github.com/refraction-networking/utls v1.6.2/go.mod h1:yil9+7qSl+gBwJqztoQseO6Pr3h62pQoY1lXiNR/FPs= github.com/robertkrimen/otto v0.2.1 h1:FVP0PJ0AHIjC+N4pKCG9yCDz6LHNPCwi/GKID5pGGF0= github.com/robertkrimen/otto v0.2.1/go.mod h1:UPwtJ1Xu7JrLcZjNWN8orJaM5n5YEtqL//farB5FlRY= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= +github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20221205204356-47842c84f3db/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190313220215-9f648a60d977/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/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/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/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.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.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.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/sourcemap.v1 v1.0.5 h1:inv58fC9f9J3TK2Y2R1NPntXEn3/wjWHkonhIUODNTI= gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= 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= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +h12.io/socks v1.0.3 h1:Ka3qaQewws4j4/eDQnOdpr4wXsC//dXtWvftlIcCQUo= +h12.io/socks v1.0.3/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/handlers/utils.go b/handlers/utils.go index 8eeb669..5873190 100644 --- a/handlers/utils.go +++ b/handlers/utils.go @@ -1,10 +1,12 @@ package handlers import ( - "net" "net/http" "net/url" "time" + + "github.com/Danny-Dasilva/CycleTLS/cycletls" + fhttp "github.com/Danny-Dasilva/fhttp" ) func MustHeaders(next http.Handler) http.Handler { @@ -17,32 +19,23 @@ func MustHeaders(next http.Handler) http.Handler { }) } -const UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" +const UA = "Mozilla/5.0 (Windows NT 10.0; rv:123.0) Gecko/20100101 Firefox/123.0" +const JA3 = "771,4865-4867-4866-49195-49199-52393-52392-49196-49200-49162-49161-49171-49172-156-157-47-53,0-23-65281-10-11-16-5-34-51-43-13-45-28-65037-41,29-23-24-25-256-257,0" -var client = &http.Client{ - Timeout: 20 * time.Second, - Transport: &http.Transport{ - DialContext: (&net.Dialer{ - Timeout: 15 * time.Second, - KeepAlive: 15 * time.Second, - DualStack: true, - }).DialContext, - }, -} - -func sendRequest(u string) (*http.Response, error) { +func sendRequest(u string) (*fhttp.Response, error) { url, err := url.Parse(u) if err != nil { return nil, err } - req := &http.Request{ + client := &fhttp.Client{ + Transport: cycletls.NewTransport(JA3, UA), + Timeout: 20 * time.Second, + } + + req := &fhttp.Request{ Method: http.MethodGet, URL: url, - Header: map[string][]string{ - "Accept-Language": {"en-US"}, - "User-Agent": {UA}, - }, } return client.Do(req) From 287c9a642f4b88a6221bd1cbd6ac8dae3de474fc Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 22:13:19 +0100 Subject: [PATCH 15/76] chore: run go mod tidy --- go.mod | 4 ++-- go.sum | 14 ++++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 246bd35..69e6ca8 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,8 @@ go 1.21 toolchain go1.22.0 require ( + github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26 + github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1 github.com/PuerkitoBio/goquery v1.8.1 github.com/a-h/templ v0.2.598 github.com/allegro/bigcache/v3 v3.0.2 @@ -14,8 +16,6 @@ require ( ) require ( - github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26 // indirect - github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1 // indirect github.com/andybalholm/brotli v1.1.0 // indirect github.com/andybalholm/cascadia v1.3.1 // indirect github.com/cloudflare/circl v1.3.7 // indirect diff --git a/go.sum b/go.sum index 1ad3590..3c264e7 100644 --- a/go.sum +++ b/go.sum @@ -51,8 +51,10 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -85,6 +87,7 @@ github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+u github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= @@ -95,6 +98,7 @@ github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/ github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364 h1:5XxdakFhqd9dnXoAZy1Mb2R/DZ6D1e+0bGC/JhucGYI= github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -121,6 +125,7 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= @@ -134,6 +139,7 @@ github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJ github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk= github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= @@ -148,8 +154,10 @@ github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdM github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw= github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc= github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -268,8 +276,6 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -320,8 +326,6 @@ 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.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -365,6 +369,8 @@ golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 1ade51e46f34ba15e3712fb2533d6e5d39efa281 Mon Sep 17 00:00:00 2001 From: Achraf RRAMI <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 21:39:17 +0000 Subject: [PATCH 16/76] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 08fef1f..8777e48 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # dumb -With the massive daily increase of useless scripts on Genius's web frontend and having to download megabytes of clutter, [dumb](https://github.com/rramiachraf/dumb) tries to make reading lyrics from Genius a pleasant experience and as lightweight as possible. +With the massive daily increase of useless scripts on Genius's web frontend, and having to download megabytes of clutter, [dumb](https://github.com/rramiachraf/dumb) tries to make reading lyrics from Genius a pleasant experience, and as lightweight as possible. @@ -38,7 +38,7 @@ The default port is 5555, you can use other ports by setting the `PORT` environm | --- | --- | | | https://vern.cc | -For people who might be capable and interested in hosting a public instance feel free to do so and don't forget to open a pull request so your instance can be included here. +For people who might be capable and interested in hosting a public instance feel free to do so, and don't forget to open a pull request, so your instance can be included here. ## Contributing Contributions are welcome. From a00b209f5b7732198588559c25df7fc43d45945a Mon Sep 17 00:00:00 2001 From: Achraf RRAMI <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 21:52:24 +0000 Subject: [PATCH 17/76] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6416959..2877d1c 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ The default port is 5555, you can use other ports by setting the `PORT` environm | --- | --- | | | https://vern.cc | +#### Notes: - Instances list in JSON format can be found in [instances.json](instances.json) file. - For people who might be capable and interested in hosting a public instance feel free to do so, and don't forget to open a pull request, so your instance can be included here. From b6a0203e936b8af50d54a325e476e82d796a270a Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 23:34:46 +0100 Subject: [PATCH 18/76] fix annotation image not appearing for the second time --- handlers/annotations.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/handlers/annotations.go b/handlers/annotations.go index ccec630..70dff1d 100644 --- a/handlers/annotations.go +++ b/handlers/annotations.go @@ -7,7 +7,6 @@ import ( "fmt" "net/http" "regexp" - "strings" "github.com/gorilla/mux" "github.com/rramiachraf/dumb/data" @@ -83,11 +82,13 @@ func Annotations(l *logrus.Logger) http.HandlerFunc { } func cleanBody(body string) string { - var withCleanedImageLinks = strings.ReplaceAll(body, "https://images.rapgenius.com/", "/images/") - withCleanedImageLinks = strings.ReplaceAll(body, "https://images.genius.com/", "/images/") + re := regexp.MustCompile(`(?i)https:\/\/images\.(rapgenius|genius)\.com\/`) + clean := re.ReplaceAllString(body, "/images/") - var re = regexp.MustCompile(`https?:\/\/[a-z]*.?genius.com`) - var withCleanedLinks = re.ReplaceAllString(withCleanedImageLinks, "") + re = regexp.MustCompile(`https?:\/\/[a-z]*.?genius.com`) + clean = re.ReplaceAllString(clean, "") - return withCleanedLinks + fmt.Println(clean) + + return clean } From 05d8219679179f6367f33466d23f81c8405c4c71 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Mon, 4 Mar 2024 23:41:01 +0100 Subject: [PATCH 19/76] chore: remove debugging code --- handlers/annotations.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/handlers/annotations.go b/handlers/annotations.go index 70dff1d..33a526c 100644 --- a/handlers/annotations.go +++ b/handlers/annotations.go @@ -88,7 +88,5 @@ func cleanBody(body string) string { re = regexp.MustCompile(`https?:\/\/[a-z]*.?genius.com`) clean = re.ReplaceAllString(clean, "") - fmt.Println(clean) - return clean } From 9b0f8fb96a9f63742bf76a2da1a3aa14de520273 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Tue, 5 Mar 2024 14:44:16 +0100 Subject: [PATCH 20/76] fix annotation overflowing --- static/style.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/style.css b/static/style.css index 2486873..2691ec4 100644 --- a/static/style.css +++ b/static/style.css @@ -113,7 +113,7 @@ a { #container { display: grid; padding: 5rem 0; - grid-template-columns: 24rem 1fr 24rem; + grid-template-columns: 24rem calc(1024px - 56rem) 24rem; width: 1024px; margin: 0 auto; gap: 4rem; From 23b11d2edfae011cf2fff87477e587aa0f81c994 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Tue, 5 Mar 2024 19:47:02 +0100 Subject: [PATCH 21/76] feat: add git commit hash into footer --- Makefile | 4 +++- data/data.go | 3 +++ static/style.css | 50 +++++++++++++++++++++++++++++++--------------- views/footer.templ | 7 ++++++- 4 files changed, 46 insertions(+), 18 deletions(-) create mode 100644 data/data.go diff --git a/Makefile b/Makefile index 009f4d6..18c0e46 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,6 @@ +VERSION=`git rev-parse --short HEAD` + gentempl: @command -v templ &> /dev/null || go install github.com/a-h/templ/cmd/templ@latest build:gentempl - templ generate && go build -o dumb + templ generate && go build -ldflags="-X 'github.com/rramiachraf/dumb/data.Version=$(VERSION)' -s -w" diff --git a/data/data.go b/data/data.go new file mode 100644 index 0000000..48d6f81 --- /dev/null +++ b/data/data.go @@ -0,0 +1,3 @@ +package data + +var Version = "DEVELOPMENT" diff --git a/static/style.css b/static/style.css index 2691ec4..b583791 100644 --- a/static/style.css +++ b/static/style.css @@ -225,24 +225,22 @@ a { color: #333; } -@media screen and (max-width: 900px) { - #container { - padding: 3rem 2rem; - display: flex; - flex-direction: column; - gap: 3rem; - width: calc(100vw - 4rem);; - } - - #metadata { - align-items: center; - } +footer { + background-color: #ffcd38; + padding: 1rem 0; } -footer { - text-align: center; - background-color: #ffcd38; - padding: 1rem; +#footer_container { + width: 1024px; + display: flex; + justify-content: space-between; + align-items: center; + margin: 0 auto; +} + +#version { + font-size: 1.3rem; + color: #1b1b1b; } footer a { @@ -349,6 +347,26 @@ footer a:hover { border-radius: 5px; } +@media screen and (max-width: 1080px) { + #container { + padding: 3rem 2rem; + display: flex; + flex-direction: column; + gap: 3rem; + width: calc(100vw - 4rem);; + } + + #metadata { + align-items: center; + } + + #footer_container { + width: 100%; + padding: 0 2rem; + box-sizing: border-box; + } +} + /* dark mode */ @media (prefers-color-scheme: dark) { body { diff --git a/views/footer.templ b/views/footer.templ index 1701078..57760e0 100644 --- a/views/footer.templ +++ b/views/footer.templ @@ -1,7 +1,12 @@ package views +import "github.com/rramiachraf/dumb/data" + templ footer() {

} From e1b3885680124ef5b0250be6999a7b37c445fd14 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Tue, 5 Mar 2024 22:01:32 +0100 Subject: [PATCH 22/76] feat: improve annotation UI and set iframes into anchor tags --- handlers/annotations.go | 30 +++++++++++++++++++++++++----- static/style.css | 15 +++++++++++++++ 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/handlers/annotations.go b/handlers/annotations.go index 33a526c..252f039 100644 --- a/handlers/annotations.go +++ b/handlers/annotations.go @@ -7,7 +7,9 @@ import ( "fmt" "net/http" "regexp" + "strings" + "github.com/PuerkitoBio/goquery" "github.com/gorilla/mux" "github.com/rramiachraf/dumb/data" "github.com/rramiachraf/dumb/views" @@ -82,11 +84,29 @@ func Annotations(l *logrus.Logger) http.HandlerFunc { } func cleanBody(body string) string { - re := regexp.MustCompile(`(?i)https:\/\/images\.(rapgenius|genius)\.com\/`) - clean := re.ReplaceAllString(body, "/images/") + if doc, err := goquery.NewDocumentFromReader(strings.NewReader(body)); err == nil { + doc.Find("iframe").Each(func(i int, s *goquery.Selection) { + src, exists := s.Attr("src") + if exists { + html := fmt.Sprintf(`Link`, src) + s.ReplaceWithHtml(html) + } + }) - re = regexp.MustCompile(`https?:\/\/[a-z]*.?genius.com`) - clean = re.ReplaceAllString(clean, "") + doc.Find("img").Each(func(i int, s *goquery.Selection) { + src, exists := s.Attr("src") + if exists { + re := regexp.MustCompile(`(?i)https:\/\/images\.(rapgenius|genius)\.com\/`) + pSrc := re.ReplaceAllString(src, "/images/") + s.SetAttr("src", pSrc) + } + }) - return clean + if source, err := doc.Html(); err == nil { + body = source + } + } + + re := regexp.MustCompile(`https?:\/\/[a-z]*.?genius.com`) + return re.ReplaceAllString(body, "") } diff --git a/static/style.css b/static/style.css index b583791..6125f70 100644 --- a/static/style.css +++ b/static/style.css @@ -152,6 +152,12 @@ a { flex-grow: 1; } +.annotation #iframed-link{ + font-weight: 500; + background-color: #ffcd38; + padding: 2px 6px; +} + #credits p { font-size: 1.3rem; padding: 0.5rem; @@ -180,6 +186,10 @@ a { .annotation { padding: 1rem; + border-radius: 4px; + background: #eee; + border: 1px solid #ddd; + color: #222; } .annotation img { @@ -187,6 +197,11 @@ a { height: auto; } +.annotation a { + background: none; + font-weight: 500; +} + .annotation ul { padding-left: 1em; } From 53462a9412e44717b334ff1a59faae8f4789c8f3 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Tue, 5 Mar 2024 22:14:36 +0100 Subject: [PATCH 23/76] chore: update packages to latest versions and update Go requirement to latest LTS --- README.md | 2 +- go.mod | 20 ++++++++++---------- go.sum | 29 +++++++++++++++++++++++------ 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 24de807..fe7a90b 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ With the massive daily increase of useless scripts on Genius's web frontend, and ![Screenshot](https://raw.githubusercontent.com/rramiachraf/dumb/main/screenshot.png) ## Installation & Usage -[Go 1.18+](https://go.dev/dl) is required. +[Go 1.20+](https://go.dev/dl) is required. ```bash git clone https://github.com/rramiachraf/dumb cd dumb diff --git a/go.mod b/go.mod index 69e6ca8..0454c2d 100644 --- a/go.mod +++ b/go.mod @@ -7,26 +7,26 @@ toolchain go1.22.0 require ( github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26 github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1 - github.com/PuerkitoBio/goquery v1.8.1 + github.com/PuerkitoBio/goquery v1.9.1 github.com/a-h/templ v0.2.598 - github.com/allegro/bigcache/v3 v3.0.2 + github.com/allegro/bigcache/v3 v3.1.0 github.com/caffix/cloudflare-roundtripper v0.0.0-20181218223503-4c29d231c9cb - github.com/gorilla/mux v1.8.0 + github.com/gorilla/mux v1.8.1 github.com/sirupsen/logrus v1.9.3 ) require ( github.com/andybalholm/brotli v1.1.0 // indirect - github.com/andybalholm/cascadia v1.3.1 // indirect + github.com/andybalholm/cascadia v1.3.2 // indirect github.com/cloudflare/circl v1.3.7 // indirect github.com/gorilla/websocket v1.5.1 // indirect - github.com/klauspost/compress v1.17.6 // indirect + github.com/klauspost/compress v1.17.7 // indirect github.com/quic-go/quic-go v0.41.0 // indirect - github.com/refraction-networking/utls v1.6.2 // indirect - github.com/robertkrimen/otto v0.2.1 // indirect - golang.org/x/crypto v0.19.0 // indirect - golang.org/x/net v0.21.0 // indirect - golang.org/x/sys v0.17.0 // indirect + github.com/refraction-networking/utls v1.6.3 // indirect + github.com/robertkrimen/otto v0.3.0 // indirect + golang.org/x/crypto v0.21.0 // indirect + golang.org/x/net v0.22.0 // indirect + golang.org/x/sys v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect gopkg.in/sourcemap.v1 v1.0.5 // indirect h12.io/socks v1.0.3 // indirect diff --git a/go.sum b/go.sum index 3c264e7..8e6bd25 100644 --- a/go.sum +++ b/go.sum @@ -14,15 +14,21 @@ github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1 h1:/lqhaiz7xdP github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1/go.mod h1:Hvab/V/YKCDXsEpKYKHjAXH5IFOmoq9FsfxjztEqvDc= github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM= github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ= +github.com/PuerkitoBio/goquery v1.9.1 h1:mTL6XjbJTZdpfL+Gwl5U2h1l9yEkJjhmlTeV9VPW7UI= +github.com/PuerkitoBio/goquery v1.9.1/go.mod h1:cW1n6TmIMDoORQU5IU/P1T3tGFunOeXEpGP2WHRwkbY= github.com/a-h/templ v0.2.598 h1:6jMIHv6wQZvdPxTuv87erW4RqN/FPU0wk7ZHN5wVuuo= github.com/a-h/templ v0.2.598/go.mod h1:SA7mtYwVEajbIXFRh3vKdYm/4FYyLQAtPH1+KxzGPA8= github.com/allegro/bigcache/v3 v3.0.2 h1:AKZCw+5eAaVyNTBmI2fgyPVJhHkdWder3O9IrprcQfI= github.com/allegro/bigcache/v3 v3.0.2/go.mod h1:aPyh7jEvrog9zAwx5N7+JUQX5dZTSGpxF1LAR4dr35I= +github.com/allegro/bigcache/v3 v3.1.0 h1:H2Vp8VOvxcrB91o86fUSVJFqeuz8kpyyB02eH3bSzwk= +github.com/allegro/bigcache/v3 v3.1.0/go.mod h1:aPyh7jEvrog9zAwx5N7+JUQX5dZTSGpxF1LAR4dr35I= github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= +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/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= @@ -94,6 +100,8 @@ github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE0 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= @@ -109,6 +117,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= +github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -174,8 +184,12 @@ github.com/quic-go/quic-go v0.41.0/go.mod h1:qCkNjqczPEvgsOnxZ0eCD14lv+B2LHlFAB+ github.com/refraction-networking/utls v1.5.4/go.mod h1:SPuDbBmgLGp8s+HLNc83FuavwZCFoMmExj+ltUHiHUw= github.com/refraction-networking/utls v1.6.2 h1:iTeeGY0o6nMNcGyirxkD5bFIsVctP5InGZ3E0HrzS7k= github.com/refraction-networking/utls v1.6.2/go.mod h1:yil9+7qSl+gBwJqztoQseO6Pr3h62pQoY1lXiNR/FPs= +github.com/refraction-networking/utls v1.6.3 h1:MFOfRN35sSx6K5AZNIoESsBuBxS2LCgRilRIdHb6fDc= +github.com/refraction-networking/utls v1.6.3/go.mod h1:yil9+7qSl+gBwJqztoQseO6Pr3h62pQoY1lXiNR/FPs= github.com/robertkrimen/otto v0.2.1 h1:FVP0PJ0AHIjC+N4pKCG9yCDz6LHNPCwi/GKID5pGGF0= github.com/robertkrimen/otto v0.2.1/go.mod h1:UPwtJ1Xu7JrLcZjNWN8orJaM5n5YEtqL//farB5FlRY= +github.com/robertkrimen/otto v0.3.0 h1:5RI+8860NSxvXywDY9ddF5HcPw0puRsd8EgbXV0oqRE= +github.com/robertkrimen/otto v0.3.0/go.mod h1:uW9yN1CYflmUQYvAMS0m+ZiNo3dMzRUDQJX0jWbzgxw= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= @@ -231,8 +245,8 @@ golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20221205204356-47842c84f3db/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -274,10 +288,11 @@ golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= +golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -324,10 +339,11 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/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.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= +golang.org/x/sys v0.18.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.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -336,6 +352,7 @@ golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 6d6ffa16ff145c28df268670170d6a9c2f336a7b Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 6 Mar 2024 12:01:04 +0100 Subject: [PATCH 24/76] feat: add instances handler --- Makefile | 2 ++ handlers/cache.go | 5 ++-- handlers/instances.go | 56 +++++++++++++++++++++++++++++++++++++++++++ main.go | 1 + static/style.css | 7 +++++- views/footer.templ | 7 ++++-- 6 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 handlers/instances.go diff --git a/Makefile b/Makefile index 18c0e46..73839ca 100644 --- a/Makefile +++ b/Makefile @@ -4,3 +4,5 @@ gentempl: @command -v templ &> /dev/null || go install github.com/a-h/templ/cmd/templ@latest build:gentempl templ generate && go build -ldflags="-X 'github.com/rramiachraf/dumb/data.Version=$(VERSION)' -s -w" +fmt: + templ fmt . diff --git a/handlers/cache.go b/handlers/cache.go index af1d684..4874057 100644 --- a/handlers/cache.go +++ b/handlers/cache.go @@ -1,6 +1,7 @@ package handlers import ( + "context" "encoding/json" "time" @@ -9,10 +10,10 @@ import ( ) type cachable interface { - data.Album | data.Song | data.Annotation + data.Album | data.Song | data.Annotation | []byte } -var c, _ = bigcache.NewBigCache(bigcache.DefaultConfig(time.Hour * 24)) +var c, _ = bigcache.New(context.Background(), bigcache.DefaultConfig(time.Hour*24)) func setCache(key string, entry interface{}) error { data, err := json.Marshal(&entry) diff --git a/handlers/instances.go b/handlers/instances.go new file mode 100644 index 0000000..8df70ec --- /dev/null +++ b/handlers/instances.go @@ -0,0 +1,56 @@ +package handlers + +import ( + "context" + "io" + "net/http" + + "github.com/rramiachraf/dumb/views" + "github.com/sirupsen/logrus" +) + +const ContentTypeJSON = "application/json" + +// TODO: move this to utils, so it can be used by other handlers. +func sendError(err error, status int, msg string, l *logrus.Logger, w http.ResponseWriter) { + l.Errorln(err) + w.WriteHeader(status) + if err := views.ErrorPage(status, msg).Render(context.Background(), w); err != nil { + l.Errorln(err) + } +} + +func Instances(l *logrus.Logger) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + if instances, err := getCache[[]byte]("instances"); err == nil { + w.Header().Set("content-type", ContentTypeJSON) + _, err = w.Write(instances) + if err == nil { + return + } + } + + res, err := sendRequest("https://raw.githubusercontent.com/rramiachraf/dumb/main/instances.json") + if err != nil { + sendError(err, http.StatusInternalServerError, "something went wrong", l, w) + return + } + + defer res.Body.Close() + + instances, err := io.ReadAll(res.Body) + if err != nil { + sendError(err, http.StatusInternalServerError, "something went wrong", l, w) + return + } + + w.Header().Set("content-type", ContentTypeJSON) + if _, err = w.Write(instances); err != nil { + l.Errorln(err) + } + + if err = setCache("instances", instances); err != nil { + l.Errorln(err) + } + } +} diff --git a/main.go b/main.go index 39c9c21..67d06e9 100644 --- a/main.go +++ b/main.go @@ -29,6 +29,7 @@ func main() { r.HandleFunc("/images/{filename}.{ext}", handlers.ImageProxy(logger)).Methods("GET") r.HandleFunc("/search", handlers.Search(logger)).Methods("GET") r.HandleFunc("/{id}/{artist-song}/{verse}/annotations", handlers.Annotations(logger)).Methods("GET") + r.HandleFunc("/instances.json", handlers.Instances(logger)).Methods("GET") r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) r.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusNotFound) diff --git a/static/style.css b/static/style.css index 6125f70..74e5968 100644 --- a/static/style.css +++ b/static/style.css @@ -245,7 +245,7 @@ footer { padding: 1rem 0; } -#footer_container { +#footer-container { width: 1024px; display: flex; justify-content: space-between; @@ -253,6 +253,11 @@ footer { margin: 0 auto; } +#footer-links { + display: flex; + gap: 1rem; +} + #version { font-size: 1.3rem; color: #1b1b1b; diff --git a/views/footer.templ b/views/footer.templ index 57760e0..0aee5da 100644 --- a/views/footer.templ +++ b/views/footer.templ @@ -4,8 +4,11 @@ import "github.com/rramiachraf/dumb/data" templ footer() { From edc2b04198617f1beac3f7527ef968c1d4a4e6ca Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 6 Mar 2024 12:08:01 +0100 Subject: [PATCH 25/76] feat: add caching into image proxy --- handlers/proxy.go | 1 + 1 file changed, 1 insertion(+) diff --git a/handlers/proxy.go b/handlers/proxy.go index 3f85baa..420b79c 100644 --- a/handlers/proxy.go +++ b/handlers/proxy.go @@ -53,6 +53,7 @@ func ImageProxy(l *logrus.Logger) http.HandlerFunc { } w.Header().Add("Content-type", fmt.Sprintf("image/%s", ext)) + w.Header().Add("Cache-Control", "max-age=1296000") if _, err = io.Copy(w, res.Body); err != nil { l.Errorln("unable to write image", err) } From c8747c0182b6281657e9b536db811c27f99a7cbf Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 6 Mar 2024 17:32:10 +0100 Subject: [PATCH 26/76] refactor: add esbuild and modulerize css into seperate files --- .gitignore | 2 + Makefile | 10 +- static/style.css | 460 ------------------------------------------- style/album.css | 14 ++ style/annotation.css | 34 ++++ style/error.css | 31 +++ style/footer.css | 48 +++++ style/home.css | 52 +++++ style/layout.css | 30 +++ style/lyrics.css | 135 +++++++++++++ style/main.css | 64 ++++++ style/navbar.css | 17 ++ style/search.css | 114 +++++++++++ 13 files changed, 548 insertions(+), 463 deletions(-) delete mode 100644 static/style.css create mode 100644 style/album.css create mode 100644 style/annotation.css create mode 100644 style/error.css create mode 100644 style/footer.css create mode 100644 style/home.css create mode 100644 style/layout.css create mode 100644 style/lyrics.css create mode 100644 style/main.css create mode 100644 style/navbar.css create mode 100644 style/search.css diff --git a/.gitignore b/.gitignore index 8373007..10a5ccb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ dumb views/*_templ.go +esbuild +static/*.css diff --git a/Makefile b/Makefile index 73839ca..20a1806 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,12 @@ VERSION=`git rev-parse --short HEAD` gentempl: - @command -v templ &> /dev/null || go install github.com/a-h/templ/cmd/templ@latest -build:gentempl - templ generate && go build -ldflags="-X 'github.com/rramiachraf/dumb/data.Version=$(VERSION)' -s -w" + command -v templ &> /dev/null || go install github.com/a-h/templ/cmd/templ@latest +esbuild: + [ ! -f ./esbuild ] && curl -fsSL https://esbuild.github.io/dl/latest | sh +build:gentempl esbuild + templ generate + cat ./style/*.css | ./esbuild --loader=css --minify > ./static/style.css + go build -ldflags="-X 'github.com/rramiachraf/dumb/data.Version=$(VERSION)' -s -w" fmt: templ fmt . diff --git a/static/style.css b/static/style.css deleted file mode 100644 index 74e5968..0000000 --- a/static/style.css +++ /dev/null @@ -1,460 +0,0 @@ -/* inter-regular - cyrillic_greek_latin_vietnamese */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Inter'; - font-style: normal; - font-weight: 400; - src: url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-regular.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ - url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-regular.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} - -/* inter-500 - cyrillic_greek_latin_vietnamese */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Inter'; - font-style: normal; - font-weight: 500; - src: url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-500.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ - url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-500.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} - -/* inter-700 - cyrillic_greek_latin_vietnamese */ -@font-face { - font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ - font-family: 'Inter'; - font-style: normal; - font-weight: 700; - src: url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-700.woff2') format('woff2'), /* Chrome 36+, Opera 23+, Firefox 39+ */ - url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-700.woff') format('woff'); /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} - -* { - margin: 0; - padding: 0; -} - -html { - font-size: 62.5%; -} - -body { - font-size: 1.5rem; - font-family: inter; - background-color: #f9f9f9; -} - -#lyrics { - color: #171717; - line-height: 2.5rem; - flex-basis: 0; - flex-shrink: 0; - flex-grow: 1; -} - -#lyrics a { - color: inherit; -} - -#lyrics a, .annotation { - background-color: #ddd; - color: inherit; -} - -#lyrics a:hover { - background-color: #ccc; -} - -nav { - background-color: #ffcd38; - display: flex; - align-items: center; - justify-content: center; - padding: 0.5rem; -} - -nav img { - width: 50px; -} - -a { - text-decoration: none; -} - -#metadata { - display: flex; - flex-direction: column; - gap: 2rem; - flex-basis: 0; -} - -#metadata h1 { - font-size: 2rem; - color: #171717; -} - -#metadata h2 { - font-size: 1.4rem; - color: #1e1e1e; - font-weight: 500; -} - -#metadata-info { - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -#album-artwork { - width: 24rem; - border-radius: 3px; - box-shadow: 0 1px 1px #ddd; -} - -#container { - display: grid; - padding: 5rem 0; - grid-template-columns: 24rem calc(1024px - 56rem) 24rem; - width: 1024px; - margin: 0 auto; - gap: 4rem; - flex: 1; -} - -#credits { - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -#title { - font-size: 2rem; - color: #1b1a17; -} - -#credits summary { - font-size: 1.4rem; - cursor: pointer; - color: #1e1e1e; -} - -#lyrics-album-container { - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -#album-tracklist{ - display: flex; - flex-direction: column; - gap: 1rem; - flex-basis: 0; - flex-shrink: 0; - flex-grow: 1; -} - -.annotation #iframed-link{ - font-weight: 500; - background-color: #ffcd38; - padding: 2px 6px; -} - -#credits p { - font-size: 1.3rem; - padding: 0.5rem; - color: #171717; -} - -#info { - display: flex; - flex-direction: column; - gap: 2rem; - flex-basis: 0; -} - -#about { - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -#about p { - font-size: 1.4rem; - color: #171717; - line-height: 1.8rem; - cursor: pointer; -} - -.annotation { - padding: 1rem; - border-radius: 4px; - background: #eee; - border: 1px solid #ddd; - color: #222; -} - -.annotation img { - max-width: 100%; - height: auto; -} - -.annotation a { - background: none; - font-weight: 500; -} - -.annotation ul { - padding-left: 1em; -} - -.hidden { - display: none; -} - -#home { - display: flex; - flex-direction: column; - gap: 1.5rem; - align-items: center; - padding: 2rem; - flex-grow: 1; -} - -#home div { - text-align: center; -} - -#home h1 { - font-weight: 600; - font-size: 2.2rem; - color: #222; -} - -#home p { - color: #333; -} - -#home code { - background-color: #eee; - padding: 0.3rem 1rem; - border-radius: 0.5rem; - color: #333; -} - -footer { - background-color: #ffcd38; - padding: 1rem 0; -} - -#footer-container { - width: 1024px; - display: flex; - justify-content: space-between; - align-items: center; - margin: 0 auto; -} - -#footer-links { - display: flex; - gap: 1rem; -} - -#version { - font-size: 1.3rem; - color: #1b1b1b; -} - -footer a { - font-weight: 500; - color: #1b1a17; - transition: 0.3s ease text-decoration; - font-size: 1.4rem; - text-transform: uppercase; -} - -footer a:hover { - text-decoration: underline; -} - -#app { - display: flex; - flex-direction: column; - min-height: 100vh; -} - -#error { - display: flex; - flex-direction: column; - gap: 1rem; - align-items: center; - justify-content: center; - padding: 2rem; - flex-grow: 1; -} - -#error h1 { - font-size: 5rem; - color: #111; -} - -#error p { - text-transform: uppercase; - font-size: 1.6rem; - color: #222; - text-align: center; -} - -.main { - flex-grow: 1; -} - -#search-page { - display: flex; - flex-direction: column; - gap: 3rem; - padding: 2rem 1rem; -} - -@media screen and (min-width: 800px) { - #search-page { - width: 80rem; - margin: 0 auto; - } -} - -#search-input { - width: 100%; - padding: 1rem 2rem; - box-sizing: border-box; - border-radius: 5px; - border: 1px solid #ddd; - color: #222; -} - -#search-results { - display: flex; - flex-direction: column; - gap: 1rem; -} - -#search-results h1 { - text-align:center; - color: #111; - font-size: 2.5rem; -} - -#search-item { - display: flex; - height: 8rem; - border: 1px solid #eee; - border-radius: 5px; - gap: 1rem; - padding: 1rem; - box-shadow: 0 1px 1px #ddd; -} - -#search-item h2 { - font-size: 1.8rem; - color: #222; -} - -#search-item span { - font-size: 1.3rem; - color: #333; -} - -#search-item img { - width: 8rem; - border-radius: 5px; -} - -@media screen and (max-width: 1080px) { - #container { - padding: 3rem 2rem; - display: flex; - flex-direction: column; - gap: 3rem; - width: calc(100vw - 4rem);; - } - - #metadata { - align-items: center; - } - - #footer_container { - width: 100%; - padding: 0 2rem; - box-sizing: border-box; - } -} - -/* dark mode */ -@media (prefers-color-scheme: dark) { - body { - background-color: #181d31; - } - - nav, - footer { - background-color: #fec260; - } - - #lyrics { - color: #ccc; - } - - #lyrics a, .annotation { - background-color: #272d44; - color: inherit; - } - - - #lyrics a:hover { - background-color: #32384f; - } - - #metadata h1 { - color: #ddd; - } - - #metadata h2, - #credits p { - color: #eee; - } - - #title { - color: #ddd; - } - - #about p, - #credits summary { - color: #ccc; - } - - #home h1, #error h1 { - color: #eee; - } - - #home p, #error p{ - color: #ddd; - } - - #search-input { - background-color: #ddd; - } - - #search-page h1 { - color: #eee; - } - - #search-item { - border: 1px solid #888; - } - - #search-item h2 { - color: #ddd; - } - - #search-item span { - color: #bbb; - } -} diff --git a/style/album.css b/style/album.css new file mode 100644 index 0000000..59335b3 --- /dev/null +++ b/style/album.css @@ -0,0 +1,14 @@ +#album-artwork { + width: 24rem; + border-radius: 3px; + box-shadow: 0 1px 1px #ddd; +} + +#album-tracklist { + display: flex; + flex-direction: column; + gap: 1rem; + flex-basis: 0; + flex-shrink: 0; + flex-grow: 1; +} diff --git a/style/annotation.css b/style/annotation.css new file mode 100644 index 0000000..ee9ed07 --- /dev/null +++ b/style/annotation.css @@ -0,0 +1,34 @@ +.annotation #iframed-link { + font-weight: 500; + background-color: #ffcd38; + padding: 2px 6px; +} + +.annotation { + padding: 1rem; + border-radius: 4px; + background: #eee; + border: 1px solid #ddd; + color: #222; +} + +.annotation img { + max-width: 100%; + height: auto; +} + +.annotation a { + background: none; + font-weight: 500; +} + +.annotation ul { + padding-left: 1em; +} + +@media (prefers-color-scheme: dark) { + .annotation { + background-color: #272d44; + color: inherit; + } +} diff --git a/style/error.css b/style/error.css new file mode 100644 index 0000000..6036ede --- /dev/null +++ b/style/error.css @@ -0,0 +1,31 @@ +#error { + display: flex; + flex-direction: column; + gap: 1rem; + align-items: center; + justify-content: center; + padding: 2rem; + flex-grow: 1; +} + +#error h1 { + font-size: 5rem; + color: #111; +} + +#error p { + text-transform: uppercase; + font-size: 1.6rem; + color: #222; + text-align: center; +} + +@media (prefers-color-scheme: dark) { + #error h1 { + color: #eee; + } + + #error p { + color: #ddd; + } +} diff --git a/style/footer.css b/style/footer.css new file mode 100644 index 0000000..2a7e073 --- /dev/null +++ b/style/footer.css @@ -0,0 +1,48 @@ +footer { + background-color: #ffcd38; + padding: 1rem 0; +} + +footer a { + font-weight: 500; + color: #1b1a17; + transition: 0.3s ease text-decoration; + font-size: 1.4rem; + text-transform: uppercase; +} + +footer a:hover { + text-decoration: underline; +} + +#footer-container { + width: 1024px; + display: flex; + justify-content: space-between; + align-items: center; + margin: 0 auto; +} + +#footer-links { + display: flex; + gap: 1rem; +} + +#version { + font-size: 1.3rem; + color: #1b1b1b; +} + +@media screen and (max-width: 1080px) { + #footer_container { + width: 100%; + padding: 0 2rem; + box-sizing: border-box; + } +} + +@media (prefers-color-scheme: dark) { + footer { + background-color: #fec260; + } +} diff --git a/style/home.css b/style/home.css new file mode 100644 index 0000000..fdd34bf --- /dev/null +++ b/style/home.css @@ -0,0 +1,52 @@ +#home { + display: flex; + flex-direction: column; + gap: 1.5rem; + align-items: center; + padding: 2rem; + flex-grow: 1; +} + +#home div { + text-align: center; +} + +#home h1 { + font-weight: 600; + font-size: 2.2rem; + color: #222; +} + +#home p { + color: #333; +} + +#home code { + background-color: #eee; + padding: 0.3rem 1rem; + border-radius: 0.5rem; + color: #333; +} + +#search-input { + width: 100%; + padding: 1rem 2rem; + box-sizing: border-box; + border-radius: 5px; + border: 1px solid #ddd; + color: #222; +} + +@media (prefers-color-scheme: dark) { + #home h1 { + color: #eee; + } + + #home p { + color: #ddd; + } + + #search-input { + background-color: #ddd; + } +} diff --git a/style/layout.css b/style/layout.css new file mode 100644 index 0000000..3fef342 --- /dev/null +++ b/style/layout.css @@ -0,0 +1,30 @@ +#app { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +#container { + display: grid; + padding: 5rem 0; + grid-template-columns: 24rem calc(1024px - 56rem) 24rem; + width: 1024px; + margin: 0 auto; + gap: 4rem; + flex: 1; +} + +.main { + flex-grow: 1; +} + +@media screen and (max-width: 1080px) { + #container { + padding: 3rem 2rem; + display: flex; + flex-direction: column; + gap: 3rem; + width: calc(100vw - 4rem); + ; + } +} diff --git a/style/lyrics.css b/style/lyrics.css new file mode 100644 index 0000000..25cec9d --- /dev/null +++ b/style/lyrics.css @@ -0,0 +1,135 @@ +#lyrics { + color: #171717; + line-height: 2.5rem; + flex-basis: 0; + flex-shrink: 0; + flex-grow: 1; +} + +#lyrics a { + color: inherit; + background-color: #ddd; + color: inherit; +} + +#lyrics a:hover { + background-color: #ccc; +} + +#metadata { + display: flex; + flex-direction: column; + gap: 2rem; + flex-basis: 0; +} + +#metadata h1 { + font-size: 2rem; + color: #171717; +} + +#metadata h2 { + font-size: 1.4rem; + color: #1e1e1e; + font-weight: 500; +} + +#metadata-info { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +#info { + display: flex; + flex-direction: column; + gap: 2rem; + flex-basis: 0; +} + +#about { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +#about p { + font-size: 1.4rem; + color: #171717; + line-height: 1.8rem; + cursor: pointer; +} + +#title { + font-size: 2rem; + color: #1b1a17; +} + + +#lyrics-album-container { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +#credits { + display: flex; + flex-direction: column; + gap: 0.5rem; +} + + +#credits summary { + font-size: 1.4rem; + cursor: pointer; + color: #1e1e1e; +} + +#credits p { + font-size: 1.3rem; + padding: 0.5rem; + color: #171717; +} + +.hidden { + display: none; +} + +@media screen and (max-width: 1080px) { + #metadata { + align-items: center; + } +} + +@media (prefers-color-scheme: dark) { + #lyrics { + color: #ccc; + } + + #lyrics a { + background-color: #272d44; + color: inherit; + } + + #lyrics a:hover { + background-color: #32384f; + } + + #metadata h1 { + color: #ddd; + } + + #metadata h2, + #credits p { + color: #eee; + } + + #title { + color: #ddd; + } + + #about p, + #credits summary { + color: #ccc; + } +} diff --git a/style/main.css b/style/main.css new file mode 100644 index 0000000..a9d1a6c --- /dev/null +++ b/style/main.css @@ -0,0 +1,64 @@ +/* inter-regular - cyrillic_greek_latin_vietnamese */ +@font-face { + font-display: swap; + /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Inter'; + font-style: normal; + font-weight: 400; + src: url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-regular.woff2') format('woff2'), + /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-regular.woff') format('woff'); + /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* inter-500 - cyrillic_greek_latin_vietnamese */ +@font-face { + font-display: swap; + /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Inter'; + font-style: normal; + font-weight: 500; + src: url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-500.woff2') format('woff2'), + /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-500.woff') format('woff'); + /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +/* inter-700 - cyrillic_greek_latin_vietnamese */ +@font-face { + font-display: swap; + /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Inter'; + font-style: normal; + font-weight: 700; + src: url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-700.woff2') format('woff2'), + /* Chrome 36+, Opera 23+, Firefox 39+ */ + url('/static/fonts/inter-v12-cyrillic_greek_latin_vietnamese-700.woff') format('woff'); + /* Chrome 5+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +* { + margin: 0; + padding: 0; +} + +html { + font-size: 62.5%; +} + +body { + font-size: 1.5rem; + font-family: inter; + background-color: #f9f9f9; +} + + +a { + text-decoration: none; +} + +@media (prefers-color-scheme: dark) { + body { + background-color: #181d31; + } +} diff --git a/style/navbar.css b/style/navbar.css new file mode 100644 index 0000000..c4f3f5c --- /dev/null +++ b/style/navbar.css @@ -0,0 +1,17 @@ +nav { + background-color: #ffcd38; + display: flex; + align-items: center; + justify-content: center; + padding: 0.5rem; +} + +nav img { + width: 50px; +} + +@media (prefers-color-scheme: dark) { + nav { + background-color: #fec260; + } +} diff --git a/style/search.css b/style/search.css new file mode 100644 index 0000000..4764891 --- /dev/null +++ b/style/search.css @@ -0,0 +1,114 @@ +#search-page { + display: flex; + flex-direction: column; + gap: 3rem; + padding: 2rem 1rem; +} + +@media screen and (min-width: 800px) { + #search-page { + width: 80rem; + margin: 0 auto; + } +} + +#search-results { + display: flex; + flex-direction: column; + gap: 1rem; +} + +#search-results h1 { + text-align: center; + color: #111; + font-size: 2.5rem; +} + +#search-item { + display: flex; + height: 8rem; + border: 1px solid #eee; + border-radius: 5px; + gap: 1rem; + padding: 1rem; + box-shadow: 0 1px 1px #ddd; +} + +#search-item h2 { + font-size: 1.8rem; + color: #222; +} + +#search-item span { + font-size: 1.3rem; + color: #333; +} + +#search-item img { + width: 8rem; + border-radius: 5px; +} + +#search-input { + width: 100%; + padding: 1rem 2rem; + box-sizing: border-box; + border-radius: 5px; + border: 1px solid #ddd; + color: #222; +} + +#search-results { + display: flex; + flex-direction: column; + gap: 1rem; +} + +#search-results h1 { + text-align: center; + color: #111; + font-size: 2.5rem; +} + +#search-item { + display: flex; + height: 8rem; + border: 1px solid #eee; + border-radius: 5px; + gap: 1rem; + padding: 1rem; + box-shadow: 0 1px 1px #ddd; +} + +#search-item h2 { + font-size: 1.8rem; + color: #222; +} + +#search-item span { + font-size: 1.3rem; + color: #333; +} + +#search-item img { + width: 8rem; + border-radius: 5px; +} + +@media (prefers-color-scheme: dark) { + #search-page h1 { + color: #eee; + } + + #search-item { + border: 1px solid #888; + } + + #search-item h2 { + color: #ddd; + } + + #search-item span { + color: #bbb; + } +} From afc0347a1b25edee7dfcaf466eee8964eaa7c71c Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 6 Mar 2024 20:53:29 +0100 Subject: [PATCH 27/76] test: add unit tests --- .github/workflows/test.yml | 18 +++++++++++++++ Makefile | 2 ++ handlers/album.go | 2 +- handlers/album_test.go | 39 +++++++++++++++++++++++++++++++ handlers/annotations.go | 2 +- handlers/annotations_test.go | 38 ++++++++++++++++++++++++++++++ handlers/cache_test.go | 25 ++++++++++++++++++++ handlers/handler.go | 32 +++++++++++++++++++++++++ handlers/instances.go | 2 +- handlers/instances_test.go | 40 ++++++++++++++++++++++++++++++++ handlers/lyrics.go | 2 +- handlers/lyrics_test.go | 45 ++++++++++++++++++++++++++++++++++++ handlers/proxy.go | 5 ++-- handlers/proxy_test.go | 38 ++++++++++++++++++++++++++++++ handlers/search.go | 2 +- handlers/search_test.go | 38 ++++++++++++++++++++++++++++++ handlers/utils.go | 2 +- handlers/utils_test.go | 32 +++++++++++++++++++++++++ main.go | 25 ++------------------ 19 files changed, 358 insertions(+), 31 deletions(-) create mode 100644 .github/workflows/test.yml create mode 100644 handlers/album_test.go create mode 100644 handlers/annotations_test.go create mode 100644 handlers/cache_test.go create mode 100644 handlers/handler.go create mode 100644 handlers/instances_test.go create mode 100644 handlers/lyrics_test.go create mode 100644 handlers/proxy_test.go create mode 100644 handlers/search_test.go create mode 100644 handlers/utils_test.go diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..0775980 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,18 @@ +name: Test and Build +on: + push: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 + - name: Install dependencies + run: go get . + - name: Build + run: make build + - name: Test + run: make test diff --git a/Makefile b/Makefile index 20a1806..982ee8e 100644 --- a/Makefile +++ b/Makefile @@ -8,5 +8,7 @@ build:gentempl esbuild templ generate cat ./style/*.css | ./esbuild --loader=css --minify > ./static/style.css go build -ldflags="-X 'github.com/rramiachraf/dumb/data.Version=$(VERSION)' -s -w" +test: + go test ./... -v fmt: templ fmt . diff --git a/handlers/album.go b/handlers/album.go index e9aa8bc..684ec33 100644 --- a/handlers/album.go +++ b/handlers/album.go @@ -12,7 +12,7 @@ import ( "github.com/sirupsen/logrus" ) -func Album(l *logrus.Logger) http.HandlerFunc { +func album(l *logrus.Logger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { artist := mux.Vars(r)["artist"] albumName := mux.Vars(r)["albumName"] diff --git a/handlers/album_test.go b/handlers/album_test.go new file mode 100644 index 0000000..55a84fd --- /dev/null +++ b/handlers/album_test.go @@ -0,0 +1,39 @@ +package handlers + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/PuerkitoBio/goquery" + "github.com/sirupsen/logrus" +) + +func TestAlbum(t *testing.T) { + url := "/albums/Daft-punk/Random-access-memories" + title := "Give Life Back to Music" + + r, err := http.NewRequest(http.MethodGet, url, nil) + if err != nil { + t.Fatal(err) + } + + rr := httptest.NewRecorder() + l := logrus.New() + m := New(l) + + m.ServeHTTP(rr, r) + + defer rr.Result().Body.Close() + + doc, err := goquery.NewDocumentFromReader(rr.Result().Body) + if err != nil { + t.Fatal(err) + } + + docTitle := doc.Find("#album-tracklist > a > p").First().Text() + + if docTitle != title { + t.Fatalf("expected %q, got %q\n", title, docTitle) + } +} diff --git a/handlers/annotations.go b/handlers/annotations.go index 252f039..8033506 100644 --- a/handlers/annotations.go +++ b/handlers/annotations.go @@ -16,7 +16,7 @@ import ( "github.com/sirupsen/logrus" ) -func Annotations(l *logrus.Logger) http.HandlerFunc { +func annotations(l *logrus.Logger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { id := mux.Vars(r)["id"] if a, err := getCache[data.Annotation]("annotation:" + id); err == nil { diff --git a/handlers/annotations_test.go b/handlers/annotations_test.go new file mode 100644 index 0000000..c7a4c19 --- /dev/null +++ b/handlers/annotations_test.go @@ -0,0 +1,38 @@ +package handlers + +import ( + "encoding/json" + "net/http" + "net/http/httptest" + "testing" + + "github.com/sirupsen/logrus" +) + +func TestAnnotations(t *testing.T) { + url := "/61590/Black-star-respiration/The-new-moon-rode-high-in-the-crown-of-the-metropolis/annotations" + + r, err := http.NewRequest(http.MethodGet, url, nil) + if err != nil { + t.Fatal(err) + } + + rr := httptest.NewRecorder() + l := logrus.New() + m := New(l) + + m.ServeHTTP(rr, r) + + defer rr.Result().Body.Close() + + decoder := json.NewDecoder(rr.Result().Body) + annotation := map[string]string{} + + if err := decoder.Decode(&annotation); err != nil { + t.Fatal(err) + } + + if _, exists := annotation["html"]; !exists { + t.Fatalf("html field not found on annotation\n") + } +} diff --git a/handlers/cache_test.go b/handlers/cache_test.go new file mode 100644 index 0000000..3a7b1b5 --- /dev/null +++ b/handlers/cache_test.go @@ -0,0 +1,25 @@ +package handlers + +import ( + "bytes" + "testing" +) + +func TestCache(t *testing.T) { + key := "testkey" + value := []byte("testvalue") + + err := setCache(key, value) + if err != nil { + t.Fatalf("unable to set cache, %q\n", err) + } + + v, err := getCache[[]byte](key) + if err != nil { + t.Fatalf("unable to get cache, %q\n", err) + } + + if !bytes.Equal(v, value) { + t.Fatalf("expected %q, got %q\n", value, v) + } +} diff --git a/handlers/handler.go b/handlers/handler.go new file mode 100644 index 0000000..c81d929 --- /dev/null +++ b/handlers/handler.go @@ -0,0 +1,32 @@ +package handlers + +import ( + "context" + "net/http" + + "github.com/a-h/templ" + "github.com/gorilla/mux" + "github.com/rramiachraf/dumb/views" + "github.com/sirupsen/logrus" +) + +func New(logger *logrus.Logger) *mux.Router { + r := mux.NewRouter() + + r.Use(mustHeaders) + + r.Handle("/", templ.Handler(views.HomePage())) + r.HandleFunc("/{id}-lyrics", lyrics(logger)).Methods("GET") + r.HandleFunc("/albums/{artist}/{albumName}", album(logger)).Methods("GET") + r.HandleFunc("/images/{filename}.{ext}", imageProxy(logger)).Methods("GET") + r.HandleFunc("/search", search(logger)).Methods("GET") + r.HandleFunc("/{id}/{artist-song}/{verse}/annotations", annotations(logger)).Methods("GET") + r.HandleFunc("/instances.json", instances(logger)).Methods("GET") + r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) + r.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusNotFound) + views.ErrorPage(404, "page not found").Render(context.Background(), w) + }) + + return r +} diff --git a/handlers/instances.go b/handlers/instances.go index 8df70ec..0eac004 100644 --- a/handlers/instances.go +++ b/handlers/instances.go @@ -20,7 +20,7 @@ func sendError(err error, status int, msg string, l *logrus.Logger, w http.Respo } } -func Instances(l *logrus.Logger) http.HandlerFunc { +func instances(l *logrus.Logger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if instances, err := getCache[[]byte]("instances"); err == nil { w.Header().Set("content-type", ContentTypeJSON) diff --git a/handlers/instances_test.go b/handlers/instances_test.go new file mode 100644 index 0000000..2b551db --- /dev/null +++ b/handlers/instances_test.go @@ -0,0 +1,40 @@ +package handlers + +import ( + "encoding/json" + "net/http" + "net/http/httptest" + "testing" + + "github.com/sirupsen/logrus" +) + +func TestInstancesList(t *testing.T) { + r, err := http.NewRequest(http.MethodGet, "/instances.json", nil) + if err != nil { + t.Fatal(err) + } + + rr := httptest.NewRecorder() + l := logrus.New() + + m := New(l) + m.ServeHTTP(rr, r) + + c := rr.Result().Header.Get("content-type") + if c != ContentTypeJSON { + t.Fatalf("expected %q, got %q", ContentTypeJSON, c) + } + + defer rr.Result().Body.Close() + + d := json.NewDecoder(rr.Result().Body) + instances := []map[string]any{} + if err := d.Decode(&instances); err != nil { + t.Fatalf("unable to decode json from response, %q\n", err) + } + + if _, exists := instances[0]["clearnet"]; !exists { + t.Fatal("unable to get clearnet value from instances list") + } +} diff --git a/handlers/lyrics.go b/handlers/lyrics.go index d0e1c34..966e1fb 100644 --- a/handlers/lyrics.go +++ b/handlers/lyrics.go @@ -12,7 +12,7 @@ import ( "github.com/sirupsen/logrus" ) -func Lyrics(l *logrus.Logger) http.HandlerFunc { +func lyrics(l *logrus.Logger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { id := mux.Vars(r)["id"] diff --git a/handlers/lyrics_test.go b/handlers/lyrics_test.go new file mode 100644 index 0000000..7c2445a --- /dev/null +++ b/handlers/lyrics_test.go @@ -0,0 +1,45 @@ +package handlers + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/PuerkitoBio/goquery" + "github.com/sirupsen/logrus" +) + +func TestLyrics(t *testing.T) { + url := "/The-silver-seas-catch-yer-own-train-lyrics" + title := "The Silver Seas" + artist := "Catch Yer Own Train" + + r, err := http.NewRequest(http.MethodGet, url, nil) + if err != nil { + t.Fatal(err) + } + + rr := httptest.NewRecorder() + l := logrus.New() + m := New(l) + + m.ServeHTTP(rr, r) + + defer rr.Result().Body.Close() + + doc, err := goquery.NewDocumentFromReader(rr.Result().Body) + if err != nil { + t.Fatal(err) + } + + docTitle := doc.Find("#metadata-info > h2").Text() + docArtist := doc.Find("#metadata-info > h1").Text() + + if docTitle != title { + t.Fatalf("expected %q, got %q\n", title, docTitle) + } + + if docArtist != artist { + t.Fatalf("expected %q, got %q\n", artist, docArtist) + } +} diff --git a/handlers/proxy.go b/handlers/proxy.go index 420b79c..2f8d114 100644 --- a/handlers/proxy.go +++ b/handlers/proxy.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "io" + "mime" "net/http" "strings" @@ -23,7 +24,7 @@ func isValidExt(ext string) bool { return false } -func ImageProxy(l *logrus.Logger) http.HandlerFunc { +func imageProxy(l *logrus.Logger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { v := mux.Vars(r) f := v["filename"] @@ -52,7 +53,7 @@ func ImageProxy(l *logrus.Logger) http.HandlerFunc { return } - w.Header().Add("Content-type", fmt.Sprintf("image/%s", ext)) + w.Header().Add("Content-type", mime.TypeByExtension("."+ext)) w.Header().Add("Cache-Control", "max-age=1296000") if _, err = io.Copy(w, res.Body); err != nil { l.Errorln("unable to write image", err) diff --git a/handlers/proxy_test.go b/handlers/proxy_test.go new file mode 100644 index 0000000..5dd976c --- /dev/null +++ b/handlers/proxy_test.go @@ -0,0 +1,38 @@ +package handlers + +import ( + "mime" + "net/http" + "net/http/httptest" + "testing" + + "github.com/sirupsen/logrus" +) + +func TestImageProxy(t *testing.T) { + imgURL := "/images/3852401ae6c6d6a51aafe814d67199f0.1000x1000x1.jpg" + + r, err := http.NewRequest(http.MethodGet, imgURL, nil) + if err != nil { + t.Fatal(err) + } + + rr := httptest.NewRecorder() + l := logrus.New() + m := New(l) + + m.ServeHTTP(rr, r) + + cc := rr.Result().Header.Get("cache-control") + maxAge := "max-age=1296000" + ct := rr.Result().Header.Get("content-type") + mimeType := mime.TypeByExtension(".jpg") + + if cc != maxAge { + t.Fatalf("expected %q, got %q\n", maxAge, cc) + } + + if ct != mimeType { + t.Fatalf("expected %q, got %q\n", mimeType, ct) + } +} diff --git a/handlers/search.go b/handlers/search.go index b2a83cd..5bc7d37 100644 --- a/handlers/search.go +++ b/handlers/search.go @@ -12,7 +12,7 @@ import ( "github.com/sirupsen/logrus" ) -func Search(l *logrus.Logger) http.HandlerFunc { +func search(l *logrus.Logger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { query := r.URL.Query().Get("q") url := fmt.Sprintf(`https://genius.com/api/search/multi?q=%s`, url.QueryEscape(query)) diff --git a/handlers/search_test.go b/handlers/search_test.go new file mode 100644 index 0000000..d123181 --- /dev/null +++ b/handlers/search_test.go @@ -0,0 +1,38 @@ +package handlers + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/PuerkitoBio/goquery" + "github.com/sirupsen/logrus" +) + +func TestSearch(t *testing.T) { + url := "/search?q=it+aint+hard+to+tell" + artist := "Nas" + + r, err := http.NewRequest(http.MethodGet, url, nil) + if err != nil { + t.Fatal(err) + } + + rr := httptest.NewRecorder() + l := logrus.New() + m := New(l) + + m.ServeHTTP(rr, r) + + defer rr.Result().Body.Close() + + doc, err := goquery.NewDocumentFromReader(rr.Result().Body) + if err != nil { + t.Fatal(err) + } + + docArtist := doc.Find("#search-item > div > span").First().Text() + if docArtist != artist { + t.Fatalf("expected %q, got %q\n", artist, docArtist) + } +} diff --git a/handlers/utils.go b/handlers/utils.go index 5873190..d9b0c24 100644 --- a/handlers/utils.go +++ b/handlers/utils.go @@ -9,7 +9,7 @@ import ( fhttp "github.com/Danny-Dasilva/fhttp" ) -func MustHeaders(next http.Handler) http.Handler { +func mustHeaders(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { csp := "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self'; object-src 'none'" w.Header().Add("content-security-policy", csp) diff --git a/handlers/utils_test.go b/handlers/utils_test.go new file mode 100644 index 0000000..9db2374 --- /dev/null +++ b/handlers/utils_test.go @@ -0,0 +1,32 @@ +package handlers + +/* +import ( + "encoding/json" + "testing" +) + +func TestSendRequest(t *testing.T) { + res, err := sendRequest("https://tls.peet.ws/api/clean") + if err != nil { + t.Fatal(err) + } + + defer res.Body.Close() + + type fingerprint struct { + JA3 string `json:"ja3"` + } + + decoder := json.NewDecoder(res.Body) + var fg fingerprint + + if err := decoder.Decode(&fg); err != nil { + t.Fatal(err) + } + + if fg.JA3 != JA3 { + t.Fatalf("expected %q, got %q\n", JA3, fg.JA3) + } +} +*/ diff --git a/main.go b/main.go index 67d06e9..bc4298a 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,6 @@ package main import ( - "context" "fmt" "net" "net/http" @@ -9,35 +8,15 @@ import ( "strconv" "time" - "github.com/a-h/templ" - "github.com/gorilla/mux" "github.com/rramiachraf/dumb/handlers" - "github.com/rramiachraf/dumb/views" "github.com/sirupsen/logrus" ) -var logger = logrus.New() - func main() { - r := mux.NewRouter() - - r.Use(handlers.MustHeaders) - - r.Handle("/", templ.Handler(views.HomePage())) - r.HandleFunc("/{id}-lyrics", handlers.Lyrics(logger)).Methods("GET") - r.HandleFunc("/albums/{artist}/{albumName}", handlers.Album(logger)).Methods("GET") - r.HandleFunc("/images/{filename}.{ext}", handlers.ImageProxy(logger)).Methods("GET") - r.HandleFunc("/search", handlers.Search(logger)).Methods("GET") - r.HandleFunc("/{id}/{artist-song}/{verse}/annotations", handlers.Annotations(logger)).Methods("GET") - r.HandleFunc("/instances.json", handlers.Instances(logger)).Methods("GET") - r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) - r.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotFound) - views.ErrorPage(404, "page not found").Render(context.Background(), w) - }) + var logger = logrus.New() server := &http.Server{ - Handler: r, + Handler: handlers.New(logger), WriteTimeout: 25 * time.Second, ReadTimeout: 25 * time.Second, } From 33e2ab0da39826f4ab6a3d9af8562852f59e8605 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 6 Mar 2024 23:22:03 +0100 Subject: [PATCH 28/76] test: add missing dependency --- .github/workflows/test.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0775980..d79fb43 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,7 +2,7 @@ name: Test and Build on: push: branches: - - master + - main jobs: build: @@ -10,9 +10,8 @@ jobs: steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 - - name: Install dependencies - run: go get . - - name: Build - run: make build - - name: Test - run: make test + with: + go-version-file: go.mod + - run: go install github.com/a-h/templ/cmd/templ@latest + - run: make build + - run: make test From ad2e476d4e09002f802f1ce59d7571c4f4d215ff Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 6 Mar 2024 23:31:30 +0100 Subject: [PATCH 29/76] chore: comment test job for the moment --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d79fb43..420f3e3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,4 +14,4 @@ jobs: go-version-file: go.mod - run: go install github.com/a-h/templ/cmd/templ@latest - run: make build - - run: make test + #- run: make test From 310cb8815513d650858758e6e966f25469412d12 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Thu, 7 Mar 2024 14:19:13 +0100 Subject: [PATCH 30/76] fix: update id tag to fix layout issue --- style/footer.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/style/footer.css b/style/footer.css index 2a7e073..b09f0f6 100644 --- a/style/footer.css +++ b/style/footer.css @@ -34,7 +34,7 @@ footer a:hover { } @media screen and (max-width: 1080px) { - #footer_container { + #footer-container { width: 100%; padding: 0 2rem; box-sizing: border-box; From 33eac92072889a161dd357c30807e0c7c0dbdaae Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Thu, 7 Mar 2024 14:23:46 +0100 Subject: [PATCH 31/76] refactor: add a letter v beside the git hash for a better clarity --- views/footer.templ | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/footer.templ b/views/footer.templ index 0aee5da..102451e 100644 --- a/views/footer.templ +++ b/views/footer.templ @@ -9,7 +9,7 @@ templ footer() { Source Code Instances

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 F{{!^OYij@i literal 237245 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Ξ+SB>B(WUS)Pb5Ei^KIh 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

-

{ data.Version }

+

v.{ data.Version }

} From cdc6dc418fdce09ac30f937dc0137558f3c1e223 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Sat, 9 Mar 2024 21:40:20 +0100 Subject: [PATCH 32/76] feat: add theme toggler on client side --- static/script.js | 33 ++++++++++++++++++++++- style/annotation.css | 8 +++--- style/error.css | 14 +++++----- style/footer.css | 6 ++--- style/home.css | 22 +++++++-------- style/lyrics.css | 64 ++++++++++++++++++++++---------------------- style/main.css | 6 ++--- style/navbar.css | 33 ++++++++++++++++++----- style/search.css | 30 ++++++++++----------- views/navbar.templ | 22 ++++++++++++++- 10 files changed, 149 insertions(+), 89 deletions(-) diff --git a/static/script.js b/static/script.js index cecad3b..65bffdd 100644 --- a/static/script.js +++ b/static/script.js @@ -6,7 +6,7 @@ function showAbout() { fullAbout.classList.toggle("hidden") } -[fullAbout, summary].forEach(item => item.onclick = showAbout) +fullAbout && [fullAbout, summary].forEach(item => item.onclick = showAbout) document.querySelectorAll("#lyrics a").forEach(item => { item.addEventListener("click", getAnnotation) @@ -36,3 +36,34 @@ function getAnnotation(e) { } } } + +window._currentTheme = localStorage.getItem("_theme") || "light" +setTheme(window._currentTheme) + +const themeChooser = document.getElementById("choose-theme") +themeChooser.addEventListener("click", function() { + if (window._currentTheme === "dark") { + setTheme("light") + } else { + setTheme("dark") + } +}) + +function setTheme(theme) { + const toggler = document.getElementById("ic_fluent_dark_theme_24_regular") + switch (theme) { + case "dark": + toggler.setAttribute("fill", "#fff") + localStorage.setItem("_theme", "dark") + document.body.classList.add("dark") + window._currentTheme = "dark" + return + case "light": + toggler.setAttribute("fill", "#181d31") + localStorage.setItem("_theme", "light") + document.body.classList.remove("dark") + window._currentTheme = "light" + return + + } +} diff --git a/style/annotation.css b/style/annotation.css index ee9ed07..8a197db 100644 --- a/style/annotation.css +++ b/style/annotation.css @@ -26,9 +26,7 @@ padding-left: 1em; } -@media (prefers-color-scheme: dark) { - .annotation { - background-color: #272d44; - color: inherit; - } +.dark .annotation { + background-color: #272d44; + color: inherit; } diff --git a/style/error.css b/style/error.css index 6036ede..95fff45 100644 --- a/style/error.css +++ b/style/error.css @@ -20,12 +20,10 @@ text-align: center; } -@media (prefers-color-scheme: dark) { - #error h1 { - color: #eee; - } - - #error p { - color: #ddd; - } +.dark #error h1 { + color: #eee; +} + +.dark #error p { + color: #ddd; } diff --git a/style/footer.css b/style/footer.css index b09f0f6..80fbe81 100644 --- a/style/footer.css +++ b/style/footer.css @@ -41,8 +41,6 @@ footer a:hover { } } -@media (prefers-color-scheme: dark) { - footer { - background-color: #fec260; - } +.dark footer { + background-color: #fec260; } diff --git a/style/home.css b/style/home.css index fdd34bf..a766d32 100644 --- a/style/home.css +++ b/style/home.css @@ -37,16 +37,14 @@ color: #222; } -@media (prefers-color-scheme: dark) { - #home h1 { - color: #eee; - } - - #home p { - color: #ddd; - } - - #search-input { - background-color: #ddd; - } +.dark #home h1 { + color: #eee; +} + +.dark #home p { + color: #ddd; +} + +.dark #search-input { + background-color: #ddd; } diff --git a/style/lyrics.css b/style/lyrics.css index 25cec9d..a527a86 100644 --- a/style/lyrics.css +++ b/style/lyrics.css @@ -95,41 +95,41 @@ display: none; } +.dark #lyrics { + color: #ccc; +} + +.dark #lyrics a { + background-color: #272d44; + color: inherit; +} + +.dark #lyrics a:hover { + background-color: #32384f; +} + +.dark #metadata h1 { + color: #ddd; +} + +.dark #metadata h2, +.dark #credits p { + color: #eee; +} + +.dark #title { + color: #ddd; +} + +.dark #about p, +.dark #credits summary { + color: #ccc; +} + @media screen and (max-width: 1080px) { #metadata { align-items: center; + text-align: center; } } -@media (prefers-color-scheme: dark) { - #lyrics { - color: #ccc; - } - - #lyrics a { - background-color: #272d44; - color: inherit; - } - - #lyrics a:hover { - background-color: #32384f; - } - - #metadata h1 { - color: #ddd; - } - - #metadata h2, - #credits p { - color: #eee; - } - - #title { - color: #ddd; - } - - #about p, - #credits summary { - color: #ccc; - } -} diff --git a/style/main.css b/style/main.css index a9d1a6c..1f15feb 100644 --- a/style/main.css +++ b/style/main.css @@ -57,8 +57,6 @@ a { text-decoration: none; } -@media (prefers-color-scheme: dark) { - body { - background-color: #181d31; - } +body.dark { + background-color: #181d31; } diff --git a/style/navbar.css b/style/navbar.css index c4f3f5c..6beca6c 100644 --- a/style/navbar.css +++ b/style/navbar.css @@ -1,17 +1,38 @@ nav { background-color: #ffcd38; + padding: 1rem 0; +} + +#nav-container { + width: 1024px; display: flex; align-items: center; - justify-content: center; - padding: 0.5rem; + justify-content: space-between; + margin: 0 auto; } +@media screen and (max-width: 1080px) { + #nav-container { + width: 100%; + padding: 0 2rem; + box-sizing: border-box; + } +} + + nav img { width: 50px; } -@media (prefers-color-scheme: dark) { - nav { - background-color: #fec260; - } +#choose-theme { + background: none; + border: none; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; +} + +.dark nav { + background-color: #fec260; } diff --git a/style/search.css b/style/search.css index 4764891..f791ff9 100644 --- a/style/search.css +++ b/style/search.css @@ -95,20 +95,18 @@ border-radius: 5px; } -@media (prefers-color-scheme: dark) { - #search-page h1 { - color: #eee; - } - - #search-item { - border: 1px solid #888; - } - - #search-item h2 { - color: #ddd; - } - - #search-item span { - color: #bbb; - } +.dark #search-page h1 { + color: #eee; +} + +.dark #search-item { + border: 1px solid #888; +} + +.dark #search-item h2 { + color: #ddd; +} + +.dark #search-item span { + color: #bbb; } diff --git a/views/navbar.templ b/views/navbar.templ index 66c7255..90295ce 100644 --- a/views/navbar.templ +++ b/views/navbar.templ @@ -2,6 +2,26 @@ package views templ navbar() { } From 36a7a7ca72f20dc7d37d0fabbeebc56e4461ca8c Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 13 Mar 2024 14:13:12 +0000 Subject: [PATCH 33/76] ci: fix few Docker issues and use multi stage builds for a lighter image --- Dockerfile | 17 +++++++++++++++-- README.md | 9 +++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9e08192..a8353b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,6 @@ -FROM golang:1.19.4-alpine3.17 +FROM golang:1.22.1-alpine3.19 as build + +RUN apk add make git WORKDIR /code @@ -8,6 +10,17 @@ RUN go mod download COPY . . RUN make build +FROM alpine:3.19 + +RUN adduser user -D + +USER user +WORKDIR /home/user/dumb + +COPY --from=build /code/dumb . +COPY --from=build /code/static static + EXPOSE 5555/tcp -CMD ["/code/dumb"] +CMD ["./dumb"] + diff --git a/README.md b/README.md index fe7a90b..d44ca0a 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,15 @@ With the massive daily increase of useless scripts on Genius's web frontend, and ![Screenshot](https://raw.githubusercontent.com/rramiachraf/dumb/main/screenshot.png) ## Installation & Usage +### Docker +```bash +git clone https://github.com/rramiachraf/dumb +cd dumb +docker buildx build -t dumb . +docker run -p 8080:5555 --name dumb dumb +``` + +### Your own machine [Go 1.20+](https://go.dev/dl) is required. ```bash git clone https://github.com/rramiachraf/dumb From 7c75758d65185b8937e6eec5185064531fd9f278 Mon Sep 17 00:00:00 2001 From: Achraf RRAMI <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 13 Mar 2024 14:18:49 +0000 Subject: [PATCH 34/76] docs: refactor usage section --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d44ca0a..1086953 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ docker buildx build -t dumb . docker run -p 8080:5555 --name dumb dumb ``` -### Your own machine +### Without Docker [Go 1.20+](https://go.dev/dl) is required. ```bash git clone https://github.com/rramiachraf/dumb From 413a1fb0f822ff305a390b403d0492cbbf908bb3 Mon Sep 17 00:00:00 2001 From: Achraf RRAMI <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 13 Mar 2024 23:30:56 +0000 Subject: [PATCH 35/76] ci: create Github Action to push image to ghcr --- .github/workflows/image.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/image.yml diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml new file mode 100644 index 0000000..42456b0 --- /dev/null +++ b/.github/workflows/image.yml @@ -0,0 +1,18 @@ +name: Build container image +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - run: docker buildx build . -t ghcr.io/rramiachraf/dumb:latest + - run: docker push ghcr.io/rramiachraf/dumb:latest From b1dc78d21f17ebcfb835f45876e9dc7b7f26081c Mon Sep 17 00:00:00 2001 From: Achraf RRAMI <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 13 Mar 2024 23:33:02 +0000 Subject: [PATCH 36/76] ci: add curl to build dependencies --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a8353b8..b23922b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM golang:1.22.1-alpine3.19 as build -RUN apk add make git +RUN apk add make git curl WORKDIR /code From 207ab639af9180f972b2f73a0090210d65f752ce Mon Sep 17 00:00:00 2001 From: Achraf RRAMI <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 13 Mar 2024 23:43:36 +0000 Subject: [PATCH 37/76] docs: update Docker image instructions --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1086953..c2380ea 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,10 @@ With the massive daily increase of useless scripts on Genius's web frontend, and ## Installation & Usage ### Docker ```bash -git clone https://github.com/rramiachraf/dumb -cd dumb -docker buildx build -t dumb . -docker run -p 8080:5555 --name dumb dumb +docker run -p 8080:5555 --name dumb ghcr.io/rramiachraf/dumb:latest ``` -### Without Docker +### Build from source [Go 1.20+](https://go.dev/dl) is required. ```bash git clone https://github.com/rramiachraf/dumb From 12007be5b3d5542b23c4d3c2a369d157a13418d2 Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Thu, 14 Mar 2024 13:22:45 +0000 Subject: [PATCH 38/76] ci: use scratch image instead of alpine for a smaller image --- Dockerfile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index b23922b..a1200bb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,15 +10,11 @@ RUN go mod download COPY . . RUN make build -FROM alpine:3.19 - -RUN adduser user -D - -USER user -WORKDIR /home/user/dumb +FROM scratch COPY --from=build /code/dumb . COPY --from=build /code/static static +COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ EXPOSE 5555/tcp From a614f9b2a06e1c04df9007170566f4c22f2339ad Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Thu, 14 Mar 2024 16:52:49 +0000 Subject: [PATCH 39/76] ci: add image metadata --- Dockerfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Dockerfile b/Dockerfile index a1200bb..e6b0470 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,8 +10,15 @@ RUN go mod download COPY . . RUN make build +############################################################### + FROM scratch +LABEL org.opencontainers.image.source="https://github.com/rramiachraf/dumb" +LABEL org.opencontainers.image.url="https://github.com/rramiachraf/dumb" +LABEL org.opencontainers.image.licenses="MIT" +LABEL org.opencontainers.image.description="Private alternative front-end for Genius." + COPY --from=build /code/dumb . COPY --from=build /code/static static COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ From 42e06256955bb244da7e26614a9f209f795bf8a3 Mon Sep 17 00:00:00 2001 From: Solomon Victorino Date: Sat, 6 Apr 2024 00:14:51 -0600 Subject: [PATCH 40/76] feat: support direct annotation links --- handlers/annotations.go | 2 +- handlers/handler.go | 6 ++++-- handlers/lyrics.go | 10 ++++++++-- handlers/lyrics_test.go | 13 ++++++++++++- static/script.js | 13 +++++++++++-- 5 files changed, 36 insertions(+), 8 deletions(-) diff --git a/handlers/annotations.go b/handlers/annotations.go index 8033506..43d251a 100644 --- a/handlers/annotations.go +++ b/handlers/annotations.go @@ -18,7 +18,7 @@ import ( func annotations(l *logrus.Logger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - id := mux.Vars(r)["id"] + id := mux.Vars(r)["annotation-id"] if a, err := getCache[data.Annotation]("annotation:" + id); err == nil { encoder := json.NewEncoder(w) diff --git a/handlers/handler.go b/handlers/handler.go index c81d929..137a53c 100644 --- a/handlers/handler.go +++ b/handlers/handler.go @@ -16,13 +16,15 @@ func New(logger *logrus.Logger) *mux.Router { r.Use(mustHeaders) r.Handle("/", templ.Handler(views.HomePage())) - r.HandleFunc("/{id}-lyrics", lyrics(logger)).Methods("GET") r.HandleFunc("/albums/{artist}/{albumName}", album(logger)).Methods("GET") r.HandleFunc("/images/{filename}.{ext}", imageProxy(logger)).Methods("GET") r.HandleFunc("/search", search(logger)).Methods("GET") - r.HandleFunc("/{id}/{artist-song}/{verse}/annotations", annotations(logger)).Methods("GET") + r.HandleFunc("/{annotation-id}/{artist-song}/{verse}/annotations", annotations(logger)).Methods("GET") r.HandleFunc("/instances.json", instances(logger)).Methods("GET") r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("static")))) + r.PathPrefix("/{annotation-id}/{artist-song}-lyrics").HandlerFunc(lyrics(logger)).Methods("GET") + r.PathPrefix("/{annotation-id}/{artist-song}").HandlerFunc(lyrics(logger)).Methods("GET") + r.PathPrefix("/{annotation-id}").HandlerFunc(lyrics(logger)).Methods("GET") r.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusNotFound) views.ErrorPage(404, "page not found").Render(context.Background(), w) diff --git a/handlers/lyrics.go b/handlers/lyrics.go index 966e1fb..bb0c138 100644 --- a/handlers/lyrics.go +++ b/handlers/lyrics.go @@ -14,14 +14,20 @@ import ( func lyrics(l *logrus.Logger) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { - id := mux.Vars(r)["id"] + // prefer artist-song over annotation-id for cache key when available + id := mux.Vars(r)["artist-song"] + if id == "" { + id = mux.Vars(r)["annotation-id"] + } else { + id = id + "-lyrics" + } if s, err := getCache[data.Song](id); err == nil { views.LyricsPage(s).Render(context.Background(), w) return } - url := fmt.Sprintf("https://genius.com/%s-lyrics", id) + url := fmt.Sprintf("https://genius.com/%s", id) resp, err := sendRequest(url) if err != nil { l.Errorln(err) diff --git a/handlers/lyrics_test.go b/handlers/lyrics_test.go index 7c2445a..006386f 100644 --- a/handlers/lyrics_test.go +++ b/handlers/lyrics_test.go @@ -10,7 +10,18 @@ import ( ) func TestLyrics(t *testing.T) { - url := "/The-silver-seas-catch-yer-own-train-lyrics" + urls := []string{"/The-silver-seas-catch-yer-own-train-lyrics", + "/1784308/The-silver-seas-catch-yer-own-train", + "/1784308/The-silver-seas-catch-yer-own-train-lyrics", + "/1784308/The-silver-seas-catch-yer-own-train/Baby-you-and-i-are-not-the-same-you-say-you-like-sun-i-like-the-rain", + "/1784308/The-silver-seas-catch-yer-own-train-lyrics/Baby-you-and-i-are-not-the-same-you-say-you-like-sun-i-like-the-rain", + "/1784308"} + for _, url := range urls { + t.Run(url, func(t *testing.T) { testLyrics(t, url) }) + } +} + +func testLyrics(t *testing.T, url string) { title := "The Silver Seas" artist := "Catch Yer Own Train" diff --git a/static/script.js b/static/script.js index 65bffdd..c8e955a 100644 --- a/static/script.js +++ b/static/script.js @@ -8,8 +8,17 @@ function showAbout() { fullAbout && [fullAbout, summary].forEach(item => item.onclick = showAbout) -document.querySelectorAll("#lyrics a").forEach(item => { - item.addEventListener("click", getAnnotation) +window.addEventListener("load", () => { + document.querySelectorAll("#lyrics a").forEach(item => { + item.addEventListener("click", getAnnotation) + }) + + const linkedAnnotationId = window.location.pathname.match(new RegExp("/(\\d+)"))?.[1] + if (linkedAnnotationId) { + const target = document.querySelector(`a[href^="/${linkedAnnotationId}"][class^="ReferentFragmentdesktop__ClickTarget"] > span`) + target?.click() + target?.scrollIntoView() + } }) function getAnnotation(e) { From d3b40590de126c4b330a3535ce24e92a1b9978ff Mon Sep 17 00:00:00 2001 From: Solomon Victorino Date: Sat, 6 Apr 2024 14:17:42 -0600 Subject: [PATCH 41/76] fix: don't create duplicate annotation elements --- static/script.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/static/script.js b/static/script.js index 65bffdd..d25e856 100644 --- a/static/script.js +++ b/static/script.js @@ -32,7 +32,9 @@ function getAnnotation(e) { annotationDiv.innerHTML = parsedReponse.html annotationDiv.id = uri annotationDiv.className = "annotation" - e.target.parentElement.insertAdjacentElement('afterend', annotationDiv) + if (!document.getElementById(uri)) { + e.target.parentElement.insertAdjacentElement('afterend', annotationDiv) + } } } } From 61d217118be8d49e7640baad73908bb156e4d156 Mon Sep 17 00:00:00 2001 From: Solomon Victorino Date: Sat, 6 Apr 2024 14:06:50 -0600 Subject: [PATCH 42/76] fix: show album descriptions --- data/album.go | 1 - 1 file changed, 1 deletion(-) diff --git a/data/album.go b/data/album.go index 65dc60f..6940857 100644 --- a/data/album.go +++ b/data/album.go @@ -62,7 +62,6 @@ func (a *Album) parseAlbumData(doc *goquery.Document) error { a.Image = albumData.Image a.About[0] = albumData.Description a.About[1] = truncateText(albumData.Description) - a.About[1] = "" for _, track := range albumMetadataFromPage.AlbumAppearances { url := strings.Replace(track.Song.Url, "https://genius.com", "", -1) From 816f4cd8facff9fe0742a361d397a678eba4c648 Mon Sep 17 00:00:00 2001 From: Solomon Victorino Date: Wed, 10 Apr 2024 13:30:45 -0600 Subject: [PATCH 43/76] fix: don't collapse annotations for clicked lyrics elsewhere on page --- static/script.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/static/script.js b/static/script.js index 686b6a8..a9018a7 100644 --- a/static/script.js +++ b/static/script.js @@ -24,8 +24,9 @@ window.addEventListener("load", () => { function getAnnotation(e) { e.preventDefault() //document.querySelector('.annotation')?.remove() - const uri = e.target.parentElement.getAttribute("href") - const presentAnnotation = document.getElementById(uri) + const link = e.target.parentElement + const uri = link.getAttribute("href") + const presentAnnotation = link.nextElementSibling.matches(".annotation") && link.nextElementSibling if (presentAnnotation) { presentAnnotation.remove() return @@ -41,8 +42,8 @@ function getAnnotation(e) { annotationDiv.innerHTML = parsedReponse.html annotationDiv.id = uri annotationDiv.className = "annotation" - if (!document.getElementById(uri)) { - e.target.parentElement.insertAdjacentElement('afterend', annotationDiv) + if (!link.nextElementSibling.matches(".annotation")) { + link.insertAdjacentElement('afterend', annotationDiv) } } } From 22d4ab2cda9f11995f2b0efe2ce8366a06590dab Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Tue, 16 Apr 2024 01:26:28 +0100 Subject: [PATCH 44/76] feat: add option to easily redirect to Genius website --- static/script.js | 2 ++ style/navbar.css | 8 +++++++- views/navbar.templ | 46 ++++++++++++++++++++++++++++++---------------- 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/static/script.js b/static/script.js index a9018a7..2109349 100644 --- a/static/script.js +++ b/static/script.js @@ -9,6 +9,8 @@ function showAbout() { fullAbout && [fullAbout, summary].forEach(item => item.onclick = showAbout) window.addEventListener("load", () => { + const geniusURL = "https://genius.com" + document.location.pathname + document.location.search + document.getElementById("goto-genius").setAttribute("href", geniusURL) document.querySelectorAll("#lyrics a").forEach(item => { item.addEventListener("click", getAnnotation) }) diff --git a/style/navbar.css b/style/navbar.css index 6beca6c..8efece6 100644 --- a/style/navbar.css +++ b/style/navbar.css @@ -24,7 +24,13 @@ nav img { width: 50px; } -#choose-theme { +#nav-icons { + display: flex; + align-items: center; + gap: 1rem; +} + +.nav-icon { background: none; border: none; cursor: pointer; diff --git a/views/navbar.templ b/views/navbar.templ index 90295ce..502ba8b 100644 --- a/views/navbar.templ +++ b/views/navbar.templ @@ -4,24 +4,38 @@ templ navbar() { } From eacb02d7a24b5356fb679e9ba33279b12178fd67 Mon Sep 17 00:00:00 2001 From: Achraf RRAMI <51409801+rramiachraf@users.noreply.github.com> Date: Sat, 27 Apr 2024 17:43:32 +0000 Subject: [PATCH 45/76] docs: order public instances --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c2380ea..2b5dc3a 100644 --- a/README.md +++ b/README.md @@ -24,14 +24,14 @@ The default port is 5555, you can use other ports by setting the `PORT` environm ## Public Instances -| URL | Tor | I2P | Region | CDN? | Operator | -| --- | --- | --- | --- | --- | --- | -| | [Yes](http://dm.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion) | [Yes](http://vernxpcpqi2y4uhu7to4rnjmyjjgzh3x3qxyzpmkhykefchkmleq.b32.i2p) | US | No | https://vern.cc | -| | No | No | US/DE | Yes | Whatever Social | -| | No | No | DE | Yes | @MaximilianGT500 | -| | [Yes](http://dumb.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion) | No | FR | No | https://privacydev.net | -| | No | No | NL | No | https://ducks.party | +| URL | Tor | I2P | Region | CDN? | Operator +| --- | --- | --- | --- | --- | --- +| | No | No | NL | No | https://ducks.party +| | [Yes](http://dm.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion) | [Yes](http://vernxpcpqi2y4uhu7to4rnjmyjjgzh3x3qxyzpmkhykefchkmleq.b32.i2p) | US | No | https://vern.cc +| | No | No | DE | Yes | @MaximilianGT500 +| | [Yes](http://dumb.g4c3eya4clenolymqbpgwz3q3tawoxw56yhzk4vugqrl6dtu3ejvhjid.onion) | No | FR | No | https://privacydev.net | | No | No | DE | - | https://privacyfucking.rocks | +| | No | No | US/DE | Yes | Whatever Social #### Notes: - Instances list in JSON format can be found in [instances.json](instances.json) file. From 1db6e0adbb6d36dcec535878858e17a428e7637f Mon Sep 17 00:00:00 2001 From: Achraf RRAMI <51409801+rramiachraf@users.noreply.github.com> Date: Sat, 27 Apr 2024 18:28:03 +0000 Subject: [PATCH 46/76] docs: add status page --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 2b5dc3a..c500310 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,6 @@ make build The default port is 5555, you can use other ports by setting the `PORT` environment variable. ## Public Instances - | URL | Tor | I2P | Region | CDN? | Operator | --- | --- | --- | --- | --- | --- | | No | No | NL | No | https://ducks.party @@ -33,6 +32,8 @@ The default port is 5555, you can use other ports by setting the `PORT` environm | | No | No | DE | - | https://privacyfucking.rocks | | | No | No | US/DE | Yes | Whatever Social +[Status Page](https://github.com/rramiachraf/dumb-instances) + #### Notes: - Instances list in JSON format can be found in [instances.json](instances.json) file. - For people who might be capable and interested in hosting a public instance feel free to do so, and don't forget to open a pull request, so your instance can be included here. From 7e40892b1d7f3fa3c044408f9f61b4c71efe35ca Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 1 May 2024 21:06:03 +0100 Subject: [PATCH 47/76] feat: add compress handler --- go.mod | 2 ++ go.sum | 19 ++++--------------- handlers/handler.go | 2 ++ 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 0454c2d..8159dcc 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( github.com/a-h/templ v0.2.598 github.com/allegro/bigcache/v3 v3.1.0 github.com/caffix/cloudflare-roundtripper v0.0.0-20181218223503-4c29d231c9cb + github.com/gorilla/handlers v1.5.2 github.com/gorilla/mux v1.8.1 github.com/sirupsen/logrus v1.9.3 ) @@ -19,6 +20,7 @@ require ( github.com/andybalholm/brotli v1.1.0 // indirect github.com/andybalholm/cascadia v1.3.2 // indirect github.com/cloudflare/circl v1.3.7 // indirect + github.com/felixge/httpsnoop v1.0.3 // indirect github.com/gorilla/websocket v1.5.1 // indirect github.com/klauspost/compress v1.17.7 // indirect github.com/quic-go/quic-go v0.41.0 // indirect diff --git a/go.sum b/go.sum index 8e6bd25..0f8677b 100644 --- a/go.sum +++ b/go.sum @@ -12,21 +12,15 @@ github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26 h1:6fexoGmvzoXMSk14BZ0AirapVm github.com/Danny-Dasilva/CycleTLS/cycletls v1.0.26/go.mod h1:QFi/EVO7qqru3Ftxz1LR+96jIc91Tifv0DnskF/gWQ8= github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1 h1:/lqhaiz7xdPr6kuaW1tQ/8DdpWdxkdyd9W/6EHz4oRw= github.com/Danny-Dasilva/fhttp v0.0.0-20240217042913-eeeb0b347ce1/go.mod h1:Hvab/V/YKCDXsEpKYKHjAXH5IFOmoq9FsfxjztEqvDc= -github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM= -github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ= github.com/PuerkitoBio/goquery v1.9.1 h1:mTL6XjbJTZdpfL+Gwl5U2h1l9yEkJjhmlTeV9VPW7UI= github.com/PuerkitoBio/goquery v1.9.1/go.mod h1:cW1n6TmIMDoORQU5IU/P1T3tGFunOeXEpGP2WHRwkbY= github.com/a-h/templ v0.2.598 h1:6jMIHv6wQZvdPxTuv87erW4RqN/FPU0wk7ZHN5wVuuo= github.com/a-h/templ v0.2.598/go.mod h1:SA7mtYwVEajbIXFRh3vKdYm/4FYyLQAtPH1+KxzGPA8= -github.com/allegro/bigcache/v3 v3.0.2 h1:AKZCw+5eAaVyNTBmI2fgyPVJhHkdWder3O9IrprcQfI= -github.com/allegro/bigcache/v3 v3.0.2/go.mod h1:aPyh7jEvrog9zAwx5N7+JUQX5dZTSGpxF1LAR4dr35I= github.com/allegro/bigcache/v3 v3.1.0 h1:H2Vp8VOvxcrB91o86fUSVJFqeuz8kpyyB02eH3bSzwk= github.com/allegro/bigcache/v3 v3.1.0/go.mod h1:aPyh7jEvrog9zAwx5N7+JUQX5dZTSGpxF1LAR4dr35I= github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= -github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= -github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= 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/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= @@ -48,6 +42,8 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= +github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -98,8 +94,8 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= @@ -115,8 +111,6 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/compress v1.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI= -github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/klauspost/compress v1.17.7 h1:ehO88t2UGzQK66LMdE8tibEd1ErmzZjNEqWkjLAKQQg= github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -182,12 +176,8 @@ github.com/quic-go/quic-go v0.37.4/go.mod h1:YsbH1r4mSHPJcLF4k4zruUkLBqctEMBDR6V github.com/quic-go/quic-go v0.41.0 h1:aD8MmHfgqTURWNJy48IYFg2OnxwHT3JL7ahGs73lb4k= github.com/quic-go/quic-go v0.41.0/go.mod h1:qCkNjqczPEvgsOnxZ0eCD14lv+B2LHlFAB++CNOh9hA= github.com/refraction-networking/utls v1.5.4/go.mod h1:SPuDbBmgLGp8s+HLNc83FuavwZCFoMmExj+ltUHiHUw= -github.com/refraction-networking/utls v1.6.2 h1:iTeeGY0o6nMNcGyirxkD5bFIsVctP5InGZ3E0HrzS7k= -github.com/refraction-networking/utls v1.6.2/go.mod h1:yil9+7qSl+gBwJqztoQseO6Pr3h62pQoY1lXiNR/FPs= github.com/refraction-networking/utls v1.6.3 h1:MFOfRN35sSx6K5AZNIoESsBuBxS2LCgRilRIdHb6fDc= github.com/refraction-networking/utls v1.6.3/go.mod h1:yil9+7qSl+gBwJqztoQseO6Pr3h62pQoY1lXiNR/FPs= -github.com/robertkrimen/otto v0.2.1 h1:FVP0PJ0AHIjC+N4pKCG9yCDz6LHNPCwi/GKID5pGGF0= -github.com/robertkrimen/otto v0.2.1/go.mod h1:UPwtJ1Xu7JrLcZjNWN8orJaM5n5YEtqL//farB5FlRY= github.com/robertkrimen/otto v0.3.0 h1:5RI+8860NSxvXywDY9ddF5HcPw0puRsd8EgbXV0oqRE= github.com/robertkrimen/otto v0.3.0/go.mod h1:uW9yN1CYflmUQYvAMS0m+ZiNo3dMzRUDQJX0jWbzgxw= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= @@ -276,7 +266,6 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= diff --git a/handlers/handler.go b/handlers/handler.go index 137a53c..f2a902f 100644 --- a/handlers/handler.go +++ b/handlers/handler.go @@ -8,12 +8,14 @@ import ( "github.com/gorilla/mux" "github.com/rramiachraf/dumb/views" "github.com/sirupsen/logrus" + gorillaHandlers "github.com/gorilla/handlers" ) func New(logger *logrus.Logger) *mux.Router { r := mux.NewRouter() r.Use(mustHeaders) + r.Use(gorillaHandlers.CompressHandler) r.Handle("/", templ.Handler(views.HomePage())) r.HandleFunc("/albums/{artist}/{albumName}", album(logger)).Methods("GET") From 59929bb891ea9f3eee40d0cc79fe08bfc7cce65a Mon Sep 17 00:00:00 2001 From: rramiachraf <51409801+rramiachraf@users.noreply.github.com> Date: Wed, 1 May 2024 22:22:54 +0100 Subject: [PATCH 48/76] perf: tackle lighthouse issues --- handlers/handler.go | 5 ++++- views/album.templ | 2 +- views/head.templ | 1 + views/layout.templ | 2 +- views/lyrics.templ | 13 +++++++++++-- views/navbar.templ | 4 ++-- views/search.templ | 10 ++++++++-- 7 files changed, 28 insertions(+), 9 deletions(-) diff --git a/handlers/handler.go b/handlers/handler.go index f2a902f..e19b3c3 100644 --- a/handlers/handler.go +++ b/handlers/handler.go @@ -5,10 +5,10 @@ import ( "net/http" "github.com/a-h/templ" + gorillaHandlers "github.com/gorilla/handlers" "github.com/gorilla/mux" "github.com/rramiachraf/dumb/views" "github.com/sirupsen/logrus" - gorillaHandlers "github.com/gorilla/handlers" ) func New(logger *logrus.Logger) *mux.Router { @@ -18,6 +18,9 @@ func New(logger *logrus.Logger) *mux.Router { r.Use(gorillaHandlers.CompressHandler) r.Handle("/", templ.Handler(views.HomePage())) + r.HandleFunc("/robots.txt", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte("User-agent: *\nDisallow: /\n")) + }) r.HandleFunc("/albums/{artist}/{albumName}", album(logger)).Methods("GET") r.HandleFunc("/images/{filename}.{ext}", imageProxy(logger)).Methods("GET") r.HandleFunc("/search", search(logger)).Methods("GET") diff --git a/views/album.templ b/views/album.templ index 5e61a04..3cb49fe 100644 --- a/views/album.templ +++ b/views/album.templ @@ -9,7 +9,7 @@ templ AlbumPage(a data.Album) { @layout(fmt.Sprintf("%s - %s", a.Artist, a.Name)) {
- + Album image

{ a.Artist }

{ a.Name }

diff --git a/views/head.templ b/views/head.templ index f82ffd1..b8a5d26 100644 --- a/views/head.templ +++ b/views/head.templ @@ -8,5 +8,6 @@ templ head(title string) { + } diff --git a/views/layout.templ b/views/layout.templ index b02da33..d505ecf 100644 --- a/views/layout.templ +++ b/views/layout.templ @@ -2,7 +2,7 @@ package views templ layout(title string) { - + @head(title)
diff --git a/views/lyrics.templ b/views/lyrics.templ index d03256b..6fd35e2 100644 --- a/views/lyrics.templ +++ b/views/lyrics.templ @@ -9,7 +9,11 @@ templ LyricsPage(s data.Song) { @layout(fmt.Sprintf("%s - %s lyrics", s.Artist, s.Title)) {
- + Song image

{ s.Artist }

{ s.Title }

@@ -41,7 +45,12 @@ templ LyricsPage(s data.Song) {

{ s.Album.Name }

- + Album image
} diff --git a/views/navbar.templ b/views/navbar.templ index 502ba8b..a8b6d4e 100644 --- a/views/navbar.templ +++ b/views/navbar.templ @@ -3,7 +3,7 @@ package views templ navbar() {