/// <summary> /// Get the devices in all networks in all organizations the current API key can access. /// </summary> /// <param name="merakiDashboardClient"> /// The <see cref="MerakiDashboardClient"/> to access the device swith. /// </param> /// <returns> /// The <see cref="Device"/>s discovered. /// </returns> private async Task <IEnumerable <Device> > GetDevicesInAnOrganization(MerakiDashboardClient merakiDashboardClient) { List <Device> result = new List <Device>(); foreach (Organization organization in await merakiDashboardClient.GetOrganizationsAsync()) { foreach (Network network in await merakiDashboardClient.GetOrganizationNetworksAsync(organization)) { foreach (Device device in await merakiDashboardClient.GetNetworkDevicesAsync(network)) { result.Add(device); } } } return(result); }
public async Task Run(string apiKey) { if (string.IsNullOrWhiteSpace(apiKey)) { throw new ArgumentException("Cannot be null, empty or whitespace", nameof(apiKey)); } using (MerakiDashboardClient merakiDashboardClient = MerakiDashboardClientFactory.Create(mcs => mcs.ApiKey = apiKey)) { System.Console.WriteLine("By organization by network:"); foreach (Organization organization in await merakiDashboardClient.GetOrganizationsAsync()) { System.Console.WriteLine($"{organization.Name} ({organization.Id}):"); foreach (Network network in await merakiDashboardClient.GetOrganizationNetworksAsync(organization)) { System.Console.WriteLine($" {network.Name} ({network.Id}):"); foreach (Device device in await merakiDashboardClient.GetNetworkDevicesAsync(network)) { System.Console.WriteLine($" {device.Serial} ({device.Model}, {device.Mac})"); } } } System.Console.WriteLine(); System.Console.WriteLine("By organization inventory:"); foreach (Organization organization in await merakiDashboardClient.GetOrganizationsAsync()) { System.Console.WriteLine($"{organization.Name} ({organization.Id}):"); foreach (InventoryEntry inventory in await merakiDashboardClient.GetOrganizationInventoryAsync( organization)) { System.Console.WriteLine( $" {inventory.Serial} ({inventory.Model}) claimed at {inventory.ClaimedAt}"); } } } }
/// <summary> /// Get the <see cref="Device"/> for the given serial number. /// </summary> /// <param name="merakiDashboardClient"></param> /// <param name="organizationId"></param> /// <param name="serial"></param> /// <returns> /// The <see cref="Device"/> or null, if no device exists. /// </returns> private Device GetDevice(MerakiDashboardClient merakiDashboardClient, string organizationId, string serial) { return(merakiDashboardClient.GetOrganizationNetworksAsync(organizationId).Result .SelectMany(n => merakiDashboardClient.GetNetworkDevicesAsync(n.Id).Result) .FirstOrDefault(d => serial.Equals(d.Serial, StringComparison.OrdinalIgnoreCase))); }