MediaWiki REL1_31
HttpRequestFactory.php
Go to the documentation of this file.
1<?php
21
23use DomainException;
24use Http;
28use Profiler;
29
34
44 public function create( $url, array $options = [], $caller = __METHOD__ ) {
45 if ( !Http::$httpEngine ) {
46 Http::$httpEngine = function_exists( 'curl_init' ) ? 'curl' : 'php';
47 } elseif ( Http::$httpEngine == 'curl' && !function_exists( 'curl_init' ) ) {
48 throw new DomainException( __METHOD__ . ': curl (http://php.net/curl) is not installed, but' .
49 ' Http::$httpEngine is set to "curl"' );
50 }
51
52 if ( !isset( $options['logger'] ) ) {
53 $options['logger'] = LoggerFactory::getInstance( 'http' );
54 }
55
56 switch ( Http::$httpEngine ) {
57 case 'curl':
58 return new CurlHttpRequest( $url, $options, $caller, Profiler::instance() );
59 case 'php':
60 if ( !wfIniGetBool( 'allow_url_fopen' ) ) {
61 throw new DomainException( __METHOD__ . ': allow_url_fopen ' .
62 'needs to be enabled for pure PHP http requests to ' .
63 'work. If possible, curl should be used instead. See ' .
64 'http://php.net/curl.'
65 );
66 }
67 return new PhpHttpRequest( $url, $options, $caller, Profiler::instance() );
68 default:
69 throw new DomainException( __METHOD__ . ': The setting of Http::$httpEngine is not valid.' );
70 }
71 }
72
78 public function canMakeRequests() {
79 return function_exists( 'curl_init' ) || wfIniGetBool( 'allow_url_fopen' );
80 }
81
82}
wfIniGetBool( $setting)
Safety wrapper around ini_get() for boolean settings.
MWHttpRequest implemented using internal curl compiled into PHP.
Various HTTP related functions.
Definition Http.php:27
static $httpEngine
Definition Http.php:28
This wrapper class will call out to curl (if available) or fallback to regular PHP if necessary for h...
Factory creating MWHttpRequest objects.
create( $url, array $options=[], $caller=__METHOD__)
Generate a new MWHttpRequest object.
canMakeRequests()
Simple function to test if we can make any sort of requests at all, using cURL or fopen()
PSR-3 logger instance factory.
Profiler base class that defines the interface and some trivial functionality.
Definition Profiler.php:33
static instance()
Singleton.
Definition Profiler.php:62
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped & $options
Definition hooks.txt:2001