(env *Env, w http.ResponseWriter, r *http.Request)
| 28 | |
| 29 | type InboxController struct { |
| 30 | db *gorm.DB |
| 31 | } |
| 32 | |
| 33 | func (i *InboxController) Create(env *Env, w http.ResponseWriter, r *http.Request) error { |
| 34 | instance, err := i.findInstance(r.Host) |
| 35 | if err != nil { |
| 36 | return err |
| 37 | } |
| 38 | |
| 39 | var act Activity |
| 40 | if err := json.UnmarshalFull(r.Body, &act); err != nil { |
| 41 | return httpx.Error(http.StatusBadRequest, err) |
| 42 | } |
| 43 | |
| 44 | // if we need to make an activity pub request, we need to sign it with the |
| 45 | // instance's admin account. |
| 46 | processor := &inboxProcessor{ |
| 47 | logger: env.Logger.With("instance", instance.Domain), |
| 48 | req: r, |
| 49 | db: i.db, |
| 50 | signAs: instance.Admin, |
| 51 | } |
| 52 | |
| 53 | if err := processor.processActivity(&act); err != nil { |
| 54 | return fmt.Errorf("processActivity failed: %s: %w ", act.ID, err) |
| 55 | } |
| 56 | w.WriteHeader(http.StatusAccepted) |
| 57 | return nil |
nothing calls this directly
no test coverage detected