Skip to content

Commit

Permalink
Merge branch 'main' of github.com:panoramicdata/LogicMonitor.Api
Browse files Browse the repository at this point in the history
  • Loading branch information
davidnmbond committed Jan 25, 2024
2 parents 04c63db + 83c1ab7 commit 3645a30
Show file tree
Hide file tree
Showing 33 changed files with 240 additions and 27 deletions.
38 changes: 38 additions & 0 deletions LogicMonitor.Api.Test/Reports/ReportTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,44 @@ public async Task GetAllReports()
reports.Should().NotBeNullOrEmpty();
}


[Fact]
public async Task RunReportById()
{
var response =
await LogicMonitorClient.RunReportById(156, default)
.ConfigureAwait(true);

response.Should().NotBeNull();
response.ResultUrl.Should().NotBeNullOrEmpty();
}

[Fact]
public async Task CreateAndDeleteReport()
{
var sDate = DateTime.UtcNow.AddDays(-1);
var eDate = sDate.AddHours(1);

// Create it
var report =
await LogicMonitorClient.CreateAsync(new ReportCreationDto
{
Name = "Temporary Report 5 - can delete",
Description = "Temporary Report - can delete",
Format = "PDF",
Type = "Dashboard",
GroupId = 375,
DateRange = $"{sDate.ToString("yyyy-MM-dd HH:mm")} TO {eDate.ToString("yyyy-MM-dd HH:mm")}",
DashboardId = 205
},
default)
.ConfigureAwait(true);

report.Should().NotBeNull();

await LogicMonitorClient.DeleteAsync<ReportBase>(report.Id, default).ConfigureAwait(true);
}

[Fact]
public async Task CrudReportGroups()
{
Expand Down
4 changes: 3 additions & 1 deletion LogicMonitor.Api/Alerts/EscalationChainCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
/// <summary>
/// An Escalation chain creation DTO
/// </summary>
public class EscalationChainCreationDto : CreationDto<EscalationChain>
[DataContract]
public class EscalationChainCreationDto
: CreationDto<EscalationChain>, IHasName, IHasDescription
{
/// <summary>
/// The LogicMonitor Name
Expand Down
2 changes: 1 addition & 1 deletion LogicMonitor.Api/Collectors/CollectorCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Collectors;
/// A LogicMonitor Collector
/// </summary>
[DataContract]
public class CollectorCreationDto : CreationDto<Collector>
public class CollectorCreationDto : CreationDto<Collector>, IHasDescription
{
/// <summary>
/// The Collector's description
Expand Down
2 changes: 1 addition & 1 deletion LogicMonitor.Api/Collectors/CollectorGroupCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Collectors;
/// A LogicMonitor Collector Group creation DTO
/// </summary>
[DataContract]
public class CollectorGroupCreationDto : CreationDto<CollectorGroup>
public class CollectorGroupCreationDto : CreationDto<CollectorGroup>, IHasName, IHasDescription
{
/// <summary>
/// The name
Expand Down
2 changes: 1 addition & 1 deletion LogicMonitor.Api/Dashboards/DashboardCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Dashboards;
/// A dashboard creation dto
/// </summary>
[DataContract]
public class DashboardCreationDto : CreationDto<Dashboard>
public class DashboardCreationDto : CreationDto<Dashboard>, IHasName, IHasDescription
{
/// <summary>
/// Owner
Expand Down
2 changes: 1 addition & 1 deletion LogicMonitor.Api/Dashboards/DashboardGroupCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
/// A dashboard group creation dto
/// </summary>
[DataContract]
public class DashboardGroupCreationDto : CreationDto<DashboardGroup>
public class DashboardGroupCreationDto : CreationDto<DashboardGroup>, IHasName, IHasDescription
{
/// <summary>
/// The Parent Group Id
Expand Down
2 changes: 1 addition & 1 deletion LogicMonitor.Api/Dashboards/WidgetCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace LogicMonitor.Api.Dashboards;
/// </summary>
/// <typeparam name="T"></typeparam>
[DataContract]
public abstract class WidgetCreationDto<T> : CreationDto<T> where T : Widget
public abstract class WidgetCreationDto<T> : CreationDto<T>, IHasName, IHasDescription where T : Widget
{
/// <summary>
/// The refresh periodicity in minutes (as a string)
Expand Down
14 changes: 14 additions & 0 deletions LogicMonitor.Api/Data/RunReportRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
namespace LogicMonitor.Api.Data;

/// <summary>
/// A run report request
/// </summary>
[DataContract]
public class RunReportRequest
{
/// <summary>
/// The With Admin ID
/// </summary>
[DataMember(Name = "withAdminId")]
public int WithAdminId { get; set; } = 0;
}
26 changes: 26 additions & 0 deletions LogicMonitor.Api/Data/RunReportResponse.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
namespace LogicMonitor.Api.Data;

/// <summary>
/// A run report response
/// </summary>
[DataContract]
public class RunReportResponse
{
/// <summary>
/// The report ID
/// </summary>
[DataMember(Name = "reportId")]
public int ReportId { get; set; }

/// <summary>
/// The task ID
/// </summary>
[DataMember(Name = "taskId")]
public long TaskId { get; set; }

/// <summary>
/// The result URL
/// </summary>
[DataMember(Name = "resulturl")]
public string ResultUrl { get; set; } = string.Empty;
}
2 changes: 1 addition & 1 deletion LogicMonitor.Api/DescribedItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ namespace LogicMonitor.Api;
/// <summary>
/// A described item
/// </summary>
public abstract class DescribedItem : IdentifiedItem
public abstract class DescribedItem : IdentifiedItem, IHasDescription
{
/// <summary>
/// The LogicMonitor Description
Expand Down
2 changes: 1 addition & 1 deletion LogicMonitor.Api/Devices/DeviceCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Devices;
/// A Device (also known as a Host)
/// </summary>
[DataContract]
public class DeviceCreationDto : CreationDto<Device>
public class DeviceCreationDto : CreationDto<Device>, IHasName, IHasDescription
{
/// <summary>
/// A comma-separated list of device group ids
Expand Down
2 changes: 1 addition & 1 deletion LogicMonitor.Api/Devices/DeviceGroupCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Devices;
/// A device group creation dto
/// </summary>
[DataContract]
public class DeviceGroupCreationDto : CreationDto<DeviceGroup>
public class DeviceGroupCreationDto : CreationDto<DeviceGroup>, IHasName, IHasDescription
{
/// <summary>
/// The Parent Group Id as a string
Expand Down
11 changes: 11 additions & 0 deletions LogicMonitor.Api/IHasDescription.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace LogicMonitor.Api;
/// <summary>
/// An object that has a Description
/// </summary>
public interface IHasDescription
{
/// <summary>
/// The Description
/// </summary>
public string Description { get; set; }
}
11 changes: 11 additions & 0 deletions LogicMonitor.Api/IHasName.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
namespace LogicMonitor.Api;
/// <summary>
/// Defines that the object has a Name property
/// </summary>
public interface IHasName
{
/// <summary>
/// The name
/// </summary>
public string Name { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.LogicModules;
/// An AppliesTo Function creation DTO
/// </summary>
[DataContract]
public class AppliesToFunctionCreationDto : CreationDto<AppliesToFunction>
public class AppliesToFunctionCreationDto : CreationDto<AppliesToFunction>, IHasName, IHasDescription
{
/// <summary>
/// The name
Expand Down
9 changes: 8 additions & 1 deletion LogicMonitor.Api/LogicMonitor.Api.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,14 @@
<SymbolPackageFormat>snupkg</SymbolPackageFormat>

<!-- Update the following before releasing to nuget -->
<PackageReleaseNotes>Upversioned to 3.198.</PackageReleaseNotes>
<PackageReleaseNotes>
Added IHasName and IHasDescription to NamedItem and DescribedItem.
Updated CreationDtos to use these new Interfaces.
Corrected type for with EmailIntegrationCreationDto.
Fixed missing DataContract on IntegrationCreationDto.
Added Description to EmailIntegrationCreationDto.
Added IHasName to RecipientGroup.
</PackageReleaseNotes>
<UserSecretsId>57aaa0e7-815d-4065-9339-f3f070bed01e</UserSecretsId>

</PropertyGroup>
Expand Down
16 changes: 16 additions & 0 deletions LogicMonitor.Api/LogicMonitorClient_Report.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
namespace LogicMonitor.Api;

/// <summary>
/// Report interaction
/// </summary>
public partial class LogicMonitorClient
{
/// <summary>
/// Runs a Report by ID and returns
/// </summary>
/// <param name="reportId">The report ID to run</param>
/// <param name="cancellationToken">An optional cancellation token</param>
/// <returns>The website</returns>
public Task<RunReportResponse> RunReportById(int reportId, CancellationToken cancellationToken = default)
=> PostAsync<RunReportRequest, RunReportResponse>(new RunReportRequest(), $"report/reports/{reportId}/executions", cancellationToken);
}
2 changes: 1 addition & 1 deletion LogicMonitor.Api/NamedItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace LogicMonitor.Api;
/// LogicMonitor named item
/// </summary>
[DataContract]
public abstract class NamedItem : DescribedItem
public abstract class NamedItem : DescribedItem, IHasName
{
/// <summary>
/// The LogicMonitor Name
Expand Down
2 changes: 1 addition & 1 deletion LogicMonitor.Api/Netscans/NetscanCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Netscans;
/// A class for crating NetscanPolicies
/// </summary>
[DataContract]
public class NetscanCreationDto : CreationDto<Netscan>
public class NetscanCreationDto : CreationDto<Netscan>, IHasName, IHasDescription
{
/// <summary>
/// Constructor
Expand Down
2 changes: 1 addition & 1 deletion LogicMonitor.Api/Netscans/NetscanGroupCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
/// A Netscan Policy
/// </summary>
[DataContract]
public class NetscanGroupCreationDto : CreationDto<NetscanGroup>
public class NetscanGroupCreationDto : CreationDto<NetscanGroup>, IHasName, IHasDescription
{
/// <summary>
/// Name
Expand Down
80 changes: 80 additions & 0 deletions LogicMonitor.Api/Reports/ReportCreationDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
namespace LogicMonitor.Api.Reports;

/// <summary>
/// A ReportGroup creation DTO. This is incomplete i.e. does not yet include properties to set a schedule or recipients
/// </summary>
[DataContract]
public class ReportCreationDto : CreationDto<ReportBase>
{
/// <summary>
/// The type, e.g Dashboard
/// </summary>
[DataMember(Name = "type")]
public string Type { get; set; } = string.Empty;

/// <summary>
/// The Group ID
/// </summary>
[DataMember(Name = "groupId")]
public int GroupId { get; set; }

/// <summary>
/// The name
/// </summary>
[DataMember(Name = "name")]
public string Name { get; set; } = string.Empty;

/// <summary>
/// The description
/// </summary>
[DataMember(Name = "description")]
public string Description { get; set; } = string.Empty;

/// <summary>
/// The format - HTML or PDF
/// </summary>
[DataMember(Name = "format")]
public string Format { get; set; } = "HTML";

/// <summary>
/// The expiry type - High Flexibiilty or High Security
/// </summary>
[DataMember(Name = "reportLinkExpire")]
public string ReportLinkExpire { get; set; } = "High Flexibility";

/// <summary>
/// The date range
/// </summary>
[DataMember(Name = "dateRange")]
public string DateRange { get; set; } = "Default";

/// <summary>
/// The Dashboard ID
/// </summary>
[DataMember(Name = "dashboardId")]
public int DashboardId { get; set; }

/// <summary>
/// The display name used in the generated report (when run)
/// </summary>
[DataMember(Name = "displayName")]
public string DisplayName { get; set; } = string.Empty;

/// <summary>
/// Whether to display the generated report's URL on the output
/// </summary>
[DataMember(Name = "displayLink")]
public bool DisplayLink { get; set; }

/// <summary>
/// Whether to display the generated report's URL on the output
/// </summary>
[DataMember(Name = "delivery")]
public string Delivery { get; set; } = "none";

/// <summary>
/// ToString override
/// </summary>
/// <returns>Name</returns>
public override string ToString() => Name;
}
2 changes: 1 addition & 1 deletion LogicMonitor.Api/Reports/ReportGroupCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace LogicMonitor.Api.Reports;
/// A ReportGroup creation DTO
/// </summary>
[DataContract]
public class ReportGroupCreationDto : CreationDto<ReportGroup>
public class ReportGroupCreationDto : CreationDto<ReportGroup>, IHasName, IHasDescription
{
/// <summary>
/// The name
Expand Down
2 changes: 1 addition & 1 deletion LogicMonitor.Api/Settings/AlertRuleCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
/// A LogicMonitor alert rule creation DTO
/// </summary>
[DataContract]
public class AlertRuleCreationDto : CreationDto<AlertRule>
public class AlertRuleCreationDto : CreationDto<AlertRule>, IHasName, IHasDescription
{
/// <summary>
/// The LogicMonitor Name
Expand Down
10 changes: 8 additions & 2 deletions LogicMonitor.Api/Settings/EmailIntegrationCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
/// Email Integration Creation Dto
/// </summary>
[DataContract]
public class EmailIntegrationCreationDto : IntegrationCreationDto<EmailIntegration>
public class EmailIntegrationCreationDto : IntegrationCreationDto<EmailIntegration>, IHasDescription
{
/// <summary>
/// Constructor
/// </summary>
public EmailIntegrationCreationDto() : base("http")
public EmailIntegrationCreationDto() : base("email")
{
}
/// <summary>
Expand All @@ -35,4 +35,10 @@ public EmailIntegrationCreationDto() : base("http")
/// </summary>
[DataMember(Name = "body")]
public string Body { get; set; } = string.Empty;

/// <summary>
/// The description
/// </summary>
[DataMember(Name = "description")]
public string Description { get; set; } = string.Empty;
}
4 changes: 3 additions & 1 deletion LogicMonitor.Api/Settings/IntegrationCreationDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@
/// Constructor
/// </remarks>
/// <param name="type">The integration type</param>
public abstract class IntegrationCreationDto<T>(string type) : CreationDto<Integration> where T : Integration
[DataContract]
public abstract class IntegrationCreationDto<T>(string type)
: CreationDto<Integration>, IHasName where T : Integration
{
/// <summary>
/// The LogicMonitor Name
Expand Down
Loading

0 comments on commit 3645a30

Please sign in to comment.