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;
            }));
        }
Exemple #2
0
        /// <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();
        }
Exemple #3
0
        /// <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);