summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php')
-rw-r--r--plugins/jetpack/vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php80
1 files changed, 80 insertions, 0 deletions
diff --git a/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php b/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php
new file mode 100644
index 00000000..813f5e95
--- /dev/null
+++ b/plugins/jetpack/vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php
@@ -0,0 +1,80 @@
+<?php
+/**
+ * Sets up the Connection XML-RPC methods.
+ *
+ * @package automattic/jetpack-connection
+ */
+
+namespace Automattic\Jetpack\Connection;
+
+/**
+ * Registers the XML-RPC methods for Connections.
+ */
+class XMLRPC_Connector {
+ /**
+ * The Connection Manager.
+ *
+ * @var Manager
+ */
+ private $connection;
+
+ /**
+ * Constructor.
+ *
+ * @param Manager $connection The Connection Manager.
+ */
+ public function __construct( Manager $connection ) {
+ $this->connection = $connection;
+
+ // Adding the filter late to avoid being overwritten by Jetpack's XMLRPC server.
+ add_filter( 'xmlrpc_methods', array( $this, 'xmlrpc_methods' ), 20 );
+ }
+
+ /**
+ * Attached to the `xmlrpc_methods` filter.
+ *
+ * @param array $methods The already registered XML-RPC methods.
+ * @return array
+ */
+ public function xmlrpc_methods( $methods ) {
+ return array_merge(
+ $methods,
+ array(
+ 'jetpack.verifyRegistration' => array( $this, 'verify_registration' ),
+ )
+ );
+ }
+
+ /**
+ * Handles verification that a site is registered.
+ *
+ * @param array $registration_data The data sent by the XML-RPC client:
+ * [ $secret_1, $user_id ].
+ *
+ * @return string|IXR_Error
+ */
+ public function verify_registration( $registration_data ) {
+ return $this->output( $this->connection->handle_registration( $registration_data ) );
+ }
+
+ /**
+ * Normalizes output for XML-RPC.
+ *
+ * @param mixed $data The data to output.
+ */
+ private function output( $data ) {
+ if ( is_wp_error( $data ) ) {
+ $code = $data->get_error_data();
+ if ( ! $code ) {
+ $code = -10520;
+ }
+
+ return new \IXR_Error(
+ $code,
+ sprintf( 'Jetpack: [%s] %s', $data->get_error_code(), $data->get_error_message() )
+ );
+ }
+
+ return $data;
+ }
+}