// Copyright 2024 The Forgejo Authors. All rights reserved. // SPDX-License-Identifier: MIT package federation import ( "context" "net/http" fm "code.gitea.io/gitea/modules/forgefed" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/validation" ) // ProcessLikeActivity receives a ForgeLike activity and does the following: // Validation of the activity // Creation of a (remote) federationHost if not existing // Creation of a forgefed Person if not existing // Validation of incoming RepositoryID against Local RepositoryID // Star the repo if it wasn't already stared // Do some mitigation against out of order attacks func ProcessLikeActivity(ctx context.Context, form any, repositoryID int64) (int, string, error) { activity := form.(*fm.ForgeLike) if res, err := validation.IsValid(activity); !res { return http.StatusNotAcceptable, "Invalid activity", err } log.Info("Activity validated:%v", activity) return 0, "", nil }