Commit Graph

54 Commits

Author SHA1 Message Date
Rachel Baker
855c081931 REST API: Reverse order of setting sanitization/validation, validating prior to sanitizing.
Fixes mistake in the current behavior, where the sanitization callback ran before the validation callback. Now the validation callback will run before the sanitization.

Props schlessera, rachelbaker.
See #37247.
Fixes #37192.




git-svn-id: https://develop.svn.wordpress.org/trunk@37943 602fd350-edb4-49c9-b593-d223f7449a82
2016-07-02 23:02:45 +00:00
Rachel Baker
9e9adb0bfe REST API: Include auto-discovery Link header when serving API requests.
The Link header allows clients to verify if a site has made the REST API available, as well as indicating how to access it.

Props danielbachhuber.
Fixes #35580.




git-svn-id: https://develop.svn.wordpress.org/trunk@37903 602fd350-edb4-49c9-b593-d223f7449a82
2016-06-29 01:56:32 +00:00
Rachel Baker
7a4e523b5e REST API: Include X-Robots-Tag: noindex header in REST API responses to prevent endpoints from being indexed by search engines.
Prevent duplicate content issues with search engines and REST API endpoint response data.

Fixes #36390.
Props m_uysl for the initial patch.

git-svn-id: https://develop.svn.wordpress.org/trunk@37726 602fd350-edb4-49c9-b593-d223f7449a82
2016-06-16 14:58:28 +00:00
Peter Wilson
db0195c936 DOCS: Replace HTTP links with HTTPS.
Replaces unsecure links in documentation and translator comments with their secure versions.

Props johnpgreen, netweb

Fixes #36993


git-svn-id: https://develop.svn.wordpress.org/trunk@37674 602fd350-edb4-49c9-b593-d223f7449a82
2016-06-10 04:49:09 +00:00
Rachel Baker
25c3618138 REST API: Create the general wp_check_jsonp_callback() function for validating JSONP callback functions.
Move the REST API JSONP callback validation check into a separate function named `wp_check_jsonp_callback()`. This allows plugins to use the built-in validation when handling JSONP callbacks.
Extremely Important Note: If you send JSONP in your custom response, make sure you prefix the response with `/**/`. This will mitigate the Rosetta Flash exploit. You should also send the `X-Content-Type-Options:nosniff` header, or even better, use the REST API infrastructure.

Props rmccue.
Fixes #28523.

git-svn-id: https://develop.svn.wordpress.org/trunk@37646 602fd350-edb4-49c9-b593-d223f7449a82
2016-06-06 21:33:30 +00:00
Drew Jaynes
0aa4ec76ab Docs: Standardize hook docs in wp-includes/rest-api/* to use third-person singular verbs per the inline documentation standards for PHP.
See #36913.


git-svn-id: https://develop.svn.wordpress.org/trunk@37490 602fd350-edb4-49c9-b593-d223f7449a82
2016-05-22 18:07:31 +00:00
Drew Jaynes
195572596b Docs: Standardize on 'backward compatibility/compatible' nomenclature in core inline docs.
Also use 'back-compat' in some inline comments where backward compatibility is the subject and shorthand feels more natural.

Note: 'backwards compatibility/compatibile' can also be considered correct, though it's primary seen in regular use in British English.

Props ocean90.
Fixes #36835.


git-svn-id: https://develop.svn.wordpress.org/trunk@37431 602fd350-edb4-49c9-b593-d223f7449a82
2016-05-13 18:40:19 +00:00
Drew Jaynes
c7bed4f8c6 Docs: Remove inline @see tags from function, class, and method references in inline docs.
Known functions, classes, and methods are now auto-linked in Code Reference pages following #meta1483.

Note: Hook references are still linked via inline `@see` tags due to the unlikelihood of reliably matching for known hooks based on a RegEx pattern.

See #32246.


git-svn-id: https://develop.svn.wordpress.org/trunk@37342 602fd350-edb4-49c9-b593-d223f7449a82
2016-05-02 03:59:56 +00:00
Mark Jaquith
9deec9e723 REST API: Deliver parameters unadulterated instead of slashed.
We goofed, and parameters accessed through the REST API's methods
were slashed (inconsistently, even). This unslashes the data, so
you get the un-messed-with data that was sent.

Props joehoyle.
Fixes #36419.

git-svn-id: https://develop.svn.wordpress.org/trunk@37163 602fd350-edb4-49c9-b593-d223f7449a82
2016-04-06 21:01:11 +00:00
Joe Hoyle
2399173712 REST API: Provide better method for generating CURIEs
In [36533] CURIEs were added to the API responses for the link relation URIs, this makes
it a lot easier for clients to look up links by relation. That patch was functional, but
broke on edge cases such as embedded responses and collection items with links in the items.

This patch instead takes a less obtrusive approach by creating a new `get_compact_response_links`
to compliment `get_response_links` making both old and new functionality available.

Also the regex for curie relations has been relaxed to `.+` as rel names can have any uri-valid charector in it.

Fixes #34729.



git-svn-id: https://develop.svn.wordpress.org/trunk@37041 602fd350-edb4-49c9-b593-d223f7449a82
2016-03-22 00:15:49 +00:00
Rachel Baker
da45e59bbd REST API: Add home_url to API index to avoid confusion with site_url.
Confusion abound, the API index is the generic term `url` to display the `site_url`. New `home` key will display the `home_url` in the index as well.

Fixes #35647.

git-svn-id: https://develop.svn.wordpress.org/trunk@37031 602fd350-edb4-49c9-b593-d223f7449a82
2016-03-17 19:15:57 +00:00
Rachel Baker
40a3bac346 REST API: Remove unused variable $api_root from WP_Rest_Server->embed_links() method.
After [r36674] the variable `$api_root` is no longer used in this method and should be removed.

See #35803.

git-svn-id: https://develop.svn.wordpress.org/trunk@37021 602fd350-edb4-49c9-b593-d223f7449a82
2016-03-16 21:40:42 +00:00
Drew Jaynes
31a93cd569 Docs: Use a third-person singular verb in the DocBlock summary for WP_REST_Response::get_curies(), introduced in [36533].
Also adds a missing return description.

See #34729. See #35986.


git-svn-id: https://develop.svn.wordpress.org/trunk@37015 602fd350-edb4-49c9-b593-d223f7449a82
2016-03-16 16:53:22 +00:00
Drew Jaynes
4cb2eef539 Docs: Improve parameter description syntax in the hook doc for the rest_request_from_url filter, introduced in [36673].
See #35803. See #35986,


git-svn-id: https://develop.svn.wordpress.org/trunk@37014 602fd350-edb4-49c9-b593-d223f7449a82
2016-03-16 16:51:33 +00:00
Drew Jaynes
6dbf325d28 Docs: Improve the DocBlock for WP_REST_Request::from_url(), introduced in [36673].
See #35803. See #35986.


git-svn-id: https://develop.svn.wordpress.org/trunk@37013 602fd350-edb4-49c9-b593-d223f7449a82
2016-03-16 16:49:35 +00:00
Ryan McCue
c3c445c0c9 REST API: Use WP_REST_Request::from_url() when embedding.
See #35803.


git-svn-id: https://develop.svn.wordpress.org/trunk@36674 602fd350-edb4-49c9-b593-d223f7449a82
2016-02-24 04:19:44 +00:00
Ryan McCue
92d2be6a3d REST API: Add WP_REST_Request::from_url()
Allows converting a REST URL into a Request object.

Props danielbachhuber.
Fixes #35803.


git-svn-id: https://develop.svn.wordpress.org/trunk@36673 602fd350-edb4-49c9-b593-d223f7449a82
2016-02-24 04:00:12 +00:00
Drew Jaynes
203966bd4f Docs: Improve documentation for WP_REST_Request to highlight a caveat of ArrayAccess when it comes to passing similar arguments for multiple request methods.
Props danielbachhuber, DrewAPicture.
Fixes #35799.


git-svn-id: https://develop.svn.wordpress.org/trunk@36636 602fd350-edb4-49c9-b593-d223f7449a82
2016-02-23 16:56:28 +00:00
Rachel Baker
6779bd5734 Docs: Add missing @since and @access tags to get_curies method and filter from r36533
See #34729, #32246.

git-svn-id: https://develop.svn.wordpress.org/trunk@36593 602fd350-edb4-49c9-b593-d223f7449a82
2016-02-19 23:41:43 +00:00
DrewAPicture
305e314259 Docs: Add formatting to a changelog entry in the hook doc for the rest_dispatch_request filter.
See [36534]. See #32246.


git-svn-id: https://develop.svn.wordpress.org/trunk@36576 602fd350-edb4-49c9-b593-d223f7449a82
2016-02-18 18:17:04 +00:00
rmccue
5a945adeed REST API: Apply rest_post_dispatch to embedded responses.
Fixes #35628.
Props @danielbachhuber.


git-svn-id: https://develop.svn.wordpress.org/trunk@36536 602fd350-edb4-49c9-b593-d223f7449a82
2016-02-16 06:05:02 +00:00
Ryan McCue
10bfe70f06 REST API: Allow explicit HEAD callbacks.
HEAD callbacks can now be registered independently, with the GET
callback still used as a fallback.

Fixes #34841.


git-svn-id: https://develop.svn.wordpress.org/trunk@36535 602fd350-edb4-49c9-b593-d223f7449a82
2016-02-16 05:50:21 +00:00
Ryan McCue
66fc70f0e1 REST API: Add routing args to rest_dispatch_request filter.
This allows requests to be hijacked via the filter more easily.

Fixes #35507.


git-svn-id: https://develop.svn.wordpress.org/trunk@36534 602fd350-edb4-49c9-b593-d223f7449a82
2016-02-16 04:40:01 +00:00
Ryan McCue
d7e7c0b81b REST API: Add support for CURIEs.
CURIEs are Compact URIs, which provide a more usable way to use
custom relations in the API. The `wp` CURIE is registered by default
for `https://api.w.org/` URI relations.

Fixes #34729.
Props joehoyle.


git-svn-id: https://develop.svn.wordpress.org/trunk@36533 602fd350-edb4-49c9-b593-d223f7449a82
2016-02-16 02:18:34 +00:00
Joe Hoyle
a375d93001 REST API: Improve formatting of failed validation errors.
If a validation_callback returns a WP_Error it should give the same response format as if it returned `false`. This makes programmatically reading the validation errors better.

Props bradyvercher for initial patch.
Fixes #35028.


git-svn-id: https://develop.svn.wordpress.org/trunk@35890 602fd350-edb4-49c9-b593-d223f7449a82
2015-12-12 18:22:02 +00:00
Scott Taylor
f89c25a43d REST API: Core typically sends nocache headers on all auth'ed responses, as in wp, admin-ajax, etc. Because the REST API infrastructure is hooked in pre-wp, we should be setting this ourselves.
Adds unit tests.

Props joehoyle.
Fixes #34832.


git-svn-id: https://develop.svn.wordpress.org/trunk@35773 602fd350-edb4-49c9-b593-d223f7449a82
2015-12-04 23:35:54 +00:00
Mark Jaquith
2ddab3adf8 Route HEAD API requests through the GET callback method
fixes #34837
props danielbachhuber

git-svn-id: https://develop.svn.wordpress.org/trunk@35758 602fd350-edb4-49c9-b593-d223f7449a82
2015-12-03 16:34:00 +00:00
Ryan McCue
cfbd88836d REST API: Unabbreviate error string.
Props daniel-koskinen.
Fixes #34818.


git-svn-id: https://develop.svn.wordpress.org/trunk@35750 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-30 09:50:56 +00:00
Ryan McCue
6b37ee4b48 REST API: Mark WP_REST_Server::get_raw_data as static.
This is just a utility function for getting the request body, not
tied to the server class.

Fixes #34768.


git-svn-id: https://develop.svn.wordpress.org/trunk@35741 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-25 22:21:51 +00:00
Andrew Nacin
8220d04e6d Simplify the include graph after work to split out classes.
see #33413. More details there.


git-svn-id: https://develop.svn.wordpress.org/trunk@35718 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-20 07:23:04 +00:00
John Blackbourn
e904632cc3 Remove register_api_field() from core. This is the only core function that utilises the $wp_rest_additional_fields global, and doesn't belong as part of the infrastructure.
See https://github.com/WP-API/WP-API/pull/1748

Fixes #34730


git-svn-id: https://develop.svn.wordpress.org/trunk@35687 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-18 20:38:25 +00:00
John Blackbourn
355e768312 Update WP_REST_Response::as_error() to handle the new format error responses introduced in [35653].
Props danielbachhuber
Fixes #34551


git-svn-id: https://develop.svn.wordpress.org/trunk@35671 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-18 18:28:55 +00:00
Ryan McCue
52bdf9d6a5 REST API: Remove redundant "0" parameter.
This is just an artifact of how we parse the URL, and is already available
via $request->get_route()

Props danielbachhuber.
Fixes #34647.


git-svn-id: https://develop.svn.wordpress.org/trunk@35659 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-18 07:23:38 +00:00
Ryan McCue
a6aa1a0754 REST API: Optimise for singular error instances.
Previously, the API returned a list of errors, as WP_Error can hold multiple
error codes internally. This isn't a particularly common use case, and it
makes handling errors on the client side more complex than it needs to be.

Fixes #34551.


git-svn-id: https://develop.svn.wordpress.org/trunk@35653 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-17 04:11:21 +00:00
Ryan McCue
10ecf65a4a REST API: Include enum and description in help data.
Props lcherpit.
Fixes #34543.


git-svn-id: https://develop.svn.wordpress.org/trunk@35652 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-17 02:48:21 +00:00
Ryan McCue
0a501976db REST API: Require namespace when registering routes.
Props danielbachhuber.
Fixes #34416.


git-svn-id: https://develop.svn.wordpress.org/trunk@35651 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-17 02:38:31 +00:00
Ryan McCue
8b4a1d65cd REST API: Change link relations to api.w.org
Fixes #34303.


git-svn-id: https://develop.svn.wordpress.org/trunk@35650 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-17 02:23:52 +00:00
Dominik Schilling (ocean90)
fbddde19eb REST API: Use correct @access tag for WP_REST_Request->get_parameter_order().
Props Frozzare.
Fixes #34624.

git-svn-id: https://develop.svn.wordpress.org/trunk@35612 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-11 19:38:24 +00:00
Scott Taylor
dc3f5a0cf5 REST API: in WP_REST_Server::dispatch(), move preg_match() out of it's current loop, which doesn't affect the context passed to it.
Props TobiasBg.
Fixes #34488.


git-svn-id: https://develop.svn.wordpress.org/trunk@35514 602fd350-edb4-49c9-b593-d223f7449a82
2015-11-04 21:22:21 +00:00
Scott Taylor
14253d11b3 REST API: remove the @internal annotation from rest_api_default_filters().
Props swissspidy, rachelbaker.
Fixes #34219.


git-svn-id: https://develop.svn.wordpress.org/trunk@35474 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-31 20:07:21 +00:00
John Blackbourn
31f63b8b52 Remove trailing whitespace introduced in [35351].
Props rachelbaker
Unprops johnbillion
Fixes #34512


git-svn-id: https://develop.svn.wordpress.org/trunk@35462 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-30 21:38:36 +00:00
Sergey Biryukov
170d361287 REST API: Use correct version in _doing_it_wrong() call.
Props TobiasBg.
Fixes #34490.

git-svn-id: https://develop.svn.wordpress.org/trunk@35434 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-29 20:11:22 +00:00
Sergey Biryukov
42e7bfd9b5 REST API: Add missing translator comments for deprecated function and argument strings.
Props akirk.
Fixes #34486.

git-svn-id: https://develop.svn.wordpress.org/trunk@35433 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-29 19:03:47 +00:00
Scott Taylor
ff49cc7ebf REST API: don't load wp-admin/includes/admin.php on every request.
Props swissspidy.
Fixes #34395.


git-svn-id: https://develop.svn.wordpress.org/trunk@35353 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-22 16:28:40 +00:00
John Blackbourn
1691563872 Force the REST API URL to use https for its scheme when the current request is served over HTTPS and the host name matches that of the REST API URL.
This allows sites to use an admin area over HTTPS with the front end over HTTP, and not end up with a cross-protocol problem when using the REST API URL in the admin area.

Fixes #34299


git-svn-id: https://develop.svn.wordpress.org/trunk@35351 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-22 00:07:36 +00:00
John Blackbourn
2e1b898077 Revert [34352], pending investigation.
See #34299


git-svn-id: https://develop.svn.wordpress.org/trunk@35349 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-21 23:05:43 +00:00
John Blackbourn
672782f0a6 Force the REST API URL to use https for its scheme when the current request is served over HTTPS and the host name matches that of the REST API URL.
This allows sites to use an admin area over HTTPS with the front end over HTTP, and not end up with a cross-protocol problem when using the REST API URL in the admin area.

Fixes #34299


git-svn-id: https://develop.svn.wordpress.org/trunk@35342 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-21 20:37:56 +00:00
Drew Jaynes
86794324c7 Docs: Improve the return description in the DocBlock for rest_send_allow_header().
Props danielbachhuber.
Fixes #34374.


git-svn-id: https://develop.svn.wordpress.org/trunk@35324 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-21 13:47:12 +00:00
Sergey Biryukov
bc2a538b1a REST API: Change nonce name to _wpnonce.
It's shorter and is compatible with the default name in `wp_nonce_field()`.

Props danielbachhuber.
Fixes #34375.

git-svn-id: https://develop.svn.wordpress.org/trunk@35323 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-21 08:13:18 +00:00
Drew Jaynes
85af87a19b Docs: Update the default scheme for get_rest_url() from 'json' to 'rest'.
Also adds 'rest' to the documented list of schemes for `home_url()`, `get_home_url()`, `set_url_scheme()`, and the `home_url` and `set_url_scheme` hooks.

Props rachelbaker.
Fixes #34300.


git-svn-id: https://develop.svn.wordpress.org/trunk@35274 602fd350-edb4-49c9-b593-d223f7449a82
2015-10-19 22:38:03 +00:00