Esempio n. 1
0
        private async Task Post(HttpRequest request, HttpResponse response, RouteData route)
        {
            var eventId = new EventId(EventId++);

            try
            {
                byte[] bodyRaw = new byte[request.ContentLength.Value];
                await request.Body.ReadAsync(bodyRaw, 0, bodyRaw.Length);

                string body = Encoding.UTF8.GetString(bodyRaw);

                if (PostReceived != null)
                {
                    await Task.Run(() =>
                    {
                        PostReceived.Invoke(new WebhookEventArgs()
                        {
                            Request  = request,
                            BodyRaw  = bodyRaw,
                            Body     = body,
                            Response = response
                        });
                    });
                }
            }
            catch (Exception e)
            {
                Logger.LogError(eventId, e, e.Message);
            }
        }
Esempio n. 2
0
 protected virtual void OnPostsReceived(List <Post> response)
 {
     if (response.Count == 1)
     {
         PostReceived?.Invoke(this, new PostEventArgs(response[0]));
     }
     else
     {
         PostsReceived?.Invoke(this, new PostsEventArgs(response));
     }
 }
Esempio n. 3
0
        private async Task Post(HttpRequest request, HttpResponse response, RouteData route)
        {
            var eventId = new EventId(_eventId++);

            try
            {
                byte[] buf = new byte[request.ContentLength.Value];
                await request.Body.ReadAsync(buf, 0, buf.Length);

                string body = Encoding.UTF8.GetString(buf);
                Logger.LogDebug(eventId, Resources.WebhookPost + body);
#if !DEBUG
                const string signatureHeader = "X-Hub-Signature";

                if (!request.Headers.Keys.Contains(signatureHeader))
                {
                    Logger.LogWarning(Resources.InvalidSignature);

                    if (PostFailed != null)
                    {
                        ThreadPool.QueueUserWorkItem(state => PostFailed.Invoke(new PostEventArgs()
                        {
                            Headers = request.Headers,
                            Body    = body
                        }));
                    }

                    return;
                }

                var signature = request.Headers[signatureHeader][0];

                if (!VerifySignature(signature, buf))
                {
                    Logger.LogWarning(Resources.InvalidSignature);

                    if (PostFailed != null)
                    {
                        ThreadPool.QueueUserWorkItem(state => PostFailed.Invoke(new PostEventArgs()
                        {
                            Headers = request.Headers,
                            Body    = body
                        }));
                    }

                    return;
                }
#endif
                if (PostReceived != null)
                {
                    ThreadPool.QueueUserWorkItem(state => PostReceived.Invoke(new PostEventArgs()
                    {
                        Headers = request.Headers,
                        Body    = body
                    }));
                }

                ProcessRequest(body);
            }
            catch (Exception e)
            {
                Logger.LogError(eventId, e, e.Message);
            }
        }
Esempio n. 4
0
 protected virtual void OnPostReceived(Post response)
 {
     PostReceived?.Invoke(this, new PostEventArgs(response));
 }
Esempio n. 5
0
 protected virtual void OnPostsReceived(PostEventArgs postEvent)
 {
     ThreadPool.QueueUserWorkItem(state => PostReceived.Invoke(postEvent));
 }