public async Task <IHttpActionResult> Post(WebHook webHook) { if (webHook == null) { return(BadRequest()); } string userId = await GetUserId(); await VerifyFilters(webHook); await VerifyWebHook(webHook); try { // Validate the provided WebHook ID (or force one to be created on server side) IWebHookIdValidator idValidator = Configuration.DependencyResolver.GetIdValidator(); await idValidator.ValidateIdAsync(Request, webHook); // Add WebHook for this user. StoreResult result = await _store.InsertWebHookAsync(userId, webHook); if (result == StoreResult.Success) { return(CreatedAtRoute(WebHookRouteNames.RegistrationLookupAction, new { id = webHook.Id }, webHook)); } return(CreateHttpResult(result)); } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, CustomApiResources.RegistrationController_RegistrationFailure, ex.Message); Configuration.DependencyResolver.GetLogger().Error(msg, ex); HttpResponseMessage error = Request.CreateErrorResponse(HttpStatusCode.InternalServerError, msg, ex); return(ResponseMessage(error)); } }
public async Task ValidateIfAsync_ForcesDefaultId(string id) { // Arrange WebHook webHook = new WebHook { Id = id }; // Act await _validator.ValidateIdAsync(_request, webHook); // Assert Assert.NotEmpty(webHook.Id); Assert.NotEqual(id, webHook.Id); }
public async Task <IHttpActionResult> Post(WebHook webHook) { if (webHook == null) { return(BadRequest()); } try { // CustomServices.Reset(); // Validate the provided WebHook ID (or force one to be created on server side) IWebHookIdValidator idValidator = Configuration.DependencyResolver.GetIdValidator(); await idValidator.ValidateIdAsync(Request, webHook); // Validate other parts of WebHook await _registrationsManager.VerifySecretAsync(webHook); await _registrationsManager.VerifyFiltersAsync(webHook); await _registrationsManager.VerifyAddressAsync(webHook); } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, BaladorResource.RegistrationController_RegistrationFailure, ex.Message); Configuration.DependencyResolver.GetLogger().Info(msg); HttpResponseMessage error = Request.CreateErrorResponse(HttpStatusCode.BadRequest, msg, ex); return(ResponseMessage(error)); } try { // Add WebHook for this user. StoreResult result = await _registrationsManager.AddWebHookAsync(User, webHook, AddPrivateFilters); if (result == StoreResult.Success) { return(CreatedAtRoute(RegistrationLookupAction, new { id = webHook.Id }, webHook)); } return(CreateHttpResult(result)); } catch (Exception ex) { string msg = string.Format(CultureInfo.CurrentCulture, BaladorResource.RegistrationController_RegistrationFailure, ex.Message); Configuration.DependencyResolver.GetLogger().Error(msg, ex); HttpResponseMessage error = Request.CreateErrorResponse(HttpStatusCode.InternalServerError, msg, ex); return(ResponseMessage(error)); } }
public async Task <IActionResult> Post([FromBody] WebHook webHook) { if (webHook == null) { return(BadRequest()); } try { // Validate the provided WebHook ID (or force one to be created on server side) await _idValidator.ValidateIdAsync(Request, webHook); // Validate other parts of WebHook await _registrationsManager.VerifySecretAsync(webHook); await _registrationsManager.VerifyFiltersAsync(webHook); await _registrationsManager.VerifyAddressAsync(webHook); } catch (Exception ex) { var message = $"Could not register WebHook due to error: {ex.Message}"; _logger.LogInformation(ex.Message, ex); return(BadRequest(message)); } try { // Add WebHook for this user. var result = await _registrationsManager.AddWebHookAsync(User, webHook, AddPrivateFilters); if (result == StoreResult.Success) { return(CreatedAtRoute(WebHookRouteNames.RegistrationLookupAction, new { id = webHook.Id }, webHook)); } return(CreateHttpResult(result)); } catch (Exception ex) { var message = $"Could not register WebHook due to error: {ex.Message}"; _logger.LogInformation(ex.Message, ex); return(StatusCode((int)HttpStatusCode.InternalServerError, message)); } }