public async Task CreateNanoLeafAsync_WithConnectedNanoLeaf_ReturnsNanoLeafWithToken() { // Arrange const string authToken = "zbp3aHIDoj0Ox2iAr857WMFck58mOBaL"; _responseMessage.StatusCode = HttpStatusCode.OK; _responseMessage.Content = new StringContent("{'auth_token': '" + authToken + "'}"); // Act var nanoLeaf = await _nanoLeafFactory.CreateNanoLeafAsync(); // Assert Assert.Equal(authToken, nanoLeaf.AuthorizationToken); Assert.Equal(HttpMethod.Post, _requestMessage.Method); Assert.Equal("/api/v1/new", _requestMessage.RequestUri.AbsolutePath); }
public static async Task Main(string[] args) { string address; do { Console.WriteLine("Welcome to the NanoLeaf example program."); Console.WriteLine("Please enter the address to your NanoLeaf controller:"); Console.Write("> "); address = Console.ReadLine(); }while (address == null); Console.WriteLine(); Console.WriteLine("Before we can connect, please press on your NanoLeaf controller the \"On / Off\"-Button for 5-7 seconds until the LED flashes."); Console.WriteLine("After this press any key to continue."); Console.ReadKey(true); var httpClient = new HttpClient { BaseAddress = new Uri(address + "/api/v1/") }; INanoLeafFactory nanoLeafFactory = new NanoLeafFactory(httpClient); Console.WriteLine(); Console.WriteLine($"Trying to connect to \"{address}\" and to get an authorization token..."); var nanoLeaf = await nanoLeafFactory.CreateNanoLeafAsync(); Console.WriteLine(); Console.WriteLine("Successful get an authorization token. Trying now to get the device information..."); var deviceInformation = await nanoLeaf.GetDeviceInformationAsync(); Console.WriteLine(); Console.WriteLine("--- Some information about your NanoLeaf device ---"); Console.WriteLine($"Name: {deviceInformation.Name}"); Console.WriteLine($"Firmware version: {deviceInformation.FirmwareVersion}"); Console.WriteLine($"Serial number: {deviceInformation.SerialNumber}"); Console.WriteLine($"Status: {(deviceInformation.State.IsPoweredOn ? "On" : "Off")}"); Console.WriteLine($"Selected effect: {deviceInformation.Effects.CurrentEffect}"); Console.WriteLine($"Rhythm connected: {(deviceInformation.Rhythm.IsConnected ? "Yes" : "No")}"); Console.WriteLine($"Rhythm active: {(deviceInformation.Rhythm.IsActive == true ? "Yes" : "No")}"); // Information is also in the device information. Only for presentation purposes. var panelLayout = await nanoLeaf.PanelLayout.GetPanelLayoutAsync(); Console.WriteLine(); Console.WriteLine("--- Some information about your Panel Layout ---"); Console.WriteLine($"Number of Panels: {panelLayout.NumberOfPanels}"); Console.WriteLine($"Side length: {panelLayout.SideLength}"); Console.WriteLine("Panel positions:"); foreach (var position in panelLayout.PanelPositions) { Console.WriteLine($" - Id: {position.PanelId}, X: {position.X}, Y: {position.Y}, Orientation: {position.Orientation}"); } Console.WriteLine(); Console.WriteLine("Revoking authorization token..."); await nanoLeaf.RevokeAuthorizationTokenAsync(); Console.WriteLine(); Console.WriteLine("Press any key to exit the program..."); Console.ReadKey(true); }