WC_Webhook::log_delivery( string $delivery_id, array $request, array|WP_Error $response, float $duration )
Log the delivery request/response.
Description Description
Parameters Parameters
- $delivery_id
-
(Required) Previously created hash.
- $request
-
(Required) Request data.
- $response
-
(Required) Response data.
- $duration
-
(Required) Request duration.
Source Source
File: includes/class-wc-webhook.php
public function log_delivery( $delivery_id, $request, $response, $duration ) {
$logger = wc_get_logger();
$message = array(
'Webhook Delivery' => array(
'Delivery ID' => $delivery_id,
'Date' => date_i18n( __( 'M j, Y @ G:i', 'woocommerce' ), strtotime( 'now' ), true ),
'URL' => $this->get_delivery_url(),
'Duration' => $duration,
'Request' => array(
'Method' => $request['method'],
'Headers' => array_merge(
array(
'User-Agent' => $request['user-agent'],
),
$request['headers']
),
),
'Body' => wp_slash( $request['body'] ),
),
);
// Parse response.
if ( is_wp_error( $response ) ) {
$response_code = $response->get_error_code();
$response_message = $response->get_error_message();
$response_headers = array();
$response_body = '';
} else {
$response_code = wp_remote_retrieve_response_code( $response );
$response_message = wp_remote_retrieve_response_message( $response );
$response_headers = wp_remote_retrieve_headers( $response );
$response_body = wp_remote_retrieve_body( $response );
}
$message['Webhook Delivery']['Response'] = array(
'Code' => $response_code,
'Message' => $response_message,
'Headers' => $response_headers,
'Body' => $response_body,
);
if ( ! Constants::is_true( 'WP_DEBUG' ) ) {
$message['Webhook Delivery']['Body'] = 'Webhook body is not logged unless WP_DEBUG mode is turned on. This is to avoid the storing of personal data in the logs.';
$message['Webhook Delivery']['Response']['Body'] = 'Webhook body is not logged unless WP_DEBUG mode is turned on. This is to avoid the storing of personal data in the logs.';
}
$logger->info(
wc_print_r( $message, true ),
array(
'source' => 'webhooks-delivery',
)
);
// Track failures.
// Check for a success, which is a 2xx, 301 or 302 Response Code.
if ( intval( $response_code ) >= 200 && intval( $response_code ) < 303 ) {
$this->set_failure_count( 0 );
$this->save();
} else {
$this->failed_delivery();
}
}
Changelog Changelog
| Version | Description |
|---|---|
| 2.2.0 | Introduced. |