summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/_inc/lib/core-api/class.jetpack-core-api-site-endpoints.php')
-rw-r--r--plugins/jetpack/_inc/lib/core-api/class.jetpack-core-api-site-endpoints.php60
1 files changed, 60 insertions, 0 deletions
diff --git a/plugins/jetpack/_inc/lib/core-api/class.jetpack-core-api-site-endpoints.php b/plugins/jetpack/_inc/lib/core-api/class.jetpack-core-api-site-endpoints.php
new file mode 100644
index 00000000..68327f51
--- /dev/null
+++ b/plugins/jetpack/_inc/lib/core-api/class.jetpack-core-api-site-endpoints.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * This is the endpoint class for `/site` endpoints.
+ *
+ */
+class Jetpack_Core_API_Site_Endpoint {
+
+ /**
+ * Returns the result of `/sites/%s/features` endpoint call.
+ * @return object $features has 'active' and 'available' properties each of which contain feature slugs.
+ * 'active' is a simple array of slugs that are active on the current plan.
+ * 'available' is an object with keys that represent feature slugs and values are arrays
+ * of plan slugs that enable these features
+ */
+ public static function get_features() {
+
+ // Make the API request
+ $request = sprintf( '/sites/%d/features', Jetpack_Options::get_option( 'id' ) );
+ $response = Jetpack_Client::wpcom_json_api_request_as_blog( $request, '1.1' );
+
+ // Bail if there was an error or malformed response
+ if ( is_wp_error( $response ) || ! is_array( $response ) || ! isset( $response['body'] ) ) {
+ return new WP_Error(
+ 'failed_to_fetch_data',
+ esc_html__( 'Unable to fetch the requested data.', 'jetpack' ),
+ array( 'status' => 500 )
+ );
+ }
+
+ // Decode the results
+ $results = json_decode( $response['body'], true );
+
+ // Bail if there were no results or plan details returned
+ if ( ! is_array( $results ) ) {
+ return new WP_Error(
+ 'failed_to_fetch_data',
+ esc_html__( 'Unable to fetch the requested data.', 'jetpack' ),
+ array( 'status' => 500 )
+ );
+ }
+
+ return rest_ensure_response( array(
+ 'code' => 'success',
+ 'message' => esc_html__( 'Site features correctly received.', 'jetpack' ),
+ 'data' => wp_remote_retrieve_body( $response ),
+ )
+ );
+ }
+
+ /**
+ * Check that the current user has permissions to request information about this site.
+ *
+ * @since 5.1.0
+ *
+ * @return bool
+ */
+ public static function can_request() {
+ return current_user_can( 'jetpack_manage_modules' );
+ }
+}