(app *App, w http.ResponseWriter, r *http.Request)
| 215 | } |
| 216 | |
| 217 | func handleFetchCollectionFollowers(app *App, w http.ResponseWriter, r *http.Request) error { |
| 218 | w.Header().Set("Server", serverSoftware) |
| 219 | |
| 220 | vars := mux.Vars(r) |
| 221 | alias := vars["alias"] |
| 222 | |
| 223 | // TODO: enforce visibility |
| 224 | // Get base Collection data |
| 225 | var c *Collection |
| 226 | var err error |
| 227 | if app.cfg.App.SingleUser { |
| 228 | c, err = app.db.GetCollectionByID(1) |
| 229 | } else { |
| 230 | c, err = app.db.GetCollection(alias) |
| 231 | } |
| 232 | if err != nil { |
| 233 | return err |
| 234 | } |
| 235 | silenced, err := app.db.IsUserSilenced(c.OwnerID) |
| 236 | if err != nil { |
| 237 | log.Error("fetch collection followers: %v", err) |
| 238 | return ErrInternalGeneral |
| 239 | } |
| 240 | if silenced { |
| 241 | return ErrCollectionNotFound |
| 242 | } |
| 243 | c.hostName = app.cfg.App.Host |
| 244 | |
| 245 | accountRoot := c.FederatedAccount() |
| 246 | |
| 247 | folls, err := app.db.GetAPFollowers(c) |
| 248 | if err != nil { |
| 249 | return err |
| 250 | } |
| 251 | |
| 252 | page := r.FormValue("page") |
| 253 | p, err := strconv.Atoi(page) |
| 254 | if err != nil || p < 1 { |
| 255 | // Return outbox |
| 256 | oc := activitystreams.NewOrderedCollection(accountRoot, "followers", len(*folls)) |
| 257 | return impart.RenderActivityJSON(w, oc, http.StatusOK) |
| 258 | } |
| 259 | |
| 260 | // Return outbox page |
| 261 | ocp := activitystreams.NewOrderedCollectionPage(accountRoot, "followers", len(*folls), p) |
| 262 | ocp.OrderedItems = []interface{}{} |
| 263 | /* |
| 264 | for _, f := range *folls { |
| 265 | ocp.OrderedItems = append(ocp.OrderedItems, f.ActorID) |
| 266 | } |
| 267 | */ |
| 268 | setCacheControl(w, apCacheTime) |
| 269 | return impart.RenderActivityJSON(w, ocp, http.StatusOK) |
| 270 | } |
| 271 | |
| 272 | func handleFetchCollectionFollowing(app *App, w http.ResponseWriter, r *http.Request) error { |
| 273 | w.Header().Set("Server", serverSoftware) |
nothing calls this directly
no test coverage detected