Example #1
0
        //    /blink1/input/ifttt -- Add and Start watching messages from IFTTT webservice
        static string Ublink1InputIfttt(HttpRequest request, Blink1Server blink1Server)
        {
            string pname    = request.Query.Get("pname");
            string iname    = request.Query.Get("iname");
            string rulename = request.Query.Get("arg1");
            string test     = request.Query.Get("test");

            if (pname == null)
            {
                pname = iname;
            }
            Boolean testmode = (test == null) ? false : (test.Equals("on") || test.Equals("true"));

            string statusstr = "must specifiy 'iname' and 'arg1' (rulename)";

            Blink1Input input = null;

            if (rulename != null && iname != null)
            {
                statusstr = "input ifttt";
                rulename  = rulename.Trim();
                input     = new Blink1Input(blink1Server, iname, pname, "ifttt", rulename);

                if (testmode)   // override periodic fetch for immediate fetch
                {
                    Blink1Input.getIftttResponse(false);
                }
                input.updateIftttInput();
                if (!testmode)
                {
                    blink1Server.inputs[iname] = input; // NOTE: this replaces input if already exists
                }
            }
            blink1Server.saveSettings();

            Dictionary <string, object> result = new Dictionary <string, object>();

            result.Add("status", statusstr);
            result.Add("input", input);
            return(JsonConvert.SerializeObject(result, Formatting.Indented, jsonSerializerSettings));
        }
Example #2
0
        //    /blink1/input/del -- Remove a configured input
        static string Ublink1InputDel(HttpRequest request, Blink1Server blink1Server)
        {
            string      iname     = request.Query.Get("iname");
            string      statusstr = "no input by that name";
            Blink1Input input     = null;

            if (iname != null)
            {
                input = blink1Server.inputs[iname];
                input.stop();
                blink1Server.inputs.Remove(iname);
                statusstr = "input '" + iname + "' removed";
            }

            blink1Server.saveSettings();

            Dictionary <string, object> result = new Dictionary <string, object>();

            result.Add("status", statusstr);
            return(JsonConvert.SerializeObject(result, Formatting.Indented, jsonSerializerSettings));
        }
Example #3
0
        // currently unimplemented URL API calls

        //    /blink1/input/scriptlist -- List available scripts to run

        //    /blink1/input/cpuload -- Add and Start CPU load watching input

        //    /blink1/input/netload -- Start network load watching input


        #endregion


        // ----------------------------------------------------------------------------------------
        // updates to inputs handling
        //

        /// <summary>
        /// Periodically update the inputs, triggering color patterns if needed
        /// Runs every 15(?) seconds
        /// </summary>
        public void updateInputs(Object stateInfo)
        {
            if (!inputsEnable)
            {
                return;
            }
            Log("updateInputs");

            Blink1Input.getIftttResponse(true);

            foreach (var pair in inputs)
            {
                Blink1Input input = pair.Value;
                input.update();

                // FIXME: maybe do a logging of inputs that cause triggers like:
                // if( input.update() ) {
                //   alertLog.Add( Now(), input.name );
                // }
                // and then have a "/blink1/alertlog" URL
            }
        }
Example #4
0
        //    /blink1/input/script -- Add and Start command-line script executer
        static string Ublink1InputScript(HttpRequest request, Blink1Server blink1Server)
        {
            string pname = request.Query.Get("pname");
            string iname = request.Query.Get("iname");
            string fpath = request.Query.Get("arg1").Trim();
            string test  = request.Query.Get("test");

            if (pname == null)
            {
                pname = iname;
            }
            Boolean testmode = (test == null) ? false : (test.Equals("on") || test.Equals("true"));

            string statusstr = "must specifiy 'iname' and 'arg1' (script filepath)";

            Blink1Input input = null;

            if (fpath != null && iname != null)
            {
                statusstr = "input script";
                input     = new Blink1Input(blink1Server, iname, pname, "script", fpath);

                input.updateScriptInput();
                if (!testmode)
                {
                    blink1Server.inputs[iname] = input; // NOTE: this replaces input if already exists
                }
            }
            blink1Server.saveSettings();

            Dictionary <string, object> result = new Dictionary <string, object>();

            result.Add("status", statusstr);
            result.Add("input", input);
            return(JsonConvert.SerializeObject(result, Formatting.Indented, jsonSerializerSettings));
        }
Example #5
0
        //    /blink1/input/ifttt -- Add and Start watching messages from IFTTT webservice
        static string Ublink1InputIfttt(HttpRequest request, Blink1Server blink1Server)
        {
            string pname = request.Query.Get("pname");
            string iname = request.Query.Get("iname");
            string rulename = request.Query.Get("arg1");
            string test = request.Query.Get("test");
            if (pname == null) pname = iname;
            Boolean testmode = (test == null) ? false : (test.Equals("on") || test.Equals("true"));

            string statusstr = "must specifiy 'iname' and 'arg1' (rulename)";

            Blink1Input input = null;
            if (rulename != null && iname != null) {
                statusstr = "input ifttt";
                rulename = rulename.Trim();
                input = new Blink1Input(blink1Server, iname, pname, "ifttt", rulename);

                if (testmode) { // override periodic fetch for immediate fetch
                    Blink1Input.getIftttResponse(false);
                }
                input.updateIftttInput();
                if (!testmode) {
                    blink1Server.inputs[iname] = input; // NOTE: this replaces input if already exists
                }
            }
            blink1Server.saveSettings();

            Dictionary<string, object> result = new Dictionary<string, object>();
            result.Add("status", statusstr);
            result.Add("input", input);
            return JsonConvert.SerializeObject(result, Formatting.Indented, jsonSerializerSettings);
        }
Example #6
0
        //    /blink1/input/script -- Add and Start command-line script executer
        static string Ublink1InputScript(HttpRequest request, Blink1Server blink1Server)
        {
            string pname = request.Query.Get("pname");
            string iname = request.Query.Get("iname");
            string fpath = request.Query.Get("arg1").Trim();
            string test = request.Query.Get("test");
            if (pname == null) pname = iname;
            Boolean testmode = (test == null) ? false : (test.Equals("on") || test.Equals("true"));

            string statusstr = "must specifiy 'iname' and 'arg1' (script filepath)";

            Blink1Input input = null;
            if (fpath != null && iname != null) {
                statusstr = "input script";
                input = new Blink1Input(blink1Server, iname, pname, "script", fpath);

                input.updateScriptInput();
                if (!testmode) {
                    blink1Server.inputs[iname] = input; // NOTE: this replaces input if already exists
                }
            }
            blink1Server.saveSettings();

            Dictionary<string, object> result = new Dictionary<string, object>();
            result.Add("status", statusstr);
            result.Add("input", input);
            return JsonConvert.SerializeObject(result, Formatting.Indented, jsonSerializerSettings);
        }
Example #7
0
        //    /blink1/input/url -- Add and Start URL watcher on given URL
        static string Ublink1InputUrl(HttpRequest request, Blink1Server blink1Server)
        {
            string pname = request.Query.Get("pname");
            string iname = request.Query.Get("iname");
            string url = request.Query.Get("arg1");
            string test = request.Query.Get("test");
            if (pname == null) pname = iname;
            Boolean testmode = (test == null) ? false : (test.Equals("on") || test.Equals("true"));

            string statusstr = "must specifiy 'iname' and 'arg1' (url)";

            Blink1Input input = null;
            if (url != null && iname != null) {
                statusstr = "input url";
                input = new Blink1Input(iname, "url", url, null, null);
                input.blink1Server = blink1Server;
                input.pname = pname;

                input.updateUrlInput();
                if (!testmode) {
                    blink1Server.inputs[iname] = input; // NOTE: this replaces input if already exists
                }
            }

            blink1Server.saveSettings();

            Dictionary<string, object> result = new Dictionary<string, object>();
            result.Add("status", statusstr);
            result.Add("input", input);
            return JsonConvert.SerializeObject(result, Formatting.Indented,jsonSerializerSettings);
        }