public async Task <IActionResult> NewWebhook(WebhookData hook) { var header = Request.Headers[HeaderNames.WebHookCheckHeader]; var token = header.FirstOrDefault(); _logger.LogInformation("Received hook with token {Token}. My token is {MyToken}. Token validation is set to {ValidateToken}", token, _settings.Token, _settings.ValidateToken); if (!_settings.ValidateToken || _settings.Token == token) { _logger.LogInformation("Received hook is going to be processed"); var newHook = new WebHookReceived() { Data = hook.Payload, When = hook.When, Token = token }; await _hooksRepository.AddNew(newHook); _logger.LogInformation("Received hook was processed."); return(Ok(newHook)); } _logger.LogInformation("Received hook is NOT processed - Bad Request returned."); return(BadRequest()); }
public async Task HandleCreatedMessage(WebhookData <Message> webhookData) { try { var person = await _wxTeamsApi.GetUserAsync(webhookData.Data.AuthorId); var room = await _wxTeamsApi.CreateRoomAsync("test"); await room.DeleteAsync(); // The Message Created event will also trigger off a message created by the bot // Unless you want to end up with an endless loop of messages, you have to make // sure you're not responding to yourself. // At the same time, it's probably a good idea to consider not letting your bot // respond to other bots at all. Only people. if (person.Type != PersonType.Bot) { var message = await _wxTeamsApi.GetMessageAsync(webhookData.Data.Id); var newMessage = MessageBuilder.New() .SendToRoom(message.RoomId) .WithMarkdown("**Hi!**") .Build(); await _wxTeamsApi.SendMessageAsync(newMessage); } } catch (Exception ex) { Console.WriteLine(ex); } }
public async Task SendAll(IEnumerable <WebhookSubscription> receivers, WebhookData data) { var client = _httpClientFactory.CreateClient(); var json = JsonConvert.SerializeObject(data); var tasks = receivers.Select(r => OnSendData(r, json, client)); await Task.WhenAll(tasks.ToArray()); }
public async Task <string> CreateWebhook(string storeId, WebhookBlob blob) { if (storeId == null) { throw new ArgumentNullException(nameof(storeId)); } if (blob == null) { throw new ArgumentNullException(nameof(blob)); } using var ctx = _ContextFactory.CreateContext(); WebhookData data = new WebhookData(); data.Id = Encoders.Base58.EncodeData(RandomUtils.GetBytes(16)); if (string.IsNullOrEmpty(blob.Secret)) { blob.Secret = Encoders.Base58.EncodeData(RandomUtils.GetBytes(16)); } data.SetBlob(blob); StoreWebhookData storeWebhook = new StoreWebhookData(); storeWebhook.StoreId = storeId; storeWebhook.WebhookId = data.Id; ctx.StoreWebhooks.Add(storeWebhook); ctx.Webhooks.Add(data); await ctx.SaveChangesAsync(); return(data.Id); }
public async Task <JsonResult> Post([FromBody] WebhookData <Message> value) { // Teams seems to just be hitting this over and over.. really confused. await _teamsService.HandleCreatedMessage(value); return(new JsonResult(value)); }
public Task Trigger(WebhookData data) { IEnumerable <Task> postToSubscribers = _db.Webhooks .Where(h => h.Event == data.Event) .AsEnumerable() .Select(w => { string jsonMessage = JsonSerializer.Serialize( new { event_type = data.Event.ToString(), details = data.Object, user = data.User }); try { var content = new StringContent(jsonMessage, Encoding.UTF8, "application/json"); var result = _httpClient.PostAsync(w.CallbackURL, content); return(result); } catch (InvalidOperationException exception) { // A bad URL. return(Task.FromException(exception)); } catch (HttpRequestException exception) { // An ok URL but did not accept POST request. return(Task.FromException(exception)); } }); return(Task.WhenAll(postToSubscribers)); }
public async Task Handle(OrderStatusChangedToPaidIntegrationEvent @event) { var subscriptions = await _retriever.GetSubscriptionsOfType(WebhookType.OrderPaid); _logger.LogInformation($"Received OrderStatusChangedToShippedIntegrationEvent and got {subscriptions.Count()} subscriptions to process"); var whook = new WebhookData(WebhookType.OrderPaid, @event); await _sender.SendAll(subscriptions, whook); }
public async Task Handle(ApplicationStatusChangedToGrantedIntegrationEvent @event) { var subscriptions = await _retriever.GetSubscriptionsOfType(WebhookType.ApplicationGranted); _logger.LogInformation("Received ApplicationStatusChangedToGrantedIntegrationEvent and got {SubscriptionCount} subscriptions to process", subscriptions.Count()); var whook = new WebhookData(WebhookType.ApplicationGranted, @event); await _sender.SendAll(subscriptions, whook); }
public async Task Handle(ScholarshipItemAmountChangedIntegrationEvent @event) { var subscriptions = await _retriever.GetSubscriptionsOfType(WebhookType.ScholarshipItemAmountChange); _logger.LogInformation("Received ScholarshipItemAmountChangedIntegrationEvent and got {SubscriptionsCount} subscriptions to process", subscriptions.Count()); var whook = new WebhookData(WebhookType.ScholarshipItemAmountChange, @event); await _sender.SendAll(subscriptions, whook); }
public async Task <IActionResult> HandlePivotalWebhook(WebhookData webhookData) { var data = webhookData; var pivotal = new PivotalTracker("d1a787245f2e520a7ffe765329aa7e0c", 2438879); var storyId = data.Changes.Where(x => x.Kind == "story").Select(x => x.Id).Single(); var reviews = await pivotal.Tracker.GetStoryReviewsByIdAsync(2438879, storyId.Value); var projectReviews = reviews.Where(x => x.ReviewTypeId == 5692600).ToList(); var isAnyProjectReviews = projectReviews.Any(); _logger.Log(LogLevel.Debug, JsonConvert.SerializeObject(new { projectReviews, isAnyProjectReviews })); return(Ok()); }
public static void SendReport(ReferenceHub reported, string reason, ReferenceHub reporter) { var hookdata = new WebhookData(); var embed = new Embed { title = "ゲームサーバーからの報告", timestamp = DateTime.Now.ToString("yyyy-MM-ddThh:mm:ss.fffZ") }; embed.footer.text = $"報告者:{reporter.GetNickname()} [{reporter.GetUserId()}]"; embed.fields.Add(new EmbedField() { name = "発見サーバー", value = $"{FormatServerName()}" }); embed.fields.Add(new EmbedField() { name = "対象プレイヤー名", value = $"{reported.GetNickname()}", inline = true }); embed.fields.Add(new EmbedField() { name = "対象プレイヤーID", value = $"{reported.GetUserId()}", inline = true }); embed.fields.Add(new EmbedField() { name = "内容", value = $"{reason}" }); hookdata.embeds.Add(embed); var json = Utf8Json.JsonSerializer.ToJsonString <WebhookData>(hookdata); var data = new StringContent(json, Encoding.UTF8, "application/json"); var result = httpClient.PostAsync(Configs.report_webhook, data).Result; Log.Debug($"{json}"); if (result.IsSuccessStatusCode) { Log.Info($"[SendReport] Send Report."); } else { Log.Error($"[SendReport] Error. {result.StatusCode}"); } }