public override Task ExecuteAsync(string receiver, WebHookHandlerContext context)
        {
            var entry = context.GetDataOrDefault <JObject>();

            // Extract the action -- for Bitbucket we have only one.
            var action = context.Actions.First();

            switch (action)
            {
            case "repo:push":
                // Extract information about the repository
                var repository = entry["repository"].ToObject <BitbucketRepository>();

                // Information about the user causing the event
                var actor = entry["actor"].ToObject <BitbucketUser>();

                // Information about the specific changes
                foreach (var change in entry["push"]["changes"])
                {
                    // The previous commit
                    var oldTarget = change["old"]["target"].ToObject <BitbucketTarget>();

                    // The new commit
                    var newTarget = change["new"]["target"].ToObject <BitbucketTarget>();
                }
                break;

            case "issue:created":
                var issue = entry["issue"].ToObject <BitbucketIssue>();
                _repository.Create(issue).Wait();
                break;

            default:
                Trace.WriteLine(entry.ToString());
                break;
            }

            return(Task.FromResult(true));
        }