mirror of
1
Fork 0

reviewed current work

This commit is contained in:
Michael Jerger 2023-12-06 18:32:26 +01:00
parent 02dc8901af
commit 28a290da10
2 changed files with 10 additions and 4 deletions

View File

@ -126,6 +126,7 @@ func removeEmptyStrings(ls []string) []string {
return rs return rs
} }
// TODO: This parsing is very Person-Specific. We should adjust the name & move to a better location (maybe forgefed package?)
func ParseActorID(unvalidatedIRI, source string) (ActorID, error) { func ParseActorID(unvalidatedIRI, source string) (ActorID, error) {
if unvalidatedIRI == "" { if unvalidatedIRI == "" {
return ActorID{}, fmt.Errorf("the given IRI was empty") return ActorID{}, fmt.Errorf("the given IRI was empty")

View File

@ -94,12 +94,16 @@ func searchUsersByPerson(actorId string) ([]*user_model.User, error) {
func getPersonByRest(remoteStargazer, starReceiver string, ctx *context.APIContext) (ap.Person, error) { func getPersonByRest(remoteStargazer, starReceiver string, ctx *context.APIContext) (ap.Person, error) {
client, err := api.NewClient(ctx, actionsUser, starReceiver) // The star receiver signs the http get request // TODO: The star receiver signs the http get request will maybe not work.
// The remote repo has probably diferent keys as the local one.
// Why should we use a signed request here at all?
client, err := api.NewClient(ctx, actionsUser, starReceiver)
if err != nil { if err != nil {
return ap.Person{}, err return ap.Person{}, err
} }
// get_person_by_rest // get_person_by_rest
// TODO: I would expect this to be encapsulated in Get function. As Get never has a body.
bytes := []byte{0} // no body needed for getting user actor bytes := []byte{0} // no body needed for getting user actor
response, err := client.Get(bytes, remoteStargazer) response, err := client.Get(bytes, remoteStargazer)
if err != nil { if err != nil {
@ -237,16 +241,19 @@ func RepositoryInbox(ctx *context.APIContext) {
// senderActorId holds the data to construct the sender of the star // senderActorId holds the data to construct the sender of the star
log.Info("activity.Actor.GetID().String(): %v", activity.Actor.GetID().String()) log.Info("activity.Actor.GetID().String(): %v", activity.Actor.GetID().String())
senderActorId, err := activitypub.ParseActorID(activity.Actor.GetID().String(), string(activity.Source)) senderActorId, err := activitypub.ParseActorID(activity.Actor.GetID().String(), string(activity.Source))
// TODO: Why have we to check error here & in case of PanicIfInvalid? Seems to be doubled ...
if err != nil { if err != nil {
panic(err) panic(err)
} }
// TODO: We dont need the repo-id here any more as we resolve repo outside (see line 224)
receivedRepoId, err := activitypub.ParseActorID(activity.Activity.Object.GetID().String(), string(activity.Source)) receivedRepoId, err := activitypub.ParseActorID(activity.Activity.Object.GetID().String(), string(activity.Source))
if err != nil { if err != nil {
panic(err) panic(err)
} }
// validate receiverActorId against context repo // validate receiverActorId against context repo
// TODO: makes no sense as we load the repo from the given id already.
repositoryID := ctx.Repo.Repository.ID repositoryID := ctx.Repo.Repository.ID
if repositoryID != int64(receivedRepoId.GetUserId()) { if repositoryID != int64(receivedRepoId.GetUserId()) {
panic( panic(
@ -265,9 +272,7 @@ func RepositoryInbox(ctx *context.APIContext) {
log.Info("starReceiver: %v", starReceiver) log.Info("starReceiver: %v", starReceiver)
// Check if user already exists // Check if user already exists
// TODO: If we where able to search for federated id there would be no need to get the remote person. // TODO: If the usesrs-id points to our current host, we've to use an alterantive search ...
// N.B. We need the username as a display name from the remote host. This requires us to make another request
// We might extend the Star Activity by the username, then this request would become redundant
users, err := searchUsersByPerson(remoteStargazer) users, err := searchUsersByPerson(remoteStargazer)
if err != nil { if err != nil {
panic(fmt.Errorf("searching for user failed: %v", err)) panic(fmt.Errorf("searching for user failed: %v", err))