/** * Make an API Dispatcher. * * @return \ITELIC\API\Dispatch */ public function make() { $dispatch = new Dispatch(); $dispatch->set_responder(new JSON_Responder()); /** * Filter the API dispatcher. * * If the filtered dispatcher is not a subclass of \ITELIC\API\Dispatch, * the original dispatcher will be used. * * @since 1.0 * * @param \ITELIC\API\Dispatch $dispatch */ $filtered = apply_filters('itelic_api_dispatcher', $dispatch); if ($filtered instanceof Dispatch) { $dispatch = $filtered; } $dispatch->setLogger(new Logger(new Table('itelic-api-logs'), new Simple_Query($GLOBALS['wpdb'], new Table('itelic-api-logs')))); /** * Fires when custom API endpoints should be registered with the dispatcher. * * @since 1.0 * * @param \ITELIC\API\Dispatch $dispatch */ do_action('itelic_api_register_endpoints', $dispatch); return $dispatch; }
/** * Generate a download link for an activation record. * * @internal * * @since 1.0 * * @param Activation $activation * * @return string */ function generate_download_link(Activation $activation) { $now = make_date_time(); $interval = new \DateInterval('P1D'); /** * Filter the expiration interval for a download link. * * @since 1.0 * * @param \DateInterval $interval * @param Activation $activation */ $filtered = apply_filters('itelic_download_link_expiration_interval', $interval, $activation); if ($filtered instanceof \DateInterval) { $interval = $filtered; } $expires = $now->add($interval); $args = generate_download_query_args($activation, $expires); $download_ep = Dispatch::get_url('download'); $link = add_query_arg($args, $download_ep); /** * Filters the download link for an activation. * * Download links are specific to activations, not products. * This allows for pausing releases, and pre-release tracks. * * If you are going to override the download link, you need * to be able dynamically serve the download based on the current * state of the releases, and the activation track. * * @since 1.0 * * @param string $link * @param Activation $activation */ $link = apply_filters('itelic_generate_download_link', $link, $activation); return $link; }