Exemplo n.º 1
0
    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());
    }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
 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());
 }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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());
        }
Exemplo n.º 11
0
        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}");
            }
        }