add_on = $add_on instanceof GF_Akismet ? $add_on : gf_akismet(); } /** * Makes the API request. * * @since 1.1 * * @param string $path Request path. * @param array $args The query arguments or data for the request body. * @param string $method Request method. Defaults to POST. * @param int $expected_code The expected response code. * * @return array|WP_Error */ private function make_request( $path, $args = array() ) { $request_url = $this->api_url . $path; if ( empty( $args['api_key'] ) ) { $args['api_key'] = $this->add_on->get_plugin_setting( 'api_key' ); } if ( empty( $args['blog'] ) ) { $args['blog'] = home_url(); } $request_args = array( 'method' => 'POST', 'headers' => array( 'Content-Type' => 'application/x-www-form-urlencoded', ), 'user-agent' => sprintf( 'WordPress/%s | Gravity Forms Akismet Add-On/%s', rgar( $GLOBALS, 'wp_version' ), $this->add_on->get_version() ), 'body' => http_build_query( $args ), ); $response = wp_remote_request( $request_url, $request_args ); return $this->get_simplified_response( $response ); } /** * If the request was successful, returns a simpler array containing just the response headers and body. * * @since 1.1 * * @param array|WP_Error $response The request response. * * @return array|WP_Error */ private function get_simplified_response( $response ) { if ( is_wp_error( $response ) ) { return $response; } return array( 'headers' => wp_remote_retrieve_headers( $response ), 'body' => wp_remote_retrieve_body( $response ), ); } /** * Contacts Akismet to verify the given API key is valid. * * @since 1.1 * * @param string $api_key The API key. * * @return array|WP_Error */ public function verify_key( $api_key ) { return $this->make_request( 'verify-key', array( 'api_key' => $api_key ) ); } /** * Sends the given data to Akismet for analysis. * * @since 1.1 * * @param array $data The data to be sent to Akismet. * * @return array|WP_Error */ public function spam_check( $data ) { return $this->make_request( 'comment-check', $data ); } /** * Sends the given data to Akismet, reporting it as spam. * * @since 1.1 * * @param array $data The data to be sent to Akismet. * * @return array|WP_Error */ public function submit_spam( $data ) { return $this->make_request( 'submit-spam', $data ); } /** * Sends the given data to Akismet, reporting it as ham (not spam). * * @since 1.1 * * @param array $data The data to be sent to Akismet. * * @return array|WP_Error */ public function submit_ham( $data ) { return $this->make_request( 'submit-ham', $data ); } }