<?php namespace Activitypub\Rest; /** * Custom (hopefully temporary) ActivityPub Rest Server * * @author Matthias Pfefferle */ class Server extends \WP_REST_Server { /** * Overwrite dispatch function to quick fix missing subtype featur * * @see https://core.trac.wordpress.org/ticket/49404 * * @param WP_REST_Request $request Request to attempt dispatching. * @return WP_REST_Response Response returned by the callback. */ public function dispatch( $request ) { $content_type = $request->get_content_type(); if ( ! $content_type ) { return parent::dispatch( $request ); } // check for content-sub-types like 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' if ( \preg_match( '/application\/([a-zA-Z+_-]+\+)json/', $content_type['value'] ) ) { $request->set_header( 'Content-Type', 'application/json' ); } // make request filterable $request = \apply_filters( 'activitypub_pre_dispatch_request', $request ); return parent::dispatch( $request ); } }