gform_webhooks_request_headers

gform_webhooks_request_headers

DescriptionUsageParametersExamples1. Set the From header2. Set the authorization header #13. Set the authorization header #24. Set the authorization header #3PlacementSource Code

Description
The 「gform_webhooks_request_headers」 filter allows the webhook HTTP request headers to be modified.
Usage
The following would apply to all forms:
add_filter( 'gform_webhooks_request_headers' 'your_function_name', 10, 4 );

To target a specific form, append the form id to the hook name. (format: gform_webhooks_request_headers_FORMID)
add_filter( 'gform_webhooks_request_headers_14' 'your_function_name', 10, 4 );

Parameters

$request_headers array
HTTP request headers.

$feed Feed Object
The feed object.

$entry Entry Object
The current entry.

$form Form Object
The form object.

Examples
1. Set the From header
add_filter( 'gform_webhooks_request_headers', 'set_headers', 10, 4 );
function set_headers( $request_headers, $feed, $entry, $form ){
$request_headers['From'] = '[email protected]';
return $request_headers;
}

2. Set the authorization header #1
This example shows how you can generate and add a bearer token to the authorization header. In this case the token is being generated by a third-party service (goabroadhq.com) and then cached locally until it expires.
add_filter( 'gform_webhooks_request_headers', function ( $request_headers ) {
$token = GFCache::get( 'goabroadhq_token' );

if ( ! $token ) {
$post_url = 'https://hq-api.goabroadhq.com/token';
$body = array(
'client_id' => 'something',
'client_secret' => 'something',
'grant_type' => 'client_credentials',
);
$headers = array( 'Content-Type' => 'application/x-url-form-encoded' );

$response = wp_remote_post( $post_url, array( 'body' => $body, 'headers' => $headers ) );
gf_webhooks()->log_debug( 'gform_webhooks_request_headers: response => ' . print_r( $response, true ) );

if ( ! is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) == 200 ) {
$response_body_json = wp_remote_retrieve_body( $response );
$response_body_array = json_decode( $response_body_json, true );

if ( isset( $response_body_array['access_token'] ) ) {
$token = $response_body_array['access_token'];
GFCache::set( 'goabroadhq_token', $token, true, $response_body_array['expires_in'] - 30 );
}
}
}

if ( $token ) {
gf_webhooks()->log_debug( 'gform_webhooks_request_headers: token added.' );
$request_headers['Authorization'] = 'Bearer ' . $token;
}

return $request_headers;
} );

3. Set the authorization header #2
This example shows how you can generate and add a bearer token to the authorization header. In this case the token is being generated by the JWT PHP Library for use with the Zoom API.
add_filter( 'gform_webhooks_request_headers', function ( $request_headers ) {
// Requires JWT PHP Library https://github.com/firebase/php-jwt
if ( class_exists( 'JWT' ) ) {
// Zoom API credentials from https://developer.zoom.us/me/
$key = '';
$secret = '';
$token = array(
"iss" => $key,
// The benefit of JWT is expiry tokens, we'll set this one to expire in 1 minute
"exp" => time() + 60
);

$request_headers['Authorization'] = 'Bearer ' . JWT::encode( $token, $secret );
gf_webhooks()->log_debug( 'gform_webhooks_request_headers: token added.' );
}

return $request_headers;
} );

4. Set the authorization header #3
This example shows how you can add the Basic Authorization header to authenticate a request.
add_filter( 'gform_webhooks_request_headers', function ( $request_headers ) {
$request_headers['Authorization'] = 'Basic ' . base64_encode( USERNAME . ':' . PASSWORD );

return $request_headers;
}, 10, 2 );

Note: The above example is based on USERNAME and PASSWORD being constants defined elsewhere (i.e. the wp-config.php file), if not, you can include the values within the quotes e.g. 『USERNAME:PASSWORD』.
Placement
This code should be placed in the functions.php file of your active theme.
Source Code
This filter is located in GF_Webhooks::process_feed() in gravityformswebhooks/class-gf-webhooks.php.

發表回覆

您的郵箱地址不會被公開。 必填項已用 * 標註