summaryrefslogtreecommitdiffstats
path: root/wp-includes/class-wp-http-requests-hooks.php
diff options
context:
space:
mode:
Diffstat (limited to 'wp-includes/class-wp-http-requests-hooks.php')
-rw-r--r--wp-includes/class-wp-http-requests-hooks.php79
1 files changed, 79 insertions, 0 deletions
diff --git a/wp-includes/class-wp-http-requests-hooks.php b/wp-includes/class-wp-http-requests-hooks.php
new file mode 100644
index 0000000..80e4eb7
--- /dev/null
+++ b/wp-includes/class-wp-http-requests-hooks.php
@@ -0,0 +1,79 @@
+<?php
+/**
+ * HTTP API: Requests hook bridge class
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 4.7.0
+ */
+
+/**
+ * Bridge to connect Requests internal hooks to WordPress actions.
+ *
+ * @since 4.7.0
+ *
+ * @see WpOrg\Requests\Hooks
+ */
+#[AllowDynamicProperties]
+class WP_HTTP_Requests_Hooks extends WpOrg\Requests\Hooks {
+ /**
+ * Requested URL.
+ *
+ * @var string Requested URL.
+ */
+ protected $url;
+
+ /**
+ * WordPress WP_HTTP request data.
+ *
+ * @var array Request data in WP_Http format.
+ */
+ protected $request = array();
+
+ /**
+ * Constructor.
+ *
+ * @param string $url URL to request.
+ * @param array $request Request data in WP_Http format.
+ */
+ public function __construct( $url, $request ) {
+ $this->url = $url;
+ $this->request = $request;
+ }
+
+ /**
+ * Dispatch a Requests hook to a native WordPress action.
+ *
+ * @param string $hook Hook name.
+ * @param array $parameters Parameters to pass to callbacks.
+ * @return bool True if hooks were run, false if nothing was hooked.
+ */
+ public function dispatch( $hook, $parameters = array() ) {
+ $result = parent::dispatch( $hook, $parameters );
+
+ // Handle back-compat actions.
+ switch ( $hook ) {
+ case 'curl.before_send':
+ /** This action is documented in wp-includes/class-wp-http-curl.php */
+ do_action_ref_array( 'http_api_curl', array( &$parameters[0], $this->request, $this->url ) );
+ break;
+ }
+
+ /**
+ * Transforms a native Request hook to a WordPress action.
+ *
+ * This action maps Requests internal hook to a native WordPress action.
+ *
+ * @see https://github.com/WordPress/Requests/blob/master/docs/hooks.md
+ *
+ * @since 4.7.0
+ *
+ * @param array $parameters Parameters from Requests internal hook.
+ * @param array $request Request data in WP_Http format.
+ * @param string $url URL to request.
+ */
+ do_action_ref_array( "requests-{$hook}", $parameters, $this->request, $this->url ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
+
+ return $result;
+ }
+}