48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
package translators
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"git.mstar.dev/mstar/linstrom/config"
|
|
"git.mstar.dev/mstar/linstrom/storage-new/dbgen"
|
|
"git.mstar.dev/mstar/linstrom/storage-new/models"
|
|
)
|
|
|
|
type ActivityAcceptOut struct {
|
|
Context any `json:"@context,omitempty"`
|
|
Id string `json:"id"`
|
|
Type string `json:"type"`
|
|
Actor string `json:"actor"`
|
|
Object any `json:"object"`
|
|
}
|
|
|
|
func AcceptFromStorage(ctx context.Context, id string) (*ActivityAcceptOut, error) {
|
|
a := dbgen.Activity
|
|
activity, err := a.Where(a.Id.Eq(id), a.Type.Eq(string(models.ActivityAccept))).First()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
// switch activity.ObjectType {
|
|
// case models.ActivitystreamsActivityTargetFollow:
|
|
// default:
|
|
// return nil, errors.New("unknown activity target type")
|
|
// }
|
|
follow, err := FollowFromStorage(ctx, activity.ObjectId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var outId string
|
|
if strings.HasPrefix(id, "http") {
|
|
outId = id
|
|
} else {
|
|
outId = fmt.Sprintf("%s/api/activitypub/activity/accept/%s", config.GlobalConfig.General.GetFullPublicUrl(), id)
|
|
}
|
|
return &ActivityAcceptOut{
|
|
Id: outId,
|
|
Actor: follow.Object.(string),
|
|
Type: "Accept",
|
|
Object: follow,
|
|
}, nil
|
|
}
|