Skip to content

Commit

Permalink
added ability to change the base REST API prefix
Browse files Browse the repository at this point in the history
  • Loading branch information
petenelson committed Apr 17, 2016
1 parent bac99f9 commit 2c3f660
Show file tree
Hide file tree
Showing 8 changed files with 158 additions and 44 deletions.
9 changes: 5 additions & 4 deletions README.md
Expand Up @@ -47,17 +47,18 @@ Have any questions? We can answer them here?
## Changelog ##

### 1.1.0 April 16, 2016 ###
* Added support to remove specific core endpoints
* Added JSONP
* Change REST API prefix
* Remove specific core endpoints
* Disable JSONP

### 1.0.0 April 15, 2016 ###
* Initial release

## Upgrade Notice ##

### 1.1.0 April 16, 2016 ###
* Added support to remove specific core endpoints
* Added JSONP
* Remove specific core endpoints
* Disable JSONP

### 1.0.0 April 15, 2016 ###
* Initial release
17 changes: 17 additions & 0 deletions includes/class-rest-api-toolbox-base.php
@@ -0,0 +1,17 @@
<?php

if ( ! defined( 'ABSPATH' ) ) die( 'restricted access' );

if ( ! class_exists( 'REST_API_Toolbox_Base' ) ) {

class REST_API_Toolbox_Base {

var $settings;

public function __construct() {
$this->settings = new REST_API_Toolbox_Settings();
}

}

}
25 changes: 25 additions & 0 deletions includes/class-rest-api-toolbox-prefix.php
@@ -0,0 +1,25 @@
<?php

if ( ! defined( 'ABSPATH' ) ) die( 'restricted access' );

if ( ! class_exists( 'REST_API_Toolbox_Prefix' ) ) {

class REST_API_Toolbox_Prefix extends REST_API_Toolbox_Base {

public function plugins_loaded() {

add_filter( 'rest_url_prefix', array( $this, 'change_url_prefix' ), 100 );

}

public function change_url_prefix( $prefix ) {

$custom_prefix = $this->settings->setting_get( 'general', 'rest-api-prefix' );
$prefix = ! empty( $custom_prefix ) ? $custom_prefix : $prefix;

return $prefix;
}

}

}
5 changes: 3 additions & 2 deletions includes/class-rest-api-toolbox-settings.php
Expand Up @@ -222,7 +222,7 @@ public function setting_is_enabled( $key, $setting ) {
}


public function setting_get( $key, $setting, $value ) {
public function setting_get( $key, $setting, $value = '' ) {

$args = wp_parse_args( get_option( $this->options_key( $key ) ),
array(
Expand Down Expand Up @@ -391,7 +391,8 @@ public function options_page() {

$settings_updated = filter_input( INPUT_GET, 'settings-updated', FILTER_SANITIZE_STRING );
if ( ! empty( $settings_updated ) ) {
do_action( 'rest-api-toolbox-flush-sizes-transient' );
do_action( 'rest-api-toolbox-settings-updated' );
flush_rewrite_rules();
}

}
Expand Down
84 changes: 52 additions & 32 deletions languages/rest-api-toolbox.pot
Expand Up @@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: REST API Toolbox 1.0.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/rest-api-toolbox\n"
"POT-Creation-Date: 2016-04-15 23:56:33+00:00\n"
"POT-Creation-Date: 2016-04-17 00:23:57+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
Expand Down Expand Up @@ -40,84 +40,104 @@ msgid "Twitter"
msgstr ""

#: admin/partials/admin-help.php:11
msgid "WordPress Repo"
msgstr ""

#: admin/partials/admin-help.php:12
#: release/rest-api-toolbox/admin/partials/admin-help.php:11
msgid "GitHub"
msgstr ""

#: includes/class-rest-api-toolbox-common.php:42
#: includes/class-rest-api-toolbox-common.php:81
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-common.php:42
msgid "SSL is required to access the REST API"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:43
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:49
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:43
msgid ""
"<strong>REST API Toolbox activated!</strong> Please <a href=\"%s\">visit "
"the Settings page</a> to customize the settings."
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:67
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:73
msgid "General"
#: includes/class-rest-api-toolbox-settings.php:77
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:75
msgid "Disable REST API"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:75
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:81
msgid "Disable REST API"
#: includes/class-rest-api-toolbox-settings.php:80
msgid "Disable JSONP Support"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:83
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:89
msgid "Core"
msgid "REST API Prefix"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:91
msgid "Remove All WordPress Core Routes"
#: includes/class-rest-api-toolbox-settings.php:88
msgid "Custom prefix, default is wp-json"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:99
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:105
msgid "SSL"
#: includes/class-rest-api-toolbox-settings.php:105
msgid "Remove All WordPress Core Endpoints"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:113
msgid "Remove Endpoint: %s"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:107
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:113
#: includes/class-rest-api-toolbox-settings.php:134
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:107
msgid "Require SSL"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:132
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:138
#: includes/class-rest-api-toolbox-settings.php:163
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:132
msgid "Help"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:286
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:292
#: includes/class-rest-api-toolbox-settings.php:213
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:67
msgid "General"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:214
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:83
msgid "Core"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:215
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:99
msgid "SSL"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:354
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:286
msgid "Yes"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:287
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:293
#: includes/class-rest-api-toolbox-settings.php:355
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:287
msgid "No"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:303
#: includes/class-rest-api-toolbox-settings.php:340
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:309
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:346
#: includes/class-rest-api-toolbox-settings.php:371
#: includes/class-rest-api-toolbox-settings.php:409
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:303
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:340
msgid "Settings"
msgstr ""

#. Plugin Name of the plugin/theme
msgid "REST API Toolbox"
msgstr ""

#: includes/class-rest-api-toolbox-settings.php:317
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:323
#: includes/class-rest-api-toolbox-settings.php:385
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:317
msgid "Save Changes"
msgstr ""

#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:97
msgid "Remove All WordPress Core Endpoints"
#: release/rest-api-toolbox/includes/class-rest-api-toolbox-settings.php:91
msgid "Remove All WordPress Core Routes"
msgstr ""

#. Plugin URI of the plugin/theme
Expand Down
9 changes: 5 additions & 4 deletions readme.txt
Expand Up @@ -39,17 +39,18 @@ Have any questions? We can answer them here?
== Changelog ==

= 1.1.0 April 16, 2016 =
* Added support to remove specific core endpoints
* Added JSONP
* Change REST API prefix
* Remove specific core endpoints
* Disable JSONP

= 1.0.0 April 15, 2016 =
* Initial release

== Upgrade Notice ==

= 1.1.0 April 16, 2016 =
* Added support to remove specific core endpoints
* Added JSONP
* Remove specific core endpoints
* Disable JSONP

= 1.0.0 April 15, 2016 =
* Initial release
15 changes: 13 additions & 2 deletions rest-api-toolbox.php
Expand Up @@ -21,7 +21,14 @@ function define_constants() {
}

function get_required_files() {
$include_files = array( 'common', 'i18n', 'settings' );
$include_files = array(
'base',
'common',
'prefix',
'i18n',
'settings'
);

$files = array();
foreach ( $include_files as $include_file ) {
$files[] = REST_API_TOOLBOX_ROOT . 'includes/class-rest-api-toolbox-' . $include_file . '.php';
Expand All @@ -31,7 +38,9 @@ function get_required_files() {

function get_class_names() {
return array(
'REST_API_Toolbox_Base',
'REST_API_Toolbox_Common',
'REST_API_Toolbox_Prefix',
'REST_API_Toolbox_i18n',
'REST_API_Toolbox_Settings',
);
Expand All @@ -57,7 +66,9 @@ function require_files( $files ) {
}

foreach ( $classes as $class ) {
add_action( 'plugins_loaded', array( $class, 'plugins_loaded' ) );
if ( method_exists( $class, 'plugins_loaded' ) ) {
add_action( 'plugins_loaded', array( $class, 'plugins_loaded' ) );
}
if ( method_exists( $class, 'activation_hook' ) ) {
register_activation_hook( __FILE__, array( $class, 'activation_hook' ) );
}
Expand Down
38 changes: 38 additions & 0 deletions tests/test-prefix.php
@@ -0,0 +1,38 @@
<?php

class REST_API_Toolbox_Test_Prefix extends REST_API_Toolbox_Test_Base {

function test_changed_prefix() {

$settings = new REST_API_Toolbox_Settings();
$settings->change_setting( 'general', 'rest-api-prefix', 'hello-world' );

$this->assertEquals( 'hello-world', $settings->setting_get( 'general', 'rest-api-prefix' ) );

$this->assertEquals( 'hello-world', rest_get_url_prefix() );

}

function test_unchanged_prefix() {

$settings = new REST_API_Toolbox_Settings();
$settings->change_setting( 'general', 'rest-api-prefix', '' );

$this->assertEquals( '', $settings->setting_get( 'general', 'rest-api-prefix' ) );

$this->assertEquals( 'wp-json', rest_get_url_prefix() );

}

function test_sanitized_prefix() {

$settings = new REST_API_Toolbox_Settings();
$settings->change_setting( 'general', 'rest-api-prefix', 'he||o /world<' ); // invalid URL, will be sanitized

$this->assertEquals( 'heo-world', $settings->setting_get( 'general', 'rest-api-prefix' ) );

$this->assertEquals( 'heo-world', rest_get_url_prefix() );

}

}

0 comments on commit 2c3f660

Please sign in to comment.