public string GetSettings(bool IsImageDownload = true, bool IsAuth = false, string AccessKey = "") { ResponseAJAX response = new ResponseAJAX() { categoryid = 20, method = "GetSettings", issuccess = true, debug = _debug, message = "Server Connection OK" }; //AccessKey check if (IsAuth && AccessKey == _appAccessKey) { response.issuccess = true; response.message = "Access Key confirmed."; } else if (IsAuth) { //Authentication fail response.issuccess = false; response.message = "Needs Access Key."; } if (IsImageDownload) { //2019-01-27 JPC sending placeholder image data is now only for client apps that may save it locally //Method ImagePost below now handles saving placeholders on the server in response to an options flag List <string> imgBase64 = new List <string>(); imgBase64.Add(System.IO.File.ReadAllText(_env.WebRootPath + "\\res\\PlaceholderBase64.txt")); response.xdata = imgBase64; } //2019-01-16 apply our new convention of "signal" as the keyword for a package of metadata and data in json string format string signal = JsonConvert.SerializeObject(response); return(signal); }
public string ImageList(string AccessKey, string dateFolder, string cameraFolder) { ResponseAJAX response = new ResponseAJAX(); response.categoryid = 22; response.method = "ImageList"; //AccessKey check if (AccessKey != _appAccessKey) { response.issuccess = false; response.message = "Needs Access Key."; string jsonNoLogin = JsonConvert.SerializeObject(response); return(jsonNoLogin); } string xFolder = _env.WebRootPath + "\\modet"; if (!(dateFolder == "none")) { xFolder += "\\" + dateFolder; } if (!(cameraFolder == "none")) { xFolder += "\\" + cameraFolder; } try { //List<string> itemList = Directory.EnumerateFileSystemEntries(xFolder).ToList(); List <string> itemList = Directory.GetFileSystemEntries(xFolder).ToList(); for (int i = 0; i < itemList.Count; i++) { string[] itemArray = itemList[i].Split("\\"); itemList[i] = itemArray[itemArray.Length - 1]; } itemList.Sort(); if (dateFolder == "none" || !(cameraFolder == "none")) { itemList.Reverse(); } response.xdata = itemList; response.issuccess = true; string message = "modet"; if (!(dateFolder == "none")) { message += "/" + dateFolder; } if (!(cameraFolder == "none")) { message += "/" + cameraFolder; } response.message = message; } catch (Exception e) { response.issuccess = false; response.message = "ERROR: " + e.Message + "."; } string signal = JsonConvert.SerializeObject(response); return(signal); }
public string ImagePost(string CameraNumber, string AccessKey, string ImageBase64, string options = "base64") { ResponseAJAX response = new ResponseAJAX(); response.categoryid = 21; response.method = "ImagePost"; //AccessKey check if (AccessKey != _appAccessKey) { response.issuccess = false; response.message = "Needs Access Key."; string jsonNoLogin = JsonConvert.SerializeObject(response); return(jsonNoLogin); } string webRoot = _env.WebRootPath; //2019-04-19 JPC group images in night folders 12midday 12:00 double hoursShift = 0.0; if (_nightfolders) { hoursShift = -12.0; } DateTime dayShift = DateTime.Now.AddHours(hoursShift); string folderName = dayShift.ToString("yyyy-MM-dd") + "\\" + CameraNumber; System.IO.Directory.CreateDirectory(webRoot + "\\modet\\" + folderName); string fileWithLocation = "modet\\" + folderName + "\\" + XDayTime() + ".jpg"; string filePath = Path.Combine(webRoot, fileWithLocation); if (options == "placeholder") { //2019-01-27 JPC handle placeholder by sending an options message rather than the full data try { //copy file "Placeholder.jpg" from its "res" folder to the recorded sequence of images string placeholderPath = Path.Combine(webRoot, "res\\Placeholder.jpg"); System.IO.File.Copy(placeholderPath, filePath); response.message = fileWithLocation.Replace("\\", "/"); response.issuccess = true; } catch (Exception e) { response.issuccess = false; response.message = "ERROR: On saving 'Placeholder' image " + e.Message + "."; } } else { //main process, recording image from client camera string tracking = "Begin Base64 conversion to binary."; //var textFilePath = Path.Combine(webRoot, "images\\MotionDetected\\" + folderName + "\\log.txt"); try { var bytes = Convert.FromBase64String(ImageBase64); if (bytes.Length < 1000) { response.issuccess = false; response.message = "INCOMPLETE data."; string jsonIncomplete = JsonConvert.SerializeObject(response); return(jsonIncomplete); } tracking = "Image.Load(bytes) "; var img = Image.Load(bytes); tracking = "img.SaveAsJpeg "; using (var imageFile = new FileStream(filePath, FileMode.Create)) { img.SaveAsJpeg(imageFile); } response.message = fileWithLocation.Replace("\\", "/"); response.issuccess = true; } catch (Exception e) { response.issuccess = false; response.message = "ERROR: " + tracking + " " + e.Message + "."; } } string signal = JsonConvert.SerializeObject(response); return(signal); }