Implement push subscription API

This commit is contained in:
Vyr Cossont 2024-11-30 20:13:06 -08:00
commit 8b9a228ea2
26 changed files with 2084 additions and 101 deletions

View file

@ -2997,3 +2997,34 @@ func (c *Converter) InteractionReqToAPIInteractionReq(
URI: req.URI,
}, nil
}
func (c *Converter) WebPushSubscriptionToAPIWebPushSubscription(
ctx context.Context,
subscription *gtsmodel.WebPushSubscription,
) (*apimodel.WebPushSubscription, error) {
vapidKeyPair, err := c.state.DB.GetVAPIDKeyPair(ctx)
if err != nil {
return nil, gtserror.Newf("error getting VAPID key pair: %w", err)
}
return &apimodel.WebPushSubscription{
ID: subscription.ID,
Endpoint: subscription.Endpoint,
ServerKey: vapidKeyPair.Public,
Alerts: apimodel.WebPushSubscriptionAlerts{
Follow: *subscription.NotifyFollow,
FollowRequest: *subscription.NotifyFollowRequest,
Favourite: *subscription.NotifyFavourite,
Mention: *subscription.NotifyMention,
Reblog: *subscription.NotifyReblog,
Poll: *subscription.NotifyPoll,
Status: *subscription.NotifyStatus,
Update: *subscription.NotifyUpdate,
AdminSignup: *subscription.NotifyAdminSignup,
AdminReport: *subscription.NotifyAdminReport,
PendingFavourite: *subscription.NotifyPendingFavourite,
PendingReply: *subscription.NotifyPendingReply,
PendingReblog: *subscription.NotifyPendingReblog,
},
}, nil
}