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); }
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); } }
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); } }
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); } } }