/var/www/html_us/wp-content/plugins/elementor/core/utils/http.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
namespace Elementor\Core\Utils;

if ( ! 
defined'ABSPATH' ) ) {
    exit; 
// Exit if accessed directly.
}

class 
Http extends \WP_Http {
    
/**
     * Pass multiple urls to implements a fallback machine when one of the urls
     * is sending an error or not exists anymore.
     *
     * @param array $urls
     * @param array $args
     *
     * @return array|\WP_Error|null
     */
    
public function request_with_fallback( array $urls$args = [] ) {
        
$response null;

        foreach ( 
$urls as $url ) {
            
$response $this->request$url$args );

            if ( 
$this->is_successful_response$response ) ) {
                return 
$response;
            }
        }

        return 
$response;
    }

    
/**
     * @param $response
     *
     * @return bool
     */
    
private function is_successful_response$response ) {
        if ( 
is_wp_error$response ) ) {
            return 
false;
        }

        
$response_code = (int) wp_remote_retrieve_response_code$response );

        if ( 
in_array$response_code, [ 0404500 ], true ) ) {
            return 
false;
        }

        return 
true;
    }
}