options = $options; } /** * Handle the request. * * @param array $args Passed arguments. * @param string $type GET or POST. * * @return bool */ private function handle_request( array $args, string $type = 'post' ) { $api_url = rocket_get_constant( 'WP_ROCKET_SAAS_API_URL', false ) ? rocket_get_constant( 'WP_ROCKET_SAAS_API_URL', false ) : self::API_URL; if ( empty( $args['body'] ) ) { $args['body'] = []; } $args['body']['credentials'] = [ 'wpr_email' => $this->options->get( 'consumer_email', '' ), 'wpr_key' => $this->options->get( 'consumer_key', '' ), ]; $args['method'] = strtoupper( $type ); $response = wp_remote_request( $api_url . $this->request_path, $args ); return $this->check_response( $response ); } /** * Handle remote POST. * * @param array $args Array with options sent to Saas API. * * @return bool WP Remote request status. */ protected function handle_post( array $args ): bool { return $this->handle_request( $args ); } /** * Handle remote GET. * * @param array $args Array with options sent to Saas API. * * @return bool WP Remote request status. */ protected function handle_get( array $args ): bool { return $this->handle_request( $args, 'get' ); } /** * Handle SaaS request error. * * @param array|WP_Error $response WP Remote request. * * @return bool */ private function check_response( $response ): bool { $this->response_code = is_array( $response ) ? wp_remote_retrieve_response_code( $response ) : $response->get_error_code(); if ( 200 !== $this->response_code ) { $this->error_message = is_array( $response ) ? wp_remote_retrieve_response_message( $response ) : $response->get_error_message(); return false; } $this->response_body = wp_remote_retrieve_body( $response ); return true; } }