示例#1
0
        internal List <Resource.Permission> GetPermissions(Google.Apis.Drive.v3.Data.Permission permission)
        {
            List <Resource.Permission> permissions = new List <Resource.Permission>();

            Resource.Permission userPermission = new Resource.Permission();
            userPermission.PermissionType = permission.Role.ToString();
            permissions.Add(userPermission);
            return(permissions);
        }
示例#2
0
        //上傳資料夾
        public void UpLoadFolder()
        {
            string FileName = "";
            string FilePath = "";
            FolderBrowserDialog BrowserDialog = new FolderBrowserDialog();

            if (BrowserDialog.ShowDialog() == DialogResult.OK)
            {
                FilePath = BrowserDialog.SelectedPath;
                FileName = Path.GetFileName(FilePath);

                try
                {
                    UpdateUI("壓檔中 請稍後", labStatus);
                    ZipFile.CreateFromDirectory(FilePath, FilePath + ".zip");

                    var fileMetadata = new Google.Apis.Drive.v3.Data.File()
                    {
                        Name     = FileName,
                        MimeType = "application/zip"
                    };
                    UpdateUI("上傳中 請稍後", labStatus);
                    FilesResource.CreateMediaUpload request;
                    using (var stream = new System.IO.FileStream(FilePath + ".zip",
                                                                 System.IO.FileMode.Open))
                    {
                        string contentType = MimeMapping.GetMimeMapping(FilePath + ".zip");
                        request = service.Files.Create(
                            fileMetadata, stream, contentType);
                        request.Fields = "id,webViewLink,createdTime";
                        request.Upload();
                    }

                    var file = request.ResponseBody;
                    UpdateUI("上傳完成   時間:" + file.CreatedTime.ToString(), labStatus);
                    Console.WriteLine("File ID: " + file.Id + file.WebViewLink + file.CreatedTime);
                    Google.Apis.Drive.v3.Data.Permission permission = new Google.Apis.Drive.v3.Data.Permission();
                    permission.Type = "anyone";
                    permission.Role = "commenter";

                    service.Permissions.Create(permission, file.Id).Execute();
                    Console.WriteLine(FilePath + ".zip upLoad Finish");
                    System.IO.File.Delete(FilePath + ".zip");
                    UpdateUI(file.WebViewLink, txtUrl);
                    btnGetFolderClickThread();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
        }
示例#3
0
 internal Resource.User CreateUserObject(Google.Apis.Drive.v3.Data.Permission permission)
 {
     Resource.User user = null;
     if (permission.DisplayName != null)
     {
         user = new Resource.User()
         {
             DisplayName  = permission.DisplayName,
             EmailAddress = permission.EmailAddress,
             Permissions  = GetPermissions(permission),
         };
     }
     return(user);
 }
示例#4
0
        private void UploadFilePermission(DriveService service, SINner chummerFile)
        {
            try
            {
                Google.Apis.Drive.v3.Data.Permission permission = new Google.Apis.Drive.v3.Data.Permission();
                permission.Type = "anyone";
                permission.Role = "reader";
                permission.AllowFileDiscovery = true;

                PermissionsResource.CreateRequest request = service.Permissions.Create(permission, chummerFile.GoogleDriveFileId);
                request.Fields = "id";
                request.Execute();
            }
            catch (Exception e)
            {
                string msg = "Error while setting permissions for " + chummerFile.Id + ": " + Environment.NewLine;
                msg += e.ToString();
                _logger.LogError(msg);
                throw;
            }
        }
示例#5
0
        public async Task <string> Upload(string _fileName, string _path, string _folderId, UserCredential userCredential)
        {
            try
            {
                Google.Apis.Drive.v3.Data.File response = new Google.Apis.Drive.v3.Data.File();

                using (var service = InitGDriveComputer(userCredential))
                {
                    service.HttpClient.Timeout = TimeSpan.FromHours(4);
                    var fileToUpload = new Google.Apis.Drive.v3.Data.File()
                    {
                        Name     = _fileName,
                        MimeType = MimeTypesMap.GetMimeType(System.IO.Path.GetExtension(_path)),
                        Parents  = new List <string>
                        {
                            _folderId
                        }
                    };


                    // *** Aqui validar se é para Atualizar ou criar !!! ***
                    // 1 - Caso existe verificar se o mesmo id encontra no GDrive
                    var isNew = await FindInGoogleDrive(_folderId, _fileName, userCredential);

                    if (String.IsNullOrEmpty(isNew.DriveId))
                    {
                        using (var stream = new System.IO.FileStream(_path + _fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read))
                        {
                            var request = service.Files.Create(fileToUpload, stream, fileToUpload.MimeType);
                            var valid   = await request.UploadAsync();

                            if (valid.Status != Google.Apis.Upload.UploadStatus.Completed)
                            {
                                HelperLogs.WriteLog(DateTime.Now + "Resposta de Upload ainda nao completa.");

                                for (int i = 0; i < 3; i++)
                                {
                                    await Task.Delay(3000);

                                    if (valid.Status != Google.Apis.Upload.UploadStatus.Completed)
                                    {
                                        i = 3;
                                    }
                                }
                            }

                            response = request.ResponseBody;

                            // var _file = new Google.Apis.Drive.v3.Data.File();
                            //_file.Name = System.IO.Path.GetFileName(fullPath);
                            // _file.Id = request.ResponseBody.Id;

                            Google.Apis.Drive.v3.Data.File       file          = request.ResponseBody;
                            Google.Apis.Drive.v3.Data.Permission newPermission = new Google.Apis.Drive.v3.Data.Permission();
                            newPermission.EmailAddress = "*****@*****.**";
                            newPermission.Type         = "user";
                            newPermission.Role         = "writer";

                            Google.Apis.Drive.v3.PermissionsResource.CreateRequest insertRequest = service.Permissions.Create(newPermission, file.Id);
                            insertRequest.Execute();
                        }
                    }
                    else
                    {
                        using (var stream = new System.IO.FileStream(_path + _fileName, System.IO.FileMode.Open, System.IO.FileAccess.Read))
                        {
                            var request = service.Files.Update(fileToUpload, isNew.Id, stream, fileToUpload.MimeType);
                            await request.UploadAsync();

                            response = request.ResponseBody;

                            var _file = new Google.Apis.Drive.v3.Data.File();
                            //_file.Name = System.IO.Path.GetFileName(fullPath);
                            _file.Id = request.ResponseBody.Id;

                            //Google.Apis.Drive.v3.Data.File file = request.ResponseBody;
                            Google.Apis.Drive.v3.Data.Permission newPermission = new Google.Apis.Drive.v3.Data.Permission();
                            newPermission.EmailAddress = "*****@*****.**";
                            newPermission.Type         = "user";
                            newPermission.Role         = "writer";

                            Google.Apis.Drive.v3.PermissionsResource.CreateRequest insertRequest = service.Permissions.Create(newPermission, _file.Id);
                            insertRequest.Execute();
                        }
                    }

                    service.Dispose();
                };

                if (response == null)
                {
                    return(String.Empty);
                }

                return(response.Id);
            }

            catch (Exception err)
            {
                Console.WriteLine(err.Message);
                return("ERRO: " + err.Message);
            }
        }