Esempio n. 1
0
        public override void StreamEvents(InputDefinition inputDefinition)
        {
            #region Get stanza values

            Stanza stanza = inputDefinition.Stanza;
            SystemLogger.Write(string.Format("Name of Stanza is : {0}", stanza.Name));

            string reportName   = GetConfigurationValue(stanza, ConstantReportName);
            string emailAddress = GetConfigurationValue(stanza, ConstantEmailAddress);
            string password     = GetConfigurationValue(stanza, ConstantPassword);

            SystemLogger.Write(GetConfigurationValue(stanza, ConstantStartDate));

            DateTime startDate = TryParseDateTime(GetConfigurationValue(stanza, ConstantStartDate), DateTime.MinValue);
            DateTime endDate   = TryParseDateTime(GetConfigurationValue(stanza, ConstantEndDate), DateTime.MinValue);

            #endregion Get stanza values

            string streamName = stanza.Name;

            ReportingContext context = new ReportingContext("https://reports.office365.com/ecp/reportingwebservice/reporting.svc");
            context.UserName     = GetConfigurationValue(stanza, ConstantEmailAddress);
            context.Password     = GetConfigurationValue(stanza, ConstantPassword);
            context.FromDateTime = TryParseDateTime(GetConfigurationValue(stanza, ConstantStartDate), DateTime.MinValue);
            context.ToDateTime   = TryParseDateTime(GetConfigurationValue(stanza, ConstantEndDate), DateTime.MinValue);
            context.SetLogger(new SplunkTraceLogger());

            IReportVisitor visitor = new SplunkReportVisitor(streamName);

            ReportingStream stream = new ReportingStream(context, reportName, streamName);
            stream.RetrieveData(visitor);
        }
Esempio n. 2
0
        public override bool Validate(Validation validation, out string errorMessage)
        {
            try
            {
                #region Get param values

                //Adding the validate value at the end to differentiate it from the real stream later created while streaming data
                string   streamName    = validation.Name + "validate";
                string   reportName    = validation.Parameters[ConstantReportName].ToString();
                string   emailAddress  = validation.Parameters[ConstantEmailAddress].ToString();
                string   password      = validation.Parameters[ConstantPassword].ToString();
                DateTime startDateTime = validation.Parameters[ConstantStartDate].ToString().TryParseDateTime(DateTime.MinValue);
                DateTime endDateTime   = validation.Parameters[ConstantEndDate].ToString().TryParseDateTime(DateTime.MaxValue);

                #endregion Get param values

                if (startDateTime > endDateTime)
                {
                    errorMessage = "From date must be less than or equal to To date";
                    return(false);
                }

                ReportingContext context = new ReportingContext();
                context.UserName     = emailAddress;
                context.Password     = password;
                context.FromDateTime = startDateTime;
                context.ToDateTime   = endDateTime;
                //TODO: Need the EventWriter instance to log stuff here
                context.SetLogger(new DefaultLogger());

                ReportingStream stream = new ReportingStream(context, reportName, streamName);

                bool res = stream.ValidateAccessToReport();
                if (res)
                {
                    errorMessage = "";
                    stream.ClearProgress();
                }
                else
                {
                    errorMessage = string.Format("An error occured while validating your crendentials against report: {0}", reportName);
                }
                return(res);
            }
            catch (Exception e)
            {
                errorMessage = e.Message;
                return(false);
            }
        }
Esempio n. 3
0
        public override async Task StreamEventsAsync(InputDefinition inputDefinition, EventWriter eventWriter)
        {
            #region Get param values

            string streamName = inputDefinition.Name;
            await eventWriter.LogAsync(Severity.Info, string.Format("Name of Stanza is : {0}", inputDefinition.Name));

            string reportName = await GetConfigurationValue(inputDefinition, ConstantReportName, eventWriter);

            string emailAddress = await GetConfigurationValue(inputDefinition, ConstantEmailAddress, eventWriter);

            string password = await GetConfigurationValue(inputDefinition, ConstantPassword, eventWriter, false);

            string start = await GetConfigurationValue(inputDefinition, ConstantStartDate, eventWriter);

            DateTime startDateTime = start.TryParseDateTime(DateTime.MinValue);
            string   end           = await GetConfigurationValue(inputDefinition, ConstantEndDate, eventWriter);

            DateTime endDateTime = end.TryParseDateTime(DateTime.MinValue);

            #endregion Get param values

            ReportingContext context = new ReportingContext();
            context.UserName     = emailAddress;
            context.Password     = password;
            context.FromDateTime = startDateTime;
            context.ToDateTime   = endDateTime;
            context.SetLogger(new SplunkTraceLogger(eventWriter));

            IReportVisitor visitor = new SplunkReportVisitor(streamName, eventWriter);

            while (true)
            {
                await Task.Delay(1000);

                ReportingStream stream = new ReportingStream(context, reportName, streamName);
                stream.RetrieveData(visitor);
            }
        }
Esempio n. 4
0
        private static void Main(string[] args)
        {
            var options = new Options();

            if (CommandLine.Parser.Default.ParseArguments(args, options))
            {
                Credential creds = new Credential(null, null, options.CredentialManagerItemName);
                if (creds.Load())
                {
                    ReportingContext context = new ReportingContext();

                    context.UserName     = creds.Username;
                    context.Password     = creds.Password;
                    context.FromDateTime = options.From;
                    context.ToDateTime   = options.To;
                    context.SetLogger(new DefaultLogger());

                    IReportVisitor visitor = new DefaultReportVisitor();

                    ReportingStream stream = new ReportingStream(context, options.ReportName, options.StreamName);
                    stream.RetrieveData(visitor);
                }
            }
        }