private static void SendToSlack(MetricConfiguration metricConfiguration, string pathOnS3)
        {
            ISlackIntegration slackIntegration = null;
            IAmazonS3Integration amazonS3Integration = null;

            if (metricConfiguration.SlackChannel == null)
                throw new ArgumentNullException("SendToS3", "When SendSignUrlToSlack is true, SendToS3 enabled is required");
            if (metricConfiguration.SlackChannel == null)
                throw new ArgumentNullException("SlackChannel", "When SendSignUrlToSlack is true, SlackChannel is required");
            if (metricConfiguration.SlackMessage == null)
                throw new ArgumentNullException("SlackMessage", "When SendSignUrlToSlack is true, SlackMessage is required");
            if (metricConfiguration.SlackToken == null)
                throw new ArgumentNullException("SlackToken", "When SendSignUrlToSlack is true, SlackToken is required");
            if (metricConfiguration.SlackUserName == null)
                throw new ArgumentNullException("SlackUserName", "When SendSignUrlToSlack is true, SlackUserName is required");

            amazonS3Integration = new AmazonS3Integration(metricConfiguration.AwsAccessKey, metricConfiguration.AwsSecretKey);
            var signedUrl = amazonS3Integration.SignUrl(pathOnS3, "index.html", metricConfiguration.BucketS3,
                metricConfiguration.SlackUrlExpirationInSeconds.GetValueOrDefault(86400));

            var dtExpirationLink =
                DateTime.Now.AddSeconds(metricConfiguration.SlackUrlExpirationInSeconds.GetValueOrDefault(86400));

            Console.WriteLine("Signed Url Metrics Report generated. Date Expiration: {0:u}.", dtExpirationLink);

            slackIntegration = new SlackIntegration(metricConfiguration.SlackToken);
            slackIntegration.PostMessage(metricConfiguration.SlackChannel, string.Format("{0}{1}. Link expire at {2}: ", metricConfiguration.SlackMessage, signedUrl, dtExpirationLink),
                metricConfiguration.SlackUserName);


            Console.WriteLine("Link Url Metrics Report sent to Slack: {0}. Dt Expiration", signedUrl);
        }
        private static void SendToS3(MetricConfiguration metricConfiguration, string reportPath, string reportDirectory, out string pathOnS3)
        {
            IAmazonS3Integration amazonS3Integration = null;
            if (metricConfiguration.AwsAccessKey == null)
                throw new ArgumentNullException("AwsAccessKey", "When SendToS3 is true, AwsAccesskey is required");
            if (metricConfiguration.AwsSecretKey == null)
                throw new ArgumentNullException("AwsSecretKey", "When SendToS3 is true, AwsSecretKey is required");
            if (metricConfiguration.BucketS3 == null)
                throw new ArgumentNullException("BucketS3", "When SendToS3 is true, BucketS3 is required");
            if (metricConfiguration.PathOnBucketS3 == null)
                throw new ArgumentNullException("PathOnBucketS3", "When SendToS3 is true, PathOnBucketS3 is required");

            amazonS3Integration = new AmazonS3Integration(metricConfiguration.AwsAccessKey, metricConfiguration.AwsSecretKey);
            pathOnS3 = Path.Combine(string.Format("{0}/metrics-{1}", metricConfiguration.PathOnBucketS3, string.Format("{0:yy-MM-dd_HH-mm}", DateTime.Now)));
            amazonS3Integration.SendDocument(reportPath, metricConfiguration.BucketS3, pathOnS3);
            amazonS3Integration.SendDocument(string.Format(@"{0}\site.css", reportDirectory), metricConfiguration.BucketS3, pathOnS3, "site.css", true);
        }