/// <summary>
        /// this is our callback for all of the AWS triggers and notifications. We do not
        /// use the AWS LambdaSerializer because we are processing more than
        /// one type of JSON data packages on the same endpoint.
        ///
        ///Use this name to register with Lambda
        ///BalsamicSolutions.CodeCommit2Teams::BalsamicSolutions.CodeCommit2Teams.LambdaNotificationHandlers::HandleEvent
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        public void HandleEvent(Stream input, ILambdaContext context)
        {
            string jsonAsText = string.Empty;

            Console.WriteLine("Dispatching CodeCommitEvent");
            if (null != input)
            {
                StreamReader streamReader = new StreamReader(input);
                jsonAsText = streamReader.ReadToEnd();
            }
            Console.WriteLine($"CodeCommitEvent: received the following JSON: {jsonAsText}");
            if (_Enabled)
            {
                //instead of desesralizing the object, look for the "Records" text which indicates we have a
                //branch notification, its faster than parsing the entire jsonData twice for a typed object
                int indexOfRecords = jsonAsText.IndexOf("\"Records\"", 0, StringComparison.OrdinalIgnoreCase);
                if (-1 == indexOfRecords)
                {
                    PullTypes.CodeCommitPullEvent codeCommitEvent = jsonAsText.FromJson <PullTypes.CodeCommitPullEvent>();
                    HandlePullEvent(codeCommitEvent, context);
                }
                else
                {
                    BranchTypes.CodeCommitBranchEvent codeCommitEvent = jsonAsText.FromJson <BranchTypes.CodeCommitBranchEvent>();
                    HandleBranchEvent(codeCommitEvent, context);
                }
            }
            else
            {
                Console.WriteLine("This Lambda handler requires additional configuration");
            }
            Console.WriteLine("Dispatch of CodeCommitEvent complete");
        }
 public void HandlePullEvent(PullTypes.CodeCommitPullEvent input, ILambdaContext context)
 {
     Console.WriteLine("Starting HandlePullEvent");
     if (_Enabled)
     {
         //for this one we are just going to re use the existing notification body
         string        notificationMessage = input.Detail.NotificationBody;
         ChannelClient teamsClient         = new ChannelClient(_TeamsChannelUrls);
         teamsClient.PostMessage(notificationMessage);
     }
     Console.WriteLine("Completed HandlePullEvent");
 }