/// <summary>
 /// Sets the configuration of a smart-me device. The device needs to be online.
 /// </summary>
 /// <param name="accessToken">The OAuth2 access token</param>
 /// <param name="configuration">The smart-me device configuration</param>
 /// <param name="resultHandler">The result handler</param>
 /// <returns></returns>
 public static async Task <IActionResult> SetSmartMeDeviceConfigurationAsync(
     string accessToken,
     SmartMeDeviceConfiguration configuration,
     ResultHandler <SmartMeDeviceConfiguration> resultHandler)
 {
     using (var restApi = new SmartMeApiClient(accessToken))
     {
         return(await restApi.PostAsync <SmartMeDeviceConfiguration>("SmartMeDeviceConfiguration", configuration, resultHandler));
     }
 }
        public async Task <IActionResult> OnGetAsync()
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(Redirect("/"));
            }

            var tokenData = await SmartMeOAuthConfiguration.GetAccessToken(HttpContext);

            return(await DevicesApi.GetSmartMeDeviceConfigurationAsync(tokenData.AccessToken, Id, new ResultHandler <SmartMeDeviceConfiguration>
            {
                OnSuccess = (deviceConfig) =>
                {
                    DeviceConfig = deviceConfig;
                    return Page();
                },

                OnError = DefaultErrorHandler.Handle
            }));
        }
        public async Task <IActionResult> OnPostAsync(SmartMeDeviceConfiguration config)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(Redirect("/"));
            }

            var accessToken = await HttpContext.GetTokenAsync("access_token");

            return(await DevicesApi.SetSmartMeDeviceConfigurationAsync(accessToken, config, new ResultHandler <SmartMeDeviceConfiguration>
            {
                OnSuccess = (empty) =>
                {
                    // Trigger another GET to show the updated SmartMeDeviceConfiguration
                    return Redirect("/Devices/SetSmartMeDeviceConfiguration");
                },

                OnError = DefaultErrorHandler.Handle
            }));
        }
 /// <summary>
 /// Sets the configuration of a smart-me device. The device needs to be online.
 /// </summary>
 /// <param name="accessToken">The OAuth2 access token</param>
 /// <param name="configuration">The smart-me device configuration</param>
 /// <returns></returns>
 public static async Task <bool> SetSmartMeDeviceConfigurationAsync(string accessToken, SmartMeDeviceConfiguration configuration)
 {
     using (var restApi = new SmartMeApiClient(accessToken))
     {
         return(await restApi.PostAsync <SmartMeDeviceConfiguration>("SmartMeDeviceConfiguration", configuration));
     }
 }
 /// <summary>
 /// Sets the configuration of a smart-me device. The device needs to be online.
 /// </summary>
 /// <param name="usernamePassword">The Username and Password for Basic Authentication</param>
 /// <param name="configuration">The smart-me device configuration</param>
 /// <returns></returns>
 public static async Task <bool> SetSmartMeDeviceConfigurationAsync(UserPassword usernamePassword, SmartMeDeviceConfiguration configuration)
 {
     using (var restApi = new SmartMeApiClient(usernamePassword))
     {
         return(await restApi.PostAsync <SmartMeDeviceConfiguration>("SmartMeDeviceConfiguration", configuration));
     }
 }