private IActionResult GetChallengeResponse( IWebHookGetHeadRequestMetadata getHeadRequestMetadata, string receiverName, HttpRequest request, RouteData routeData) { // Get the 'challenge' parameter from the request URI. if (!request.Query.TryGetValue(getHeadRequestMetadata.ChallengeQueryParameterName, out var challenge)) { Logger.LogInformation($"{getHeadRequestMetadata.ChallengeQueryParameterName} not found in query parameters!"); return(new BadRequestObjectResult($"{getHeadRequestMetadata.ChallengeQueryParameterName} not found in query parameters!")); } Logger.LogInformation( 403, "Received a GET request for the '{ReceiverName}' WebHook receiver -- returning challenge response.", receiverName); // Echo the challenge back to the caller. return(new ContentResult { Content = challenge, }); }
private IActionResult GetChallengeResponse( IWebHookGetHeadRequestMetadata getHeadRequestMetadata, string receiverName, HttpRequest request, RouteData routeData) { // Get the 'challenge' parameter from the request URI. var challenge = request.Query[getHeadRequestMetadata.ChallengeQueryParameterName]; if (StringValues.IsNullOrEmpty(challenge)) { Logger.LogError( 400, "A '{ReceiverName}' WebHook verification request must contain a '{ParameterName}' query " + "parameter.", receiverName, getHeadRequestMetadata.ChallengeQueryParameterName); var message = string.Format( CultureInfo.CurrentCulture, Resources.GetRequest_NoQueryParameter, receiverName, getHeadRequestMetadata.ChallengeQueryParameterName); var noChallenge = new BadRequestObjectResult(message); return(noChallenge); } // Echo the challenge back to the caller. return(new ContentResult { Content = challenge, }); }
/// <summary> /// Instantiates a new <see cref="WebHookGetHeadRequestFilter"/> instance to short-circuit WebHook requests /// based on the given <paramref name="getHeadRequestMetadata"/>. /// </summary> /// <param name="configuration"> /// The <see cref="IConfiguration"/> used to initialize <see cref="WebHookSecurityFilter.Configuration"/>. /// </param> /// <param name="hostingEnvironment"> /// The <see cref="IHostEnvironment" /> used to initialize /// <see cref="WebHookSecurityFilter.HostingEnvironment"/>. /// </param> /// <param name="loggerFactory"> /// The <see cref="ILoggerFactory"/> used to initialize <see cref="WebHookSecurityFilter.Logger"/>. /// </param> /// <param name="getHeadRequestMetadata">The receiver's <see cref="IWebHookGetHeadRequestMetadata"/>.</param> public WebHookGetHeadRequestFilter( IConfiguration configuration, IHostEnvironment hostingEnvironment, ILoggerFactory loggerFactory, IWebHookGetHeadRequestMetadata getHeadRequestMetadata) : base(configuration, hostingEnvironment, loggerFactory) { if (getHeadRequestMetadata == null) { throw new ArgumentNullException(nameof(getHeadRequestMetadata)); } _getHeadRequestMetadata = getHeadRequestMetadata; }