aboutsummaryrefslogtreecommitdiff
path: root/app/serializers
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-05-11 11:49:12 +0200
committerGitHub <noreply@github.com>2018-05-11 11:49:12 +0200
commitb4fb766b23f4b50b51a366f55b451770ece3153a (patch)
treef3089da3ee1d3d937525a227136a739a451caad9 /app/serializers
parent9a794067f77d936783736574640b1238bb8e6b18 (diff)
downloadmastodon-b4fb766b23f4b50b51a366f55b451770ece3153a.tar
mastodon-b4fb766b23f4b50b51a366f55b451770ece3153a.tar.gz
mastodon-b4fb766b23f4b50b51a366f55b451770ece3153a.tar.bz2
mastodon-b4fb766b23f4b50b51a366f55b451770ece3153a.zip
Add REST API for Web Push Notifications subscriptions (#7445)
- POST /api/v1/push/subscription - PUT /api/v1/push/subscription - DELETE /api/v1/push/subscription - New OAuth scope: "push" (required for the above methods)
Diffstat (limited to 'app/serializers')
-rw-r--r--app/serializers/initial_state_serializer.rb4
-rw-r--r--app/serializers/rest/web_push_subscription_serializer.rb13
-rw-r--r--app/serializers/web/notification_serializer.rb2
3 files changed, 17 insertions, 2 deletions
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index 3b908e224..6c9fba2f5 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -2,7 +2,9 @@
class InitialStateSerializer < ActiveModel::Serializer
attributes :meta, :compose, :accounts,
- :media_attachments, :settings, :push_subscription
+ :media_attachments, :settings
+
+ has_one :push_subscription, serializer: REST::WebPushSubscriptionSerializer
def meta
store = {
diff --git a/app/serializers/rest/web_push_subscription_serializer.rb b/app/serializers/rest/web_push_subscription_serializer.rb
new file mode 100644
index 000000000..7fd952a56
--- /dev/null
+++ b/app/serializers/rest/web_push_subscription_serializer.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class REST::WebPushSubscriptionSerializer < ActiveModel::Serializer
+ attributes :id, :endpoint, :alerts, :server_key
+
+ def alerts
+ object.data&.dig('alerts') || {}
+ end
+
+ def server_key
+ Rails.configuration.x.vapid_public_key
+ end
+end
diff --git a/app/serializers/web/notification_serializer.rb b/app/serializers/web/notification_serializer.rb
index e5524fe7a..31c703832 100644
--- a/app/serializers/web/notification_serializer.rb
+++ b/app/serializers/web/notification_serializer.rb
@@ -54,7 +54,7 @@ class Web::NotificationSerializer < ActiveModel::Serializer
def access_token
return if actions.empty?
- current_push_subscription.access_token
+ current_push_subscription.associated_access_token
end
def message