public Task Execute(UserContext context, LifxMetaData meta, object argument) { var client = Helpers.GetClient(context.GetLogin("appkey")); return(this.execute(context, meta, argument, client).ContinueWith( result => { client.Dispose(); return result; })); }
/// <summary> /// Execute the function on the device /// </summary> /// <param name="context">The user context info.</param> /// <param name="meta">The metadata</param> /// <param name="argument">The argument.</param> /// <param name="client">The http client.</param> /// <returns>A task.</returns> protected override async Task execute(UserContext context, LifxMetaData meta, object argument, HttpClient client) { var uri = $"https://api.lifx.com/v1/lights/{meta.Id}/state"; var colorInt = (int)argument; var colorStr = "#" + colorInt.ToString("X6"); var content = new StringContent($"{{\"color\": \"{colorStr}\"}}"); content.Headers.ContentType = new MediaTypeHeaderValue("text/json"); var result = await client.PutAsync(uri, content); result.EnsureSuccessStatusCode(); }
/// <summary> /// Run the function /// </summary> /// <param name="context">The user context.</param> /// <param name="meta">The light meta data.</param> /// <param name="function">The function to execute.</param> /// <returns> /// The <see cref="Task"/>. /// </returns> public static Task ExecuteFunction(UserContext context, LifxMetaData meta, DeviceFunction function, object argument) { Log.MethodEnter(); Log.Info($"Executing function {function.Name} on device {meta.Id}"); if (false == Handlers.FunctionHandlers.ContainsKey(function.Name)) { throw new NotImplementedException($"The function {0} is not implemented for lifx."); } var handler = Handlers.FunctionHandlers[function.Name]; var task = handler.Execute(context, meta, argument); Log.MethodLeave(); return(task); }
protected override Task execute(UserContext context, LifxMetaData meta, object argument, HttpClient client) { return(client.PostAsync($"https://api.lifx.com/v1/lights/{meta.Id}/toggle", new StringContent(String.Empty))); }
/// <summary> /// Execute the function on the device /// </summary> /// <param name="context">The user context info.</param> /// <param name="meta">The metadata</param> /// <param name="argument">The argument.</param> /// <param name="client">The http client.</param> /// <returns>A task.</returns> protected abstract Task execute(UserContext context, LifxMetaData meta, object argument, HttpClient client);