Пример #1
0
        public ActionResult ListGDrive()
        {
            var service = HttpContext.Session["DriveService"] as DriveService;
            var gHelper = new GDriveHelper();
            var list    = gHelper.GetAllFiles(service);
            var model   = list.Items.Select(f => f.GetGFile <AFileInfo>());

            return(PartialView("_ListGDrive", model));
        }
Пример #2
0
        private async Task <ActionResult> UpdateDatabase(CancellationToken cancellationToken)
        {
            var result = await new AuthorizationCodeMvcApp(this, new AppFlowMetadata()).
                         AuthorizeAsync(cancellationToken);

            if (result.Credential != null)
            {
                var serviceInitializer = new BaseClientService.Initializer
                {
                    HttpClientInitializer = result.Credential,
                    ApplicationName       = "AssistMe"
                };

                userConfig.GoogleAccessToken = result.Credential.Token.AccessToken;
                Session["UserConfig"]        = userConfig;

                var service      = new DriveService(serviceInitializer);
                var oauthService = new Oauth2Service(serviceInitializer);
                HttpContext.Session["DriveService"]  = service;
                HttpContext.Session["Oauth2Service"] = oauthService;

                var gDriveHelper = new GDriveHelper();
                gDriveHelper.InitBaseSystem();

                if (log.IsDebugEnabled)
                {
                    log.DebugFormat("Base init completed for user: {0}", userConfig.User_Id);
                }

                //var data = await result.Credential.RefreshTokenAsync(cancellationToken);
                //ViewBag.Message =  // "FILE COUNT IS: " + list.Items.Count();
                return(RedirectToAction("Index", "Home"));
            }
            else
            {
                return(new RedirectResult(result.RedirectUri));
            }
        }
Пример #3
0
        public ActionResult Create(FormCollection collection)
        {
            var userConfig = (UserConfig)Session["UserConfig"];

            try
            {
                var fileInfo = new AFileInfo
                {
                    Id           = collection["Id"],
                    Description  = collection["Description"],
                    DetailedInfo = collection["DetailedInfo"],
                    DisplayName  = collection["DisplayName"],
                    FolderName   = collection["FolderName"],
                };

                var folder = new AFolderInfo
                {
                    ParentId    = userConfig.DB.AssistMeDrive.Id,
                    FileName    = fileInfo.FolderName,
                    DisplayName = fileInfo.FolderName,
                };
                var service      = HttpContext.Session["DriveService"] as DriveService;
                var ghelper      = new GDriveHelper();
                var serverFolder = ghelper.GetDriveFileMetadata(folder, service, CreateIfNotExist: true);

                folder.Id = serverFolder.Id;

                //check folder already exist
                var existingFolder = userConfig.DB.AssistMeDrive.GetChild(folder.Id);
                if (existingFolder == null)
                {
                    var parentofFolder = userConfig.DB.AssistMeDrive.GetChild(folder.ParentId);
                    parentofFolder.Children.Add(folder);
                }
                //TODO: If folder changed while editing, Remove the file from older folder
                fileInfo.ParentId = folder.Id;

                Google.Apis.Drive.v2.Data.File driveFile = null;
                if (Request.Files.Count > 0 && Request.Files[0].ContentLength > 0)
                {
                    var file = Request.Files[0];
                    fileInfo.FileName = file.FileName;
                    driveFile         = ghelper.CreateFile(fileInfo, service, file.InputStream);
                }
                else
                {
                    driveFile = ghelper.GetDriveFileMetadata(fileInfo, service);
                }

                fileInfo.Id           = driveFile.Id;
                fileInfo.DownloadUrl  = driveFile.DownloadUrl;
                fileInfo.ThumbnailUrl = driveFile.ThumbnailLink;

                var existingFile = userConfig.DB.AssistMeDrive.GetChild(fileInfo.Id);
                if (existingFile != null && existingFile.ParentId != null)
                {
                    var folderOfFile = userConfig.DB.AssistMeDrive.GetChild(existingFile.ParentId);
                    folderOfFile.Children.Remove(folderOfFile.Children.First(f => f.Id == existingFile.Id));
                }

                var parentFolderInDb = userConfig.DB.AssistMeDrive.GetChild(fileInfo.ParentId);
                parentFolderInDb.Children.Add(fileInfo);

                var dbFile = userConfig.DB.AssistMeDrive.Children.First(f => f.FileName != null && f.FileName == userConfig.DB_NAME);
                if (string.IsNullOrWhiteSpace(dbFile.Id))
                {
                    var serverDbFile = ghelper.GetDriveFileMetadata(new AFileInfo
                    {
                        ParentId = userConfig.DB.AssistMeDrive.Id,
                        FileName = userConfig.DB_NAME,
                    }, service);
                    dbFile.Id           = serverDbFile.Id;
                    dbFile.IsSystemFile = true;
                }

                ghelper.WriteDBDataToLocalDB();

                if (log.IsDebugEnabled)
                {
                    log.DebugFormat("Document add/update completed without error. User:{0}", userConfig.User_Id);
                }

                return(RedirectToAction("Index", "Home"));
            }
            catch (Exception exp)
            {
                log.Error(string.Format("User:{0}, Message:{1}", userConfig.User_Id, exp.Message), exp);
                return(RedirectToAction("Index", "Home"));
            }
        }