/var/www/(Del)hsihk.com/wp-content/plugins/woocommerce/includes/api/class-wc-api-json-handler.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php
/**
 * WooCommerce API
 *
 * Handles parsing JSON request bodies and generating JSON responses
 *
 * @author      WooThemes
 * @category    API
 * @package     WooCommerce/API
 * @since       2.1
 */

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

class 
WC_API_JSON_Handler implements WC_API_Handler {

    
/**
     * Get the content type for the response
     *
     * @since 2.1
     * @return string
     */
    
public function get_content_type() {

        return 
sprintf'%s; charset=%s', isset( $_GET['_jsonp'] ) ? 'application/javascript' 'application/json'get_option'blog_charset' ) );
    }

    
/**
     * Parse the raw request body entity
     *
     * @since 2.1
     * @param string $body the raw request body
     * @return array|mixed
     */
    
public function parse_body$body ) {

        return 
json_decode$bodytrue );
    }

    
/**
     * Generate a JSON response given an array of data
     *
     * @since 2.1
     * @param array $data the response data
     * @return string
     */
    
public function generate_response$data ) {

        if ( isset( 
$_GET['_jsonp'] ) ) {

            
// JSONP enabled by default
            
if ( ! apply_filters'woocommerce_api_jsonp_enabled'true ) ) {

                
WC()->api->server->send_status400 );

                
$data = array( array( 'code' => 'woocommerce_api_jsonp_disabled''message' => __'JSONP support is disabled on this site''woocommerce' ) ) );
            }

            
// Check for invalid characters (only alphanumeric allowed)
            
if ( preg_match'/\W/'$_GET['_jsonp'] ) ) {

                
WC()->api->server->send_status400 );

                
$data = array( array( 'code' => 'woocommerce_api_jsonp_callback_invalid'__'The JSONP callback function is invalid''woocommerce' ) ) );
            }

            
// see http://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
            
WC()->api->server->header'X-Content-Type-Options''nosniff' );

            
// Prepend '/**/' to mitigate possible JSONP Flash attacks
            
return '/**/' $_GET['_jsonp'] . '(' json_encode$data ) . ')';
        }

        return 
json_encode$data );
    }

}