Subsonic: internet radio, chat, bookmarks, play queue, scanner status endpoints

This commit is contained in:
2026-08-23 00:21:13 -05:00
parent c6e0131984
commit d92a25b141
13 changed files with 682 additions and 2 deletions
+46
View File
@@ -0,0 +1,46 @@
package subsonic
import (
"time"
"git.noroutes.net/NoRoutes/vibetunes/internal/database"
)
func init() {
register("getChatMessages", handleGetChatMessages)
register("addChatMessage", handleAddChatMessage)
}
func handleGetChatMessages(rc *Context) *apiError {
since := time.Time{}
if ms := rc.Params.Int64("since", 0); ms > 0 {
since = time.UnixMilli(ms)
}
messages, err := database.ListChatMessagesSince(rc.Server.DB, since)
if err != nil {
return newError(ErrGeneric, err.Error())
}
out := &ChatMessages{}
for _, m := range messages {
out.ChatMessage = append(out.ChatMessage, ChatMessage{
Username: m.Username,
Time: m.CreatedAt.UnixMilli(),
Message: m.Message,
})
}
rc.Response = newResponse()
rc.Response.ChatMessages = out
return nil
}
func handleAddChatMessage(rc *Context) *apiError {
message, aerr := rc.Params.Required("message")
if aerr != nil {
return aerr
}
if err := database.AddChatMessage(rc.Server.DB, rc.User.ID, message); err != nil {
return newError(ErrGeneric, err.Error())
}
rc.Response = newResponse()
return nil
}