예제 #1
0
        public async Task <JsonResult> ViewMyBuckets(ViewMyBucketsAddressModel model)
        {
            var app = await ApiService.ValidateAccessTokenAsync(model.AccessToken);

            var appLocal = await _dbContext.Apps.SingleOrDefaultAsync(t => t.AppId == app.AppId);

            if (appLocal == null)
            {
                appLocal = new OSSApp
                {
                    AppId     = app.AppId,
                    MyBuckets = new List <Bucket>()
                };
                _dbContext.Apps.Add(appLocal);
                await _dbContext.SaveChangesAsync();
            }

            var buckets = await _dbContext
                          .Bucket
                          .Include(t => t.Files)
                          .Where(t => t.BelongingAppId == app.AppId)
                          .ToListAsync();

            buckets.ForEach(t => t.FileCount = t.Files.Count());
            var viewModel = new ViewMyBucketsViewModel
            {
                AppId   = appLocal.AppId,
                Buckets = buckets,
                code    = ErrorType.Success,
                message = "Successfully get your buckets!"
            };

            return(Json(viewModel));
        }
예제 #2
0
        public async Task <JsonResult> CreateBucket([FromForm] CreateBucketAddressModel model)
        {
            //Update app info
            var app = await APIService.ValidateAccessTokenAsync(model.AccessToken);

            var appLocal = await _dbContext.Apps.Include(t => t.MyBuckets).SingleOrDefaultAsync(t => t.AppId == app.AppId);

            if (appLocal == null)
            {
                appLocal = new OSSApp
                {
                    AppId     = app.AppId,
                    MyBuckets = new List <Bucket>()
                };
                _dbContext.Apps.Add(appLocal);
            }
            //Ensure not exists
            var existing = await _dbContext.Bucket.SingleOrDefaultAsync(t => t.BucketName == model.BucketName);

            if (existing != null)
            {
                return(Json(new AiurProtocal
                {
                    code = ErrorType.NotEnoughResources,
                    message = "There is one bucket already called that name!"
                }));
            }
            //Create and save to database
            var newBucket = new Bucket
            {
                BucketName   = model.BucketName,
                Files        = new List <OSSFile>(),
                OpenToRead   = model.OpenToRead,
                OpenToUpload = model.OpenToUpload
            };

            appLocal.MyBuckets.Add(newBucket);
            await _dbContext.SaveChangesAsync();

            //Create an empty folder
            string DirectoryPath = GetCurrentDirectory() + $@"{_}Storage{_}{newBucket.BucketName}{_}";

            if (Directory.Exists(DirectoryPath) == false)
            {
                Directory.CreateDirectory(DirectoryPath);
            }
            //return model
            var viewModel = new CreateBucketViewModel
            {
                BucketId = newBucket.BucketId,
                code     = ErrorType.Success,
                message  = "Successfully created your buckets!"
            };

            return(Json(viewModel));
        }