private void ExceptAlreadyDownloadedFiles(DriveDirectory driveDirectory) { var hashes = Filesystem.GetFileHashes(driveDirectory.LocalPath); var filesToRemove = new List <DriveFile>(); foreach (var hash in hashes) { var file = driveDirectory.Files.FirstOrDefault(f => f.Checksum == hash); if (file != null) { filesToRemove.Add(file); } } driveDirectory.Files = driveDirectory.Files.Except(filesToRemove).ToList(); }
// constructor public Blink1Server() { Log("Blink1Server!"); //Blink1Server.setBlink1Server(this); blink1.open(); fadeToRGB(0.4, Color.Black); loadSettings(); Log("Running on port " + httpPortDefault); Log("blink1Id:" + blink1Id); long updateMillis = (long)(inputUpdateInterval * 1000); inputsTimer = new Timer(updateInputs, null, updateMillis, updateMillis); saveSettings(); try { VirtualDirectory root = new VirtualDirectory(); // note: this works because there is an xcopy as a post build-build event string baseDir = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); baseDir += "\\html\\blink_1"; DriveDirectory htmlDir = new DriveDirectory(baseDir); Log("htmlDir: " + htmlDir.Path); root.AddDirectory(htmlDir.Path); VirtualDirectory blink1dir = new VirtualDirectory("blink1", root); VirtualDirectory inputdir = new VirtualDirectory("input", blink1dir); VirtualDirectory patterndir = new VirtualDirectory("pattern", blink1dir); // FIXME: the below is completely gross, how to do good HTTP routing with MiniHttpd? Blink1JSONFile id = new Blink1JSONFile("id", blink1dir, this); id.GetStringResponse = Ublink1Id; blink1dir.AddFile(id); //add a virtual file for each json method Blink1JSONFile enumerate = new Blink1JSONFile("enumerate", blink1dir, this); enumerate.GetStringResponse = Ublink1Enumerate; blink1dir.AddFile(enumerate); //add a virtual file for each json method Blink1JSONFile regen = new Blink1JSONFile("regenerateblink1id", blink1dir, this); regen.GetStringResponse = Ublink1RegenerateBlink1Id; blink1dir.AddFile(regen); Blink1JSONFile fadeRGB = new Blink1JSONFile("fadeToRGB", blink1dir, this); fadeRGB.GetStringResponse = Ublink1FadeToRGB; blink1dir.AddFile(fadeRGB); Blink1JSONFile on = new Blink1JSONFile("on", blink1dir, this); on.GetStringResponse = Ublink1On; blink1dir.AddFile(on); Blink1JSONFile off = new Blink1JSONFile("off", blink1dir, this); off.GetStringResponse = Ublink1Off; blink1dir.AddFile(off); Blink1JSONFile lastColor = new Blink1JSONFile("lastColor", blink1dir, this); lastColor.GetStringResponse = Ublink1LastColor; blink1dir.AddFile(lastColor); Blink1JSONFile pattern = new Blink1JSONFile("patterns", blink1dir, this); pattern.GetStringResponse = Ublink1Pattern; blink1dir.AddFile(pattern); Blink1JSONFile pattadd = new Blink1JSONFile("add", patterndir, this); pattadd.GetStringResponse = Ublink1PatternAdd; patterndir.AddFile(pattadd); Blink1JSONFile pattdel = new Blink1JSONFile("del", patterndir, this); pattdel.GetStringResponse = Ublink1PatternDel; patterndir.AddFile(pattdel); Blink1JSONFile pattdelall = new Blink1JSONFile("delall", patterndir, this); pattdelall.GetStringResponse = Ublink1PatternDelAll; patterndir.AddFile(pattdelall); Blink1JSONFile pattplay = new Blink1JSONFile("play", patterndir, this); pattplay.GetStringResponse = Ublink1PatternPlay; patterndir.AddFile(pattplay); Blink1JSONFile pattstop = new Blink1JSONFile("stop", patterndir, this); pattstop.GetStringResponse = Ublink1PatternStop; patterndir.AddFile(pattstop); Blink1JSONFile pattstopall = new Blink1JSONFile("stopall", patterndir, this); pattstopall.GetStringResponse = Ublink1PatternStopAll; patterndir.AddFile(pattstopall); Blink1JSONFile input = new Blink1JSONFile("inputs", blink1dir, this); input.GetStringResponse = Ublink1Input; blink1dir.AddFile(input); Blink1JSONFile inputdel = new Blink1JSONFile("del", inputdir, this); inputdel.GetStringResponse = Ublink1InputDel; inputdir.AddFile(inputdel); Blink1JSONFile inputdelall = new Blink1JSONFile("delall", inputdir, this); inputdelall.GetStringResponse = Ublink1InputDelAll; inputdir.AddFile(inputdelall); Blink1JSONFile inputurl = new Blink1JSONFile("url", inputdir, this); inputurl.GetStringResponse = Ublink1InputUrl; inputdir.AddFile(inputurl); Blink1JSONFile inputfile = new Blink1JSONFile("file", inputdir, this); inputfile.GetStringResponse = Ublink1InputFile; inputdir.AddFile(inputfile); Blink1JSONFile inputscript = new Blink1JSONFile("script", inputdir, this); inputscript.GetStringResponse = Ublink1InputScript; inputdir.AddFile(inputscript); Blink1JSONFile inputifttt = new Blink1JSONFile("ifttt", inputdir, this); inputifttt.GetStringResponse = Ublink1InputIfttt; inputdir.AddFile(inputifttt); // TESTING // embedding slashes in path name does not work //Blink1JSONFile foobar = new Blink1JSONFile("foo/bar", blink1dir, this); //foobar.GetStringResponse = Ufoobar; //blink1dir.AddFile(foobar); //add a virtual file for each json method //VirtualDirectory blarg = new VirtualDirectory(); //Blink1Directory bd = new Blink1Directory("floop", root); //root.AddDirectory(bd); // TESTING END blink1dir.AddDirectory(inputdir); blink1dir.AddDirectory(patterndir); root.AddDirectory(blink1dir); httpServer.Root = root; ConsoleWriter writer = new ConsoleWriter(); httpServer.Log = writer; httpServer.LogRequests = true; writer.OnWrite += new ConsoleWriter.WriteEventHandler(writer_OnWrite); httpServer.Start(); } catch (Exception e) { Log(e.ToString()); } }