/// <summary> /// Creates login audit report /// </summary> /// <param name="format">Required. Determines format of audit report data</param> /// <param name="startDate">Required. Start of date range for report</param> /// <param name="endDate">Required. End of date range for report</param> /// <param name="events">Required. List of events to report on. At least one event must be specified</param> /// <param name="accessPoints">Optional. List of Egnyte access points covered by report. /// If not specified or empty then report will cover all access points</param> /// <param name="users">Optional. List of usernames to report on. /// If not specified or empty then report will cover all users</param> /// <returns>Id fo an audit report</returns> public async Task <AuditReport> CreateLoginAuditReport( AuditReportFormat format, DateTime startDate, DateTime endDate, List <string> events, List <AuditReportAccessPoint> accessPoints = null, List <string> users = null) { if (events == null || events.Count < 1) { throw new ArgumentException("At least one event must be specified.", nameof(events)); } var uriBuilder = BuildUri(AuditReportMethod + "/logins"); var httpRequest = new HttpRequestMessage(HttpMethod.Post, uriBuilder.Uri) { Content = new StringContent( GetCreateLoginAuditReportContent( format, startDate, endDate, events, accessPoints, users), Encoding.UTF8, "application/json") }; var serviceHandler = new ServiceHandler <CreateLoginAuditReportResponse>(httpClient); var response = await serviceHandler.SendRequestAsync(httpRequest).ConfigureAwait(false); return(new AuditReport(AuditReportEnum.Login, response.Data.Id)); }
string MapAuditReportFormat(AuditReportFormat format) { if (format == AuditReportFormat.CSV) { return("csv"); } return("json"); }
string GetCreateFileAuditReportContent( AuditReportFormat format, DateTime startDate, DateTime endDate, List <string> folders, string file, List <string> users = null, List <string> transactionTypes = null, bool suppress_emails = false) { if (string.IsNullOrWhiteSpace(file) && (folders == null || !folders.Any())) { throw new ArgumentException("Either folders or file must be specified"); } var builder = new StringBuilder(); builder .Append("{") .Append($"\"format\": \"{MapAuditReportFormat(format)}\",") .Append($"\"date_start\": \"{startDate:yyyy-MM-ddTHH:mm:ssZ}\",") .Append($"\"date_end\": \"{endDate:yyyy-MM-ddTHH:mm:ssZ}\""); if (!string.IsNullOrWhiteSpace(file)) { builder.Append($",\"file\": \"{file}\""); } else { var foldersContent = "[" + string.Join(",", folders.Select(e => "\"" + e + "\"")) + "]"; builder.Append($",\"folders\": {foldersContent}"); } if (transactionTypes != null && transactionTypes.Count > 0) { var transactionTypesContent = "[" + string.Join(",", transactionTypes.Select(tt => $"\"{tt}\"")) + "]"; builder.Append($",\"transaction_type\": {transactionTypesContent}"); } if (users != null && users.Count > 0) { var usersContent = "[" + string.Join(",", users.Select(u => $"\"{u}\"")) + "]"; builder.Append($",\"users\": {usersContent}"); } builder.Append("}"); return(builder.ToString()); }
string GetCreateLoginAuditReportContent( AuditReportFormat format, DateTime startDate, DateTime endDate, List <string> events, List <AuditReportAccessPoint> accessPoints = null, List <string> users = null) { var eventsContent = "[" + string.Join(",", events.Select(e => "\"" + e + "\"")) + "]"; var builder = new StringBuilder(); builder .Append("{") .Append("\"format\": \"" + MapAuditReportFormat(format) + "\",") .Append(string.Format("\"date_start\": \"{0:yyyy-MM-ddTHH:mm:ssZ}\",", startDate)) .Append(string.Format("\"date_end\": \"{0:yyyy-MM-ddTHH:mm:ssZ}\",", endDate)) .Append("\"events\": " + eventsContent); if (accessPoints != null && accessPoints.Count > 0) { var accessPointsContent = "[" + string.Join(",", accessPoints.Select(a => "\"" + MapAuditReportAccessPoint(a) + "\"")) + "]"; builder.Append(",\"access_points\": " + accessPointsContent); } if (users != null && users.Count > 0) { var usersContent = "[" + string.Join(",", users.Select(u => "\"" + u + "\"")) + "]"; builder.Append(",\"users\": " + usersContent); } builder.Append("}"); return(builder.ToString()); }
/// <summary> /// Creates login audit report /// </summary> /// <param name="format">Required. Determines format of audit report data</param> /// <param name="startDate">Required. Start of date range for report</param> /// <param name="endDate">Required. End of date range for report</param> /// <param name="folders">Required. List of folders to report on. At least one folder must be specified</param> /// <param name="file">Optional. Name of file to report on</param> /// <param name="accessPoints">Optional. List of Egnyte access points covered by report. /// If not specified or empty then report will cover all access points</param> /// <param name="users">Optional. List of usernames to report on. /// If not specified or empty then report will cover all users</param> /// <returns>Id fo an audit report</returns> public async Task <AuditReport> CreateFileAuditReport( AuditReportFormat format, DateTime startDate, DateTime endDate, List <string> folders, string file = null, List <string> users = null, List <string> transactionTypes = null, bool suppress_emails = false) { if (string.IsNullOrWhiteSpace(file) && (folders == null || !folders.Any())) { throw new ArgumentException("Either a filename or at least one folder must be specified.", nameof(folders)); } var uriBuilder = BuildUri(AuditReportMethod + "/files"); var httpRequest = new HttpRequestMessage(HttpMethod.Post, uriBuilder.Uri) { Content = new StringContent( GetCreateFileAuditReportContent( format, startDate, endDate, folders, file, users, transactionTypes, suppress_emails), Encoding.UTF8, "application/json") }; var serviceHandler = new ServiceHandler <CreateFileAuditReportResponse>(httpClient); var response = await serviceHandler.SendRequestAsync(httpRequest).ConfigureAwait(false); return(new AuditReport(AuditReportEnum.File, response.Data.Id)); }