// /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)); }
// /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)); }
// 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 } }
// /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)); }
// /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); }
// /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); }
// /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); }