server_url = $server_url; $this->set_endpoint( $endpoint ); $this->client_name = $client_name; $this->client_secret = $client_secret; } public function set_endpoint( $target ) { $this->endpoint = 'wp-json/sendwp/' . $target; } public function request_url() { return $this->server_url . $this->endpoint; } public function post( $args ) { return $this->request( 'POST', $args ); } public function request( $method, $args ) { $args[ 'method' ] = $method; $args['reject_unsafe_urls'] = false; // Whitelist requests to the service. $args[ 'headers' ][ 'x-sendwp-client-auth' ] = $this->get_auth_headers(); if (! empty($_SERVER['HTTP_CLIENT_IP'])) { $args['headers']['x-forwarded-for'] = $_SERVER['HTTP_CLIENT_IP']; } elseif (! empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $args['headers']['x-forwarded-for'] = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $args['headers']['x-forwarded-for'] = $_SERVER['REMOTE_ADDR']; } return wp_remote_request( $this->request_url(), $args ); } protected function get_auth_headers() { return 'Basic ' . base64_encode( $this->client_name . ':' . $this->client_secret ); } }