WordPress.org

Making WordPress.org

Ticket #1597: 1597.diff

File 1597.diff, 3.0 KB (added by pento, 5 years ago)
  • api/class-base.php

     
    1111         * Initialises each API route we offer.
    1212         */
    1313        static function load_routes() {
     14                new Routes\Commit_Subscriptions();
    1415                new Routes\Internal_Stats();
    1516                new Routes\Plugin();
    1617                new Routes\Popular_Categories();
  • api/routes/class-commit-subscriptions.php

     
     1<?php
     2namespace WordPressdotorg\Plugin_Directory\API\Routes;
     3use WordPressdotorg\Plugin_Directory\Plugin_Directory;
     4use WordPressdotorg\Plugin_Directory\API\Base;
     5
     6/**
     7 * An API endpoint for subscribing to commits for a particular plugin.
     8 *
     9 * @package WordPressdotorg_Plugin_Directory
     10 */
     11class Commit_Subscriptions extends Base {
     12
     13        public function __construct() {
     14                register_rest_route( 'plugins/v1', '/plugin/(?P<plugin_slug>[^/]+)/commit-subscribe?', array(
     15                        'methods'  => \WP_REST_Server::READABLE,
     16                        'callback' => array( $this, 'subscribe' ),
     17                        'args' => array(
     18                                'plugin_slug' => array(
     19                                        'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
     20                                ),
     21                                'subscribe' => array(
     22                                        'validate_callback' => 'is_bool',
     23                                ),
     24                                'unsubscribe' => array(
     25                                        'validate_callback' => 'is_bool',
     26                                ),
     27                        ),
     28                        'permission_callback' => 'is_user_logged_in'
     29                ) );
     30
     31                register_rest_route( 'plugins/v1', '/plugin/(?P<plugin_slug>[^/]+)/commit-subscription?', array(
     32                        'methods'  => \WP_REST_Server::READABLE,
     33                        'callback' => array( $this, 'subscription_list' ),
     34                        'args' => array(
     35                                'plugin_slug' => array(
     36                                        'validate_callback' => array( $this, 'validate_plugin_slug_callback' ),
     37                                ),
     38                        ),
     39                ) );
     40        }
     41
     42        /**
     43         * Endpoint to subscribe to a plugin's commits.
     44         *
     45         * @param \WP_REST_Request $request The Rest API Request.
     46         * @return bool True if the subscription was successful.
     47         */
     48        public function subscribe( $request ) {
     49        }
     50
     51        /**
     52         * Endpoint to return the list of subscribers to a plugin.
     53         *
     54         * If the internal API key is passed, a full list is returned. If the user is logged
     55         * in, a list containing that user (if they're subscribed), or an empty list (if they're not)
     56         * is returned.
     57         *
     58         * @param \WP_REST_Request $request The Rest API Request.
     59         * @return array List of subscribed users
     60         */
     61        public function subscription_list( $request ) {
     62                $subscribers = array();
     63
     64                if ( $this->permission_check_internal_api_bearer( $request ) ) {
     65                        // This is an internal call, grab all subscribed users
     66                } elseif ( is_user_logged_in() ) {
     67                        // A logged in user can only check if they're subscribed
     68                }
     69
     70                return $subscribers;
     71        }
     72}