예제 #1
0
        public bool DeleteDisk(UserDto userDto, DiskDto diskDto)
        {
            Authenticate(userDto);
            Authenticate(userDto, diskDto);

            var disks = Persistence.Disks(userDto);
            if (disks == null) return false;
            return Persistence.RemoveDisk(diskDto);
        }
예제 #2
0
        public SynchronizationState FetchSynchronizationState(UserDto userDto, DiskDto diskDto)
        {
            Authenticate(userDto);
            Authenticate(userDto, diskDto);

            var serverDisk = Persistence.FindDisk(diskDto);

            var localChanges = diskDto.LastServerVersion < diskDto.LocalVersion;
            var serverChanges = diskDto.LastServerVersion < serverDisk.LocalVersion;

            if (localChanges) return serverChanges ? SynchronizationState.Conflicted : SynchronizationState.LocalChanges;
            return serverChanges ? SynchronizationState.RemoteChanges : SynchronizationState.UpToDate;
        }
예제 #3
0
        public DiskDto CreateDisk(UserDto userDto, DiskOptionsDto optionsDto)
        {
            if (userDto == null) throw new ArgumentNullException("userDto");
            if (optionsDto == null) throw new ArgumentNullException("optionsDto");

            var disk = new DiskDto { UserId = userDto.Id };
            _db.Insert(disk);

            optionsDto.DiskId = disk.Id;
            _db.Insert(optionsDto);

            return disk;
        }
예제 #4
0
 public void InitTestPersistence()
 {
     _testHelper = new TestHelper("../../Testfiles/DiskReadWriteTest");
     _userDto = new UserDto { Login = "******", HashedPassword = "******" };
 }
예제 #5
0
        public DiskOptionsDto GetDiskOptions(UserDto userDto, DiskDto diskDto)
        {
            Authenticate(userDto);
            Authenticate(userDto, diskDto);

            return Persistence.LoadDiskOptions(diskDto.Id);
        }
예제 #6
0
        public IList<DiskDto> Disks(UserDto userDto)
        {
            Authenticate(userDto);

            return Persistence.Disks(userDto);
        }
예제 #7
0
        public DiskDto CreateDisk(UserDto userDto, DiskOptionsDto optionsDto)
        {
            Authenticate(userDto);

            return Persistence.CreateDisk(userDto, optionsDto);
        }
예제 #8
0
 private void Authenticate(UserDto userDto, DiskDto diskDto)
 {
     var disk = Persistence.Disk(diskDto);
     diskDto.UserId = disk.UserId;
     if (diskDto.UserId != userDto.Id) ErrorOccured(string.Format("You don't have access to the disk {0}", diskDto.Id));
 }
예제 #9
0
 private void Authenticate(UserDto userDto)
 {
     var user = Login(userDto.Login, userDto.HashedPassword);
     userDto.Id = user.Id;
 }
예제 #10
0
        public void WriteBlock(UserDto userDto, int diskId, long blockNr, byte[] content)
        {
            Authenticate(userDto);
            Authenticate(userDto, new DiskDto { Id = diskId });

            using (var b = GetBlockManipulator(diskId))
            {
                b.WriteBlock(blockNr, content);
            }
        }
예제 #11
0
        public void UpdateDisk(UserDto userDto, DiskDto diskDto)
        {
            Authenticate(userDto);
            Authenticate(userDto, diskDto);

            Persistence.UpdateDisk(diskDto);
        }
예제 #12
0
        public void SetDiskOptions(UserDto userDto, DiskDto diskDto, DiskOptionsDto optionsDto)
        {
            Authenticate(userDto);
            Authenticate(userDto, diskDto);

            Persistence.SaveDiskOptions(diskDto.Id, optionsDto);
        }
예제 #13
0
        public byte[] ReadBlock(UserDto userDto, int diskId, long blockNr)
        {
            Authenticate(userDto);
            Authenticate(userDto, new DiskDto { Id = diskId });

            using (var b = GetBlockManipulator(diskId))
            {
                return b.ReadBlock(blockNr);
            }
        }
예제 #14
0
 /// <summary>
 /// Creates a user.
 /// </summary>
 /// <param name="login">The login.</param>
 /// <param name="hashedPassword">The hashed password.</param>
 /// <returns></returns>
 public UserDto CreateUser(string login, string hashedPassword)
 {
     var u = new UserDto { Login = login, HashedPassword = hashedPassword };
     _db.Insert(u);
     return u;
 }
예제 #15
0
        public bool UserExists(UserDto userDto)
        {
            if (userDto == null) throw new ArgumentNullException("userDto");

            return _db.Find<UserDto>(userDto.Id) != null;
        }
예제 #16
0
        public IList<DiskDto> Disks(UserDto userDto)
        {
            if (userDto == null) throw new ArgumentNullException("userDto");

            return _db.Table<DiskDto>().Where(d => d.UserId == userDto.Id).ToList();
        }