58 lines
1.7 KiB
Go
58 lines
1.7 KiB
Go
package translators
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.mstar.dev/mstar/linstrom/config"
|
|
"git.mstar.dev/mstar/linstrom/storage-new/dbgen"
|
|
"git.mstar.dev/mstar/linstrom/storage-new/models"
|
|
)
|
|
|
|
type ActivityCreate struct {
|
|
Context any `json:"@context,omitempty"`
|
|
Id string `json:"id"`
|
|
Type string `json:"type"`
|
|
Actor string `json:"actor"`
|
|
Object any `json:"object"`
|
|
}
|
|
|
|
// Find a create activity from the db and format it for activitypub reads
|
|
// Does not set the context for the activity, in case the activity is embedded
|
|
// in another activity or object. That's the responsibility of the handler
|
|
// getting the final result
|
|
func CreateFromStorage(ctx context.Context, id string) (*ActivityCreate, error) {
|
|
// log := log.Ctx(ctx)
|
|
a := dbgen.Activity
|
|
activity, err := a.Where(a.Type.Eq(string(models.ActivityCreate))).
|
|
Where(a.Id.Eq(id)).
|
|
First()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
switch models.ActivitystreamsActivityTargetType(activity.ObjectType) {
|
|
case models.ActivitystreamsActivityTargetNote:
|
|
note, err := NoteFromStorage(ctx, activity.ObjectId)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
out := ActivityCreate{
|
|
Id: config.GlobalConfig.General.GetFullPublicUrl() + "/api/activitypub/create/" + id,
|
|
Type: "Create",
|
|
Actor: note.AttributedTo,
|
|
Object: note,
|
|
}
|
|
return &out, nil
|
|
case models.ActivitystreamsActivityTargetBoost:
|
|
panic("Not implemented")
|
|
case models.ActivitystreamsActivityTargetReaction:
|
|
panic("Not implemented")
|
|
case models.ActivitystreamsActivityTargetActivity:
|
|
panic("Not implemented")
|
|
case models.ActivitystreamsActivityTargetUser:
|
|
panic("Not implemented")
|
|
case models.ActivitystreamsActivityTargetUnknown:
|
|
panic("Not implemented")
|
|
default:
|
|
panic("Not implemented")
|
|
}
|
|
}
|