|
|
- module Mastodon
- class Ostatus < Grape::API
- format :txt
-
- before do
- @account = Account.find(params[:id])
- end
-
- resource :subscriptions do
- helpers do
- include ApplicationHelper
- end
-
- desc 'Receive updates from an account'
-
- params do
- requires :id, type: String, desc: 'Account ID'
- end
-
- post ':id' do
- body = request.body.read
-
- if @account.subscription(subscription_url(@account)).verify(body, env['HTTP_X_HUB_SIGNATURE'])
- ProcessFeedService.new.(body, @account)
- status 201
- else
- status 202
- end
- end
-
- desc 'Confirm PuSH subscription to an account'
-
- params do
- requires :id, type: String, desc: 'Account ID'
- requires 'hub.topic', type: String, desc: 'Topic URL'
- requires 'hub.verify_token', type: String, desc: 'Verification token'
- requires 'hub.challenge', type: String, desc: 'Hub challenge'
- end
-
- get ':id' do
- if @account.subscription(subscription_url(@account)).valid?(params['hub.topic'], params['hub.verify_token'])
- params['hub.challenge']
- else
- error! :not_found, 404
- end
- end
- end
-
- resource :salmon do
- desc 'Receive Salmon updates targeted to account'
-
- params do
- requires :id, type: String, desc: 'Account ID'
- end
-
- post ':id' do
- ProcessInteractionService.new.(request.body.read, @account)
- status 201
- end
- end
- end
- end
|