HEX
Server: nginx/1.18.0
System: Linux iZj6c1ieg2jrpk1z5tzi19Z 6.3.9-1.el7.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 21 22:18:40 EDT 2023 x86_64
User: www (1001)
PHP: 8.2.4
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.cytocare.cn/wp-content/plugins/hummingbird-performance/_src/react/api.js
/* global ajaxurl */
/* global wphb */

/**
 * External dependencies.
 */
import { fetch } from 'whatwg-fetch';

const methods = [ 'get', 'post', 'put', 'delete' ];

/**
 * HB API class.
 *
 * Uses jQuery.ajax().
 *
 * @property {Function} get    GET request.
 * @property {Function} post   POST request.
 * @property {Function} put    PUT request.
 * @property {Function} delete DELETE request.
 */
export default class HBAPIFetch {
	/**
	 * Class constructor.
	 */
	constructor() {
		methods.forEach( ( method ) => {
			this[ method ] = this._setupAjaxAPI( method );
		} );
	}

	/**
	 * Setup AJAX endpoints.
	 *
	 * @param {string} method
	 * @return {function(*=, *=): Promise<*>} Response.
	 * @private
	 */
	_setupAjaxAPI( method ) {
		// Can't use body with GET requests? Not a problem - we'll convert GET to a POST request.
		if ( 'get' === method ) {
			method = 'post';
		}

		return ( endpoint = '/', data = false ) => {
			const fetchObject = {
				credentials: 'same-origin',
				method,
				headers: {
					'Content-Type':
						'application/x-www-form-urlencoded; charset=utf-8',
				},
				body:
					'action=wphb_react_' +
					endpoint +
					'&_wpnonce=' +
					wphb.nonces.HBFetchNonce +
					'&data=' +
					JSON.stringify( data ),
			};

			return fetch( ajaxurl, fetchObject ).then( ( response ) => {
				return response.json().then( ( json ) => {
					return response.ok
						? json.data
						: Promise.reject( json.data );
				} );
			} );
		};
	}
}