query_vars['aftership-api'] = $_GET['aftership-api']; if (!empty($_GET['aftership-api-route'])) $wp->query_vars['aftership-api-route'] = $_GET['aftership-api-route']; // REST API request if (!empty($wp->query_vars['aftership-api-route'])) { define('AFTERSHIP_API_REQUEST', true); // load required files $this->includes(); $this->server = new AfterShip_API_Server($wp->query_vars['aftership-api-route']); // load API resource classes $this->register_resources($this->server); // Fire off the request $this->server->serve_request(); exit; } // legacy API requests if (!empty($wp->query_vars['aftership-api'])) { // Buffer, we won't want any output here ob_start(); // Get API trigger $api = strtolower(esc_attr($wp->query_vars['aftership-api'])); // Load class if exists if (class_exists($api)) $api_class = new $api(); // Trigger actions do_action('woocommerce_api_' . $api); // Done, clear buffer and exit ob_end_clean(); die('1'); } } /** * Include required files for REST API request * * @since 2.1 */ private function includes() { // API server / response handlers include_once('api/class-aftership-api-server.php'); include_once('api/interface-aftership-api-handler.php'); include_once('api/class-aftership-api-json-handler.php'); // authentication include_once('api/class-aftership-api-authentication.php'); $this->authentication = new AfterShip_API_Authentication(); include_once('api/class-aftership-api-resource.php'); // self api include_once('api/class-aftership-api-orders.php'); // allow plugins to load other response handlers or resource classes do_action('woocommerce_api_loaded'); } /** * Register available API resources * * @since 2.1 * @param object $server the REST server */ public function register_resources($server) { $api_classes = apply_filters('aftership_api_classes', array( 'AfterShip_API_Orders', ) ); foreach ($api_classes as $api_class) { $this->$api_class = new $api_class($server); } } }