subhub/handlers/groups/get.go

42 lines
961 B
Go
Raw Permalink Normal View History

2019-09-07 14:54:53 +00:00
package groups
import (
"fmt"
"git.macaw.me/inhosin/subhub/activitypub"
"git.macaw.me/inhosin/subhub/data"
"git.macaw.me/inhosin/subhub/data/models"
"git.macaw.me/inhosin/subhub/handlers"
"github.com/gin-gonic/gin"
"net/http"
)
// Get returns a Group
//
// Expects a `{name}` url variable
// in the route: `/api/group/:name`
func Get(c *gin.Context) {
name := c.Param("name")
if name == "" {
c.String(http.StatusBadRequest, "Bad request! No name in URL")
return
}
group, err := models.GetGroup(data.GetDB(), name)
if err != nil {
c.String(http.StatusInternalServerError, err.Error())
return
}
if group == nil {
c.String(http.StatusNotFound, fmt.Sprintf("%s does not exits on server", name))
return
}
url := handlers.GetFullHostName() + "/activity/group/" + group.Slug
actor := activitypub.NewPerson(url)
actor.PreferredUsername = group.Name
actor.Name = group.Name
actor.Summary = group.Note
c.JSON(http.StatusOK, actor)
}