public AquariumSnapshot TakeSnapshot() { var snapshot = new AquariumSnapshot() { Date = DateTime.Now.ToUniversalTime() }; //if (_accountLogin.Aquarium.Device.EnabledTemperature) snapshot.Temperature = _hardwareService.GetTemperatureC(); return(snapshot); }
/* Store this snapshot for future uploading */ public int QueueAquariumSnapshot(AquariumSnapshot snapshot, byte[] photo) { _logger.LogInformation("Queuing aquarium snapshot..."); var json = JsonConvert.SerializeObject(snapshot); var fileCount = (from file in Directory.EnumerateFiles(_config["Queue:AquariumSnapshots"], "*.json", SearchOption.AllDirectories) select file).Count(); File.WriteAllText(_config["Queue:AquariumSnapshots"] + $"/${fileCount}.json", json); File.WriteAllBytes(_config["Queue:AquariumSnapshots"] + $"/${fileCount}.jpg", photo); return(fileCount); }
public AquariumSnapshot AddSnapshot(int aquariumId, AquariumSnapshot snapshot, IFormFile snapshotImage) { if (snapshotImage != null) { var stream = snapshotImage.OpenReadStream(); using (var ms = new MemoryStream()) { snapshotImage.CopyTo(ms); var buffer = ms.ToArray(); var photo = _photoManager.StorePhoto(buffer).Result; snapshot.PhotoId = photo.Id; } } snapshot.AquariumId = aquariumId; return(_aquariumDao.AddSnapshot(snapshot)); }
public AquariumSnapshot TakeSnapshot(int aquariumId, bool takePhoto) { Aquarium aquarium = _aquariumDao.GetAquariumById(aquariumId); var deviceId = aquarium.Device.Id; AquariumSnapshot snapshot = _deviceClient.TakeSnapshot(deviceId); //todo tell device to take with image if (takePhoto) { var photoData = _deviceClient.TakePhoto(deviceId); var photo = _photoManager.StorePhoto(photoData).Result; snapshot.PhotoId = photo.Id; } AquariumSnapshot newSnapshot = _aquariumDao.AddSnapshot(snapshot); return(newSnapshot); }
public void GivenServiceAvailable_TestDeviceUploadIntegration() { var logger = new NullLogger <AquariumClient>(); var aquariumClient = new AquariumClient(logger, null); var host = "http://localhost:5000/v1"; var deviceId = 18; AquariumSnapshot snapshot = new AquariumSnapshot() { ManualEntry = true, Date = Convert.ToDateTime("05/11/1996") }; var photo = File.ReadAllBytes("temp.jpg"); var data = aquariumClient.SendAquariumSnapshotToHost(snapshot, photo); Assert.NotNull(data); }
public IActionResult RecieveSnapshot(RequestModel data) { try { _logger.LogInformation($"POST /v1/DeviceInteraction/Snapshot called"); var snapshotImage = data.SnapshotImage; var snapshot = JsonConvert.DeserializeObject <AquariumSnapshot>(data.Snapshot); var userId = _accountService.GetCurrentUserId(); var id = _accountService.GetCurrentAquariumId(); var aquarium = _aquariumService.GetAquariumById(id); if (!_accountService.CanModify(userId, aquarium)) { return(BadRequest("You do not own this aquarium")); } AquariumSnapshot s = _aquariumService.AddSnapshot(id, snapshot, snapshotImage); return(new OkObjectResult(s)); } catch (Exception ex) { _logger.LogError($"POST /v1/DeviceInteraction/Snapshot: { ex.Message } Details: { ex.ToString() }"); return(BadRequest()); } }
public IActionResult UploadSnapshot(int aquariumId, IFormFile snapshotImage, AquariumSnapshot snapshot) { try { _logger.LogInformation($"POST /v1/Snapshot/{aquariumId}/Create called"); snapshot.ManualEntry = true; AquariumSnapshot s = _aquariumService.AddSnapshot(aquariumId, snapshot, snapshotImage); //Activity Writer var uid = _aquariumService.GetAquariumById(aquariumId).OwnerId; _activityService.RegisterActivity(new CreateAquariumTestResultsActivity() { AccountId = uid, SnapshotId = snapshot.Id }); return(new OkObjectResult(snapshot)); } catch (Exception ex) { _logger.LogError($"POST /v1/v1/Device/Snapshot: { ex.Message } Details: { ex.ToString() }"); return(BadRequest()); } }
public AquariumSnapshot SendAquariumSnapshotToHost(AquariumSnapshot snapshot, byte[] photo) { var path = $"/v1/DeviceInteraction/Snapshot"; _logger.LogInformation("Sending snapshot: " + path); using (var client = GetHttpClient()) { MultipartFormDataContent multiContent = new MultipartFormDataContent(); multiContent.Add(new ByteArrayContent(photo), "SnapshotImage", DateTimeOffset.Now.ToUnixTimeMilliseconds().ToString()); //var httpContent = new StringContent(JsonConvert.SerializeObject(snapshot), Encoding.UTF8, "application/json"); multiContent.Add(new StringContent(JsonConvert.SerializeObject(snapshot)), String.Format("\"{0}\"", "Snapshot")); var result = client.PostAsync(path, multiContent).Result; if (!result.IsSuccessStatusCode) { throw new Exception("Could not upload aquarium snapshot"); } var actualSnapshot = JsonConvert.DeserializeObject <AquariumSnapshot>(result.Content.ReadAsStringAsync().Result); _logger.LogInformation($"Snapshot saved successfully (SnapshotId: {actualSnapshot.Id})"); return(actualSnapshot); } }
public AquariumSnapshot SendAquariumSnapshotToHost(AquariumSnapshot snapshot, byte[] photo) { return(_aquariumClient.SendAquariumSnapshotToHost(snapshot, photo)); }