|
@@ -24,13 +24,12 @@ namespace PDF_Office.ViewModels.HomePanel.CloudDrive.CloudDriveType
|
|
|
|
|
|
public DriveService Service { get; set; }//Google提供服务
|
|
|
private List<GoogleDriveFiles> FilesList = new List<GoogleDriveFiles>();//文件
|
|
|
-
|
|
|
+ private List<GoogleDriveFolder> FolderList = new List<GoogleDriveFolder>();//文件
|
|
|
public UserCredential CurrentCredential { get; set; }//当前用户访问令牌
|
|
|
|
|
|
public GoogleDriveUserItem()
|
|
|
{
|
|
|
- // User = new User();
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
#region 对用户账号处理
|
|
@@ -68,7 +67,7 @@ namespace PDF_Office.ViewModels.HomePanel.CloudDrive.CloudDriveType
|
|
|
userInfo = new UserInfo();
|
|
|
var about = Service.About.Get();
|
|
|
about.Fields = "user";
|
|
|
- var uss = await about.ExecuteAsync();
|
|
|
+ var uss = about.Execute();
|
|
|
User user = uss.User;
|
|
|
userInfo.UserAccount = user.EmailAddress;
|
|
|
userInfo.Name = user.DisplayName;
|
|
@@ -101,41 +100,87 @@ namespace PDF_Office.ViewModels.HomePanel.CloudDrive.CloudDriveType
|
|
|
/// <summary>
|
|
|
/// 对单个用户,获取文件列表
|
|
|
/// </summary>
|
|
|
- public async Task<List<GoogleDriveFiles>> GetDriveFiles(DriveService service = null)
|
|
|
+ /// <param name="service"></param>
|
|
|
+ /// <param name="parentFilesId">文件夹ID:file.Id</param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<List<GoogleDriveFiles>> GetDriveFiles(DriveService service = null, string parentFilesId = null)
|
|
|
{
|
|
|
if (service == null)
|
|
|
return null;
|
|
|
-
|
|
|
- // define parameters of request.
|
|
|
- FilesResource.ListRequest FileListRequest = service.Files.List();
|
|
|
-
|
|
|
+
|
|
|
+ FilesResource.ListRequest FileListRequest = service.Files.List();
|
|
|
//listRequest.PageSize = 10;
|
|
|
//listRequest.PageToken = 10;
|
|
|
- FileListRequest.Fields = "nextPageToken, files(id, name, size, version, createdTime)";
|
|
|
+ if (parentFilesId == null)
|
|
|
+ //FileListRequest.Q = "'root' in parents or sharedWithMe = true";
|
|
|
+ FileListRequest.Q = "'root' in parents";
|
|
|
+ else
|
|
|
+ FileListRequest.Q = "'" + parentFilesId + "' in parents";
|
|
|
+ // FileListRequest.Fields = "nextPageToken, files(mimeType, id, name, size, version, createdTime)";
|
|
|
+ // FileListRequest.Fields = "nextPageToken, files(id, name)";
|
|
|
+ FileListRequest.Fields = "nextPageToken,kind,files(mimeType,id,kind,size,name,appProperties,webViewLink,webContentLink,createdTime,modifiedTime,ownedByMe,trashed,owners,lastModifyingUser,sharedWithMeTime,parents)";
|
|
|
+ FileListRequest.PageSize = 1000;
|
|
|
+ FileList result = FileListRequest.Execute();
|
|
|
|
|
|
//get file list.
|
|
|
- IList<Google.Apis.Drive.v3.Data.File> files = FileListRequest.Execute().Files;
|
|
|
+ // String pageToken = null;
|
|
|
List<GoogleDriveFiles> FileList = new List<GoogleDriveFiles>();
|
|
|
|
|
|
+ IList<Google.Apis.Drive.v3.Data.File> files = result.Files;
|
|
|
+
|
|
|
+
|
|
|
if (files != null && files.Count > 0)
|
|
|
{
|
|
|
foreach (var file in files)
|
|
|
{
|
|
|
- GoogleDriveFiles File = new GoogleDriveFiles
|
|
|
+ if (file.MimeType.EndsWith(GoogleDriveStatic.MimeType) == true || file.MimeType.EndsWith(GoogleDriveStatic.FolderType) == true)
|
|
|
{
|
|
|
- Id = file.Id,
|
|
|
- Name = file.Name,
|
|
|
- Size = file.Size,
|
|
|
- Version = file.Version,
|
|
|
- CreatedTime = file.CreatedTime
|
|
|
- };
|
|
|
- FileList.Add(File);
|
|
|
+ bool isFolder = (file.MimeType == GoogleDriveStatic.FolderType ? true : false);
|
|
|
+ GoogleDriveFiles File = new GoogleDriveFiles
|
|
|
+ {
|
|
|
+ Id = file.Id,
|
|
|
+ MimeType = file.MimeType,
|
|
|
+ IsFolder = isFolder,
|
|
|
+ Name = file.Name,
|
|
|
+ Size = file.Size,
|
|
|
+ Version = file.Version,
|
|
|
+ CreatedTime = file.CreatedTime
|
|
|
+ };
|
|
|
+ int level = 0;
|
|
|
+ if (isFolder)
|
|
|
+ {
|
|
|
+ if (file.Parents != null)
|
|
|
+ {
|
|
|
+
|
|
|
+ level = file.Parents.Count;
|
|
|
+ var folderItem = new GoogleDriveFolder();
|
|
|
+ folderItem.Level = level;
|
|
|
+ folderItem.fileId = file.Id;
|
|
|
+ FolderList.Add(folderItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ level = -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ File.Level = level;
|
|
|
+ FileList.Add(File);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
- this.FilesList = FileList;
|
|
|
+
|
|
|
}
|
|
|
+ if(parentFilesId == null)
|
|
|
+ this.FilesList = FileList;
|
|
|
return FileList;
|
|
|
}
|
|
|
|
|
|
+ private void SearchParentFiles()
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 上传文件
|
|
|
/// </summary>
|
|
@@ -248,6 +293,9 @@ namespace PDF_Office.ViewModels.HomePanel.CloudDrive.CloudDriveType
|
|
|
public static string[] Scopes = { DriveService.Scope.Drive };
|
|
|
//Google Drive应用名称
|
|
|
private static readonly string GoogleDriveAppName = "PDF Office";
|
|
|
+ public static readonly string MimeType = "application/pdf";
|
|
|
+ public static readonly string FolderType = "application/vnd.google-apps.folder";
|
|
|
+
|
|
|
//请求应用进行身份验证的信息
|
|
|
public static string CredentialsPath { get; private set; }
|
|
|
|
|
@@ -296,15 +344,15 @@ namespace PDF_Office.ViewModels.HomePanel.CloudDrive.CloudDriveType
|
|
|
CancellationToken.None,
|
|
|
new FileDataStore(FilePath, true)).Result;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//create Drive API service.
|
|
|
DriveService service = new DriveService(new BaseClientService.Initializer()
|
|
|
{
|
|
|
HttpClientInitializer = credential,
|
|
|
ApplicationName = GoogleDriveAppName
|
|
|
});
|
|
|
-
|
|
|
return tuple = new Tuple<DriveService, UserCredential>(service, credential);
|
|
|
+
|
|
|
}
|
|
|
catch (Exception e)
|
|
|
{
|