36 lines
		
	
	
		
			1020 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1020 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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 );
 | 
						|
	}
 | 
						|
}
 |