AUTHORIZE => PREPARE => RESPOND. * If an exception arises in any stage, then the sequence is aborted and the EXCEPTION * event is dispatched. * * Event subscribers which are concerned about the order of execution should assign * a weight to their subscription (such as W_EARLY, W_MIDDLE, or W_LATE). */ class Events { /** * Determine whether the API request is allowed for the current user. * For successful execution, at least one listener must invoke $event->authorize(). * * @see AuthorizeEvent */ const AUTHORIZE = 'api.authorize'; /** * Determine which API provider executes the given request. For successful * execution, at least one listener must invoke $event->setProvider($provider). * * @see ResolveEvent */ const RESOLVE = 'api.resolve'; /** * Apply pre-execution logic * * @see PrepareEvent */ const PREPARE = 'api.prepare'; /** * Apply post-execution logic * * @see RespondEvent */ const RESPOND = 'api.respond'; /** * Handle any exceptions * * @see ExceptionEvent */ const EXCEPTION = 'api.exception'; /** * Weight - Early */ const W_EARLY = 100; /** * Weight - Middle */ const W_MIDDLE = 0; /** * Weight - Late */ const W_LATE = -100; /** * @return array */ public static function allEvents() { return array( self::AUTHORIZE, self::EXCEPTION, self::PREPARE, self::RESOLVE, self::RESPOND, ); } }