Exemplo n.º 1
0
        public IHttpActionResult UpdateWall(string wallId, WallModelCreateRequest request)
        {
            wallId = Helpers.TextSanitizer.Hypersanitize(wallId, true);
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var wallModel = DatabaseContext.Shared.WallModels.Find(wallId);

            if (wallModel == null)
            {
                return(NotFound());
            }

            if (!IsOwner(wallModel, request))
            {
                return(Unauthorized());
            }

            if (request.Password != null)
            {
                wallModel.Password = request.WantedPassword;
            }
            if (request.BackgroundUrl != null)
            {
                wallModel.BackgroundUrl = Helpers.TextSanitizer.MakeSafe(request.BackgroundUrl, false);
            }
            if (request.TileBackground != null)
            {
                wallModel.TileBackground = request.TileBackground.Value;
            }
            if (request.Title != null)
            {
                wallModel.Title = Helpers.TextSanitizer.MakeSafe(request.Title, false);
            }
            if (request.Subtitle != null)
            {
                wallModel.Subtitle = Helpers.TextSanitizer.MakeSafe(request.Subtitle, false);
            }
            if (request.WallMode != WallModel.WallModes.INVALID)
            {
                wallModel.WallMode = request.WallMode;
            }
            if (request.UnauthorizedUserPermissions != WallModel.WallAccessPermissionLevels.INVALID)
            {
                wallModel.UnauthorizedUserPermissionLevel = request.UnauthorizedUserPermissions;
            }

            DatabaseContext.Shared.SaveChanges();
            var info = GetInfo(wallModel);

            DatabaseContext.Release();
            return(Ok(info));
        }
Exemplo n.º 2
0
        public IHttpActionResult CreateWall(WallModelCreateRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var ownerName = GetUsername();

            var wallModel = DatabaseContext.Shared.WallModels.Create();

            wallModel.OwnerName     = ownerName;
            wallModel.OwnerPrivate  = GetPrivateKey(request);
            wallModel.OwnerPublic   = GetPublicKey(request);
            wallModel.Password      = request.WantedPassword;
            wallModel.WallUrl       = Helpers.TextSanitizer.Hypersanitize(request.RequestedUrl, true);
            wallModel.Title         = Helpers.TextSanitizer.MakeSafe(request.Title, false);
            wallModel.Subtitle      = Helpers.TextSanitizer.MakeSafe(request.Subtitle, false);
            wallModel.BackgroundUrl = Helpers.TextSanitizer.MakeSafe(request.BackgroundUrl, false);
            if (request.TileBackground != null)
            {
                wallModel.TileBackground = request.TileBackground.Value;
            }
            wallModel.WallMode = (request.WallMode == WallModel.WallModes.INVALID ?
                                  WallModel.WallModes.Stream : request.WallMode);
            wallModel.UnauthorizedUserPermissionLevel =
                (request.UnauthorizedUserPermissions == WallModel.WallAccessPermissionLevels.INVALID ?
                 WallModel.WallAccessPermissionLevels.ViewEdit : request.UnauthorizedUserPermissions);

            var post = GetStarterPost();

            wallModel.AddPost(post);

            DatabaseContext.Shared.WallModels.Add(wallModel);

            try
            {
                DatabaseContext.Shared.SaveChanges();
            }
            catch (DbUpdateException e)
            {
                if (WallModelExists(wallModel.WallUrl))
                {
                    return(Conflict());
                }
                else
                {
                    throw e;
                }
            }
            //Add to user, if any
            var user = GetUser();

            if (user != null)
            {
                user.Add(wallModel);
                _authRepo.SaveUserUpdate();
            }
            var info = GetInfo(wallModel);

            DatabaseContext.Release();
            return(Ok(info));
        }