Skip to content

pronamic/wp-http

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Dec 20, 2022
13d0d39 · Dec 20, 2022

History

61 Commits
Dec 16, 2022
Apr 12, 2021
Dec 5, 2022
Jan 3, 2022
Dec 13, 2022
Mar 31, 2021
Apr 8, 2021
Dec 20, 2022
Mar 9, 2021
Oct 19, 2021
Dec 20, 2022
Dec 20, 2022
Dec 5, 2022
Apr 8, 2021
Mar 31, 2021
Mar 31, 2021
Mar 31, 2021

Repository files navigation

WordPress HTTP

WordPress HTTP library.

Usage

$response = Http::request( $url, $args );

$data = $response->json();

Testing

Faking Responses

$url = 'https://www.pronamic.nl/wp-json/wp/v2/types/post';

Http::fake( $url, __DIR__ . '/../http/pronamic-nl-wp-json-types-post.http' );

$response = \wp_remote_get( $url );

// or

$response = Http::get( $url );

PHPUnit

<?php

namespace YourNamespace;

use Pronamic\WordPress\Http\Factory;

class YourTest extends \WP_UnitTestCase {
	/**
	 * Setup.
	 */
	public function setUp() {
		parent::setUp();

		$this->factory = new Factory();
	}

	/**
	 * Test request.
	 */
	public function test_request() {
		$this->factory->fake( 'http://example.com/', __DIR__ . '/../http/example-com.http' );

		$result = \wp_remote_get( 'http://example.com/' );

		// asserts
	}
}

CR LF

To store fake HTTP responses in *.http files and Git, keep the following in mind:

HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all protocol elements

https://tools.ietf.org/html/rfc2616#section-2.2

.gitattributes

*.http text eol=crlf

You can use a tool like unix2dos to convert the line endings to CR LF:

unix2dos *.http

If the line endings are not correct this can result in the following error:

Undefined offset: 2

wordpress/wp-includes/class-http.php:732
src/Factory.php:97
wordpress/wp-includes/class-wp-hook.php:292
wordpress/wp-includes/plugin.php:212
wordpress/wp-includes/class-http.php:257
wordpress/wp-includes/class-http.php:626
wordpress/wp-includes/http.php:162
src/Facades/Http.php:71

Inspiration

Pronamic - Work with us