Feed insertions and other feed stuff

This commit is contained in:
Melody Becker 2025-07-07 12:41:08 +02:00
parent 72e1c67488
commit 5232bb0741
Signed by: mstar
SSH key fingerprint: SHA256:9VAo09aaVNTWKzPW7Hq2LW+ox9OdwmTSHRoD4mlz1yI
7 changed files with 134 additions and 8 deletions

View file

@ -24,22 +24,29 @@ type Server struct {
func New(addr string) *Server {
handler := http.NewServeMux()
handler.HandleFunc("GET /non-deleted", getNonDeletedUsers)
handler.HandleFunc("POST /local-user", createLocalUser)
handler.HandleFunc("GET /delete", deleteUser)
handler.HandleFunc("POST /post-as", postAs)
handler.HandleFunc("GET /notes-for", notesFrom)
handler.HandleFunc("GET /import-user", issueUserImport)
handler.HandleFunc("GET /keys-for", returnKeypair)
handler.HandleFunc("GET /import-server", importServerInfo)
handler.HandleFunc("GET /import-user", issueUserImport)
handler.HandleFunc("GET /request-follow", requestFollow)
handler.HandleFunc("POST /send-as", proxyMessageToTarget)
handler.HandleFunc("POST /follow", requestFollow)
handler.HandleFunc("POST /update-user", updateUser)
handler.HandleFunc("GET /non-deleted", getNonDeletedUsers)
handler.HandleFunc("GET /delete", deleteUser)
handler.HandleFunc("GET /notes-for", notesFrom)
handler.HandleFunc("GET /import-server", importServerInfo)
handler.HandleFunc("GET /replies-to/{id}", inReplyTo)
handler.HandleFunc("POST /fetch", requestAs)
handler.HandleFunc("POST /follow", requestFollow)
handler.HandleFunc("POST /like-note", likeNote)
handler.HandleFunc("POST /boost-note", boostNote)
handler.HandleFunc("GET /files-owned-by", getOwnedFiles)
handler.HandleFunc("POST /upload-file", uploadMedia)
handler.HandleFunc("/force-media-sync", forceMediaSync)
handler.HandleFunc("GET /files-owned-by", getOwnedFiles)
web := http.Server{
Addr: addr,
Handler: webutils.ChainMiddlewares(

View file

@ -448,3 +448,53 @@ func requestAs(w http.ResponseWriter, r *http.Request) {
body, _ := io.ReadAll(res.Body)
_, _ = fmt.Fprint(w, string(body))
}
func updateUser(w http.ResponseWriter, r *http.Request) {
type Inbound struct {
UserId string
Displayname *string
Description *string
RestrictedFollow *bool
}
log := hlog.FromRequest(r)
var data Inbound
err := json.NewDecoder(r.Body).Decode(&data)
if err != nil {
_ = webutils.ProblemDetailsStatusOnly(w, http.StatusBadRequest)
return
}
queryStart := dbgen.User.Where(dbgen.User.ID.Eq(data.UserId))
user, err := queryStart.First()
switch err {
case gorm.ErrRecordNotFound:
_ = webutils.ProblemDetailsStatusOnly(w, http.StatusNotFound)
return
case nil:
default:
log.Error().Err(err).Msg("Db error while trying to fetch user for updating")
_ = webutils.ProblemDetailsStatusOnly(w, http.StatusInternalServerError)
return
}
updateNeeded := false
if data.Displayname != nil {
user.DisplayName = *data.Displayname
updateNeeded = true
}
if data.Description != nil {
user.Description = *data.Description
updateNeeded = true
}
if data.RestrictedFollow != nil {
user.RestrictedFollow = *data.RestrictedFollow
updateNeeded = true
}
if !updateNeeded {
return
}
err = queryStart.Save(user)
if err != nil {
log.Error().Err(err).Msg("Failed to update user with new data")
_ = webutils.ProblemDetailsStatusOnly(w, http.StatusInternalServerError)
return
}
}