Exemple #1
0
        public AquariumSnapshot TakeSnapshot()
        {
            var snapshot = new AquariumSnapshot()
            {
                Date = DateTime.Now.ToUniversalTime()
            };

            //if (_accountLogin.Aquarium.Device.EnabledTemperature) snapshot.Temperature = _hardwareService.GetTemperatureC();
            return(snapshot);
        }
Exemple #2
0
        /* 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);
        }
Exemple #3
0
 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));
 }
Exemple #4
0
        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);
            }
        }
Exemple #9
0
 public AquariumSnapshot SendAquariumSnapshotToHost(AquariumSnapshot snapshot, byte[] photo)
 {
     return(_aquariumClient.SendAquariumSnapshotToHost(snapshot, photo));
 }