Subsonic: internet radio, chat, bookmarks, play queue, scanner status endpoints
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user