server_url = $server_url; $this->set_endpoint($endpoint); $this->client_name = $client_name; $this->client_secret = $client_secret; } /** * Set the Request Endpoint * * @param String $target * * @return Void */ public function set_endpoint( $target ) { $this->endpoint = 'wp-json/sendwp/' . $target; } /** * Return the request URL * * @return String */ public function request_url() { return $this->server_url . $this->endpoint; } /** * Return the post request * * @param Array $args * * @return Self */ public function post( $args ) { return $this->request( 'POST', $args ); } /** * Set the request * * @param String $method * @param Array $args * * @return WP_REMOTE_REQUEST */ 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 ); } /** * Get the authentication headers * * @return String */ protected function get_auth_headers() { return 'Basic ' . base64_encode( $this->client_name . ':' . $this->client_secret ); } }