Example #1
0
        public async Task <IActionResult> Post([FromBody] WebHook webHook)
        {
            if (webHook == null)
            {
                throw new ArgumentNullException("webHook");
            }

            string userId = User.Identity.Name;

            await VerifyFilters(webHook);

            try
            {
                // Validate the WebHook is Active (using echo)
                await _manager.VerifyWebHookAsync(webHook);

                // Validate the provided WebHook ID (or force one to be created on server side)
                IWebHookIdValidator idValidator = (IWebHookIdValidator)HttpContext.RequestServices.GetService(typeof(IWebHookIdValidator));
                if (idValidator == null)
                {
                    idValidator = new DefaultWebHookIdValidator();
                }
                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(CreateResultFromStoreResult(result));
            }
            catch (Exception ex)
            {
                string msg = string.Format(CustomApiResource.RegistrationController_RegistrationFailure, ex.Message);
                _logger.LogError(msg);
                return(StatusCode(StatusCodes.Status500InternalServerError, msg));
            }
        }
Example #2
0
        public async Task <IActionResult> Put(string id, [FromBody] WebHook webHook)
        {
            if (webHook == null)
            {
                return(BadRequest());
            }
            if (!string.Equals(id, webHook.Id, StringComparison.OrdinalIgnoreCase))
            {
                return(BadRequest());
            }

            string userId = User.Identity.Name;

            await VerifyFilters(webHook);

            try
            {
                // Validate the WebHook is Active (using echo)
                await _manager.VerifyWebHookAsync(webHook);

                // Validate the provided WebHook ID (or force one to be created on server side)
                IWebHookIdValidator idValidator = (IWebHookIdValidator)HttpContext.RequestServices.GetService(typeof(IWebHookIdValidator));
                if (idValidator == null)
                {
                    idValidator = new DefaultWebHookIdValidator();
                }
                await idValidator.ValidateIdAsync(Request, webHook);

                StoreResult result = await _store.UpdateWebHookAsync(userId, webHook);

                return(CreateResultFromStoreResult(result));
            }
            catch (Exception ex)
            {
                string msg = string.Format(CustomApiResource.RegistrationController_UpdateFailure, ex.Message);
                _logger.LogError(msg);
                return(StatusCode(StatusCodes.Status500InternalServerError, msg));
            }
        }