home to your local SPACEGIRL 💫 arimelody.space
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

hide some information for visible but unreleased releases

Signed-off-by: ari melody <ari@arimelody.me>

+56 -55
+8
admin/admin.go
··· 18 18 const TOKEN_LENGTH = 64 19 19 const TOKEN_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" 20 20 21 + var ADMIN_BYPASS = func() bool { 22 + if os.Getenv("ARIMELODY_ADMIN_BYPASS") == "true" { 23 + fmt.Println("WARNING: Admin login is currently BYPASSED by ARIMELODY_ADMIN_BYPASS.") 24 + return true 25 + } 26 + return false 27 + }() 28 + 21 29 var ADMIN_ID_DISCORD = func() string { 22 30 envvar := os.Getenv("DISCORD_ADMIN_ID") 23 31 if envvar == "" {
+3 -3
admin/http.go
··· 85 85 } 86 86 87 87 func GetSession(r *http.Request) *Session { 88 - if os.Getenv("ARIMELODY_ADMIN_BYPASS") == "true" { 89 - return &Session{} 90 - } 88 + // if ADMIN_BYPASS { 89 + // return &Session{} 90 + // } 91 91 92 92 var token = "" 93 93 // is the session token in context?
+4 -3
music/model/release.go
··· 24 24 ) 25 25 26 26 const ( 27 - Single ReleaseType = "Single" 28 - Album ReleaseType = "Album" 27 + Single ReleaseType = "single" 28 + Album ReleaseType = "album" 29 29 EP ReleaseType = "EP" 30 - Compilation ReleaseType = "Compilation" 30 + Compilation ReleaseType = "compilation" 31 + Upcoming ReleaseType = "upcoming" 31 32 ) 32 33 33 34 // GETTERS
+8 -7
music/view/music.go
··· 3 3 import ( 4 4 "net/http" 5 5 6 - "arimelody.me/arimelody.me/admin" 7 6 "arimelody.me/arimelody.me/global" 8 7 "arimelody.me/arimelody.me/music/model" 9 8 ) ··· 26 25 27 26 func ServeCatalog() http.Handler { 28 27 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 29 - releases := []*model.Release{} 30 - authorised := admin.GetSession(r) != nil 31 - for _, release := range global.Releases { 32 - if !release.IsReleased() && !authorised { 33 - continue 28 + releases := []model.Release{} 29 + for _, r := range global.Releases { 30 + if r.Visible { 31 + release := *r 32 + if !release.IsReleased() { 33 + release.ReleaseType = model.Upcoming 34 + } 35 + releases = append(releases, release) 34 36 } 35 - releases = append(releases, release) 36 37 } 37 38 38 39 global.ServeTemplate("music.html", releases).ServeHTTP(w, r)
+23 -17
music/view/release.go
··· 21 21 22 22 gatewayRelease struct { 23 23 *model.Release 24 - Tracks []gatewayTrack 24 + Tracks []gatewayTrack 25 + Authorised bool 25 26 } 26 27 ) 27 28 ··· 35 36 } 36 37 37 38 releaseID := r.URL.Path[1:] 38 - var release = global.GetRelease(releaseID) 39 - if release == nil { 39 + var releaseRef = global.GetRelease(releaseID) 40 + if releaseRef == nil { 40 41 http.NotFound(w, r) 41 42 return 42 43 } 44 + var release = *releaseRef 43 45 44 - // only allow authorised users to view unreleased releases 45 - authorised := admin.GetSession(r) != nil 46 - if !release.IsReleased() && !authorised { 47 - admin.MustAuthorise(ServeRelease()).ServeHTTP(w, r) 48 - return 49 - } 46 + // only allow authorised users to view hidden releases 47 + authorised := admin.GetSession(r) != nil 48 + if !authorised && !release.Visible { 49 + http.NotFound(w, r) 50 + return 51 + } 52 + if !authorised && !release.IsReleased() { 53 + release.Tracks = nil 54 + release.Credits = nil 55 + } 50 56 51 57 w.Header().Add("Content-Type", "application/json") 52 58 err := json.NewEncoder(w).Encode(release) ··· 71 77 return 72 78 } 73 79 80 + // only allow authorised users to view hidden releases 81 + authorised := admin.GetSession(r) != nil 82 + if !release.Visible && !authorised { 83 + http.NotFound(w, r) 84 + return 85 + } 86 + 74 87 tracks := []gatewayTrack{} 75 88 for i, track := range release.Tracks { 76 89 tracks = append([]gatewayTrack{{ ··· 80 93 }}, tracks...) 81 94 } 82 95 83 - // only allow authorised users to view unreleased releases 84 - authorised := admin.GetSession(r) != nil 85 - if !release.IsReleased() && !authorised { 86 - admin.MustAuthorise(ServeGateway()).ServeHTTP(w, r) 87 - return 88 - } 89 - 90 96 lrw := global.LoggingResponseWriter{ResponseWriter: w, Code: http.StatusOK} 91 97 92 - global.ServeTemplate("music-gateway.html", gatewayRelease{release, tracks}).ServeHTTP(&lrw, r) 98 + global.ServeTemplate("music-gateway.html", gatewayRelease{release, tracks, authorised}).ServeHTTP(&lrw, r) 93 99 94 100 if lrw.Code != http.StatusOK { 95 101 fmt.Printf("Error rendering music gateway for %s\n", id)
+10 -25
views/music-gateway.html
··· 57 57 <span id="year" title="{{.PrintReleaseDate}}">{{.GetReleaseYear}}</span> 58 58 </div> 59 59 <p id="artist">{{.PrintArtists true true}}</p> 60 + {{if .IsReleased}} 60 61 <p id="type" class="{{.ReleaseType}}">{{.ReleaseType}}</p> 62 + {{else}} 63 + <p id="type" class="upcoming">upcoming</p> 64 + {{end}} 61 65 62 66 <ul id="links"> 63 67 {{if .Buylink}} ··· 81 85 82 86 <button id="share">share</button> 83 87 </div> 88 + 89 + {{if .IsReleased}} 84 90 85 91 {{if .Credits}} 86 92 <div id="credits"> ··· 121 127 {{end}} 122 128 </div> 123 129 {{end}} 130 + 131 + {{end}} 124 132 </div> 125 133 134 + {{if .IsReleased}} 126 135 <div id="extras"> 127 136 <ul> 128 137 <li><a href="#overview">overview</a></li> 129 - 130 138 {{if .Credits}} 131 139 <li><a href="#credits">credits</a></li> 132 140 {{end}} ··· 141 149 {{end}} 142 150 </ul> 143 151 </div> 144 - <!-- <div id="tracks"> --> 145 - <!-- <% var file = `/audio/preview/${data.id}.webm` %> --> 146 - <!-- <% if (data.tracks && typeof(data.tracks) == typeof([])) { %> --> 147 - <!-- <% for( let i = 0; i < data.tracks.length; i++ ) { %> --> 148 - <!-- <% --> 149 - <!-- songid = data.tracks[i].title.toLowerCase().replace(/[^a-z0-9]/g, ""); --> 150 - <!-- file = `/audio/preview/${data.id}-${songid}.webm`; --> 151 - <!-- %> --> 152 - <!----> 153 - <!-- <div class="track-preview" id="preview-<%= songid %>"> --> 154 - <!-- <i class="fa-solid fa-play play"></i> --> 155 - <!-- <p><%= data.tracks[i].title %></p> --> 156 - <!-- <audio src="<%= file %>"></audio> --> 157 - <!-- </div> --> 158 - <!----> 159 - <!-- <% } %> --> 160 - <!-- <% } else { %> --> 161 - <!-- <div class="track-preview" id="preview-<%= data.id %>"> --> 162 - <!-- <i class="fa-solid fa-play play"></i> --> 163 - <!-- <p>{{.Title}}</p> --> 164 - <!-- <audio src="<%= file %>"></audio> --> 165 - <!-- </div> --> 166 - <!-- <% } %> --> 167 - <!-- </div> --> 152 + {{end}} 168 153 </div> 169 154 </main> 170 155 {{end}}