This is my code and I can't understand how to modify it to create a directory in the 'shared with me' folder
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GoogleDriveConsole
{
class Program
{
static void Main(string[] args)
{
var credenciais = Autenticar();
using (var servico = AbrirServico(credenciais))
{
//// listar
//console.writeline("listagem");
//listararquivos(servico);
//console.writeline("fim listagem");
//console.readline();
//// listagem paginada
//console.clear();
//console.writeline("listagem paginada");
//listararquivospaginados(servico, 10);
//console.writeline("fim listagem paginada");
//console.readline();
// Criar diretorio
Console.Clear();
Console.WriteLine("Criar diretório");
CriarDiretorio(servico, "NovoDiretorio");
Console.WriteLine("Fim Criar diretório");
Console.ReadLine();
// Deletar
Console.Clear();
Console.WriteLine("Deletar item");
DeletarItem(servico, "NovoDiretorio");
Console.WriteLine("Fim Deletar item");
Console.ReadLine();
// Upload
Console.Clear();
Console.WriteLine("Upload");
Upload(servico, "arquivo.txt");
Console.WriteLine("Fim Upload");
Console.ReadLine();
// Download
Console.Clear();
Console.WriteLine("Download");
Download(servico, "arquivo.txt", "arquivoBaixado.txt");
Console.WriteLine("Fim Download");
Console.ReadLine();
// Lixeira
Console.Clear();
Console.WriteLine("Lixeira");
MoverParaLixeira(servico, "arquivo.txt");
Console.WriteLine("Fim Lixeira");
Console.ReadLine();
}
}
private static Google.Apis.Auth.OAuth2.UserCredential Autenticar()
{
Google.Apis.Auth.OAuth2.UserCredential credenciais;
using (var stream = new System.IO.FileStream("client_id.json", System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
var diretorioAtual = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
var diretorioCredenciais = System.IO.Path.Combine(diretorioAtual, "credential");
credenciais = Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.AuthorizeAsync(
Google.Apis.Auth.OAuth2.GoogleClientSecrets.Load(stream).Secrets,
//new[] { Google.Apis.Drive.v3.DriveService.Scope.DriveReadonly },
new[] { Google.Apis.Drive.v3.DriveService.Scope.Drive },
"user",
System.Threading.CancellationToken.None,
new Google.Apis.Util.Store.FileDataStore(diretorioCredenciais, true)).Result;
}
return credenciais;
}
private static Google.Apis.Drive.v3.DriveService AbrirServico(Google.Apis.Auth.OAuth2.UserCredential credenciais)
{
return new Google.Apis.Drive.v3.DriveService(new Google.Apis.Services.BaseClientService.Initializer()
{
HttpClientInitializer = credenciais
});
}
private static void ListarArquivos(Google.Apis.Drive.v3.DriveService servico)
{
//var request = servico.Files.List();
//request.Fields = "files(id, name)";
//var resultado = request.Execute();
//var arquivos = resultado.Files;
//if (arquivos != null && arquivos.Any())
//{
// foreach (var arquivo in arquivos)
// {
// Console.WriteLine(arquivo.Name);
// }
//}
ListarArquivosPaginados(servico, 1000);
}
private static void ListarArquivosPaginados(Google.Apis.Drive.v3.DriveService servico, int arquivosPorPagina)
{
var request = servico.Files.List();
request.IncludeItemsFromAllDrives = true;
request.SupportsAllDrives = true;
request.Fields = "nextPageToken, files(id, name)";
//request.Q = "trashed=false";
// Default 100, máximo 1000.
request.PageSize = arquivosPorPagina;
var resultado = request.Execute();
var arquivos = resultado.Files;
while (arquivos != null && arquivos.Any())
{
foreach (var arquivo in arquivos)
{
Console.WriteLine(arquivo.Name);
}
if (resultado.NextPageToken != null)
{
Console.WriteLine("Digite ENTER para ir para a próxima página");
Console.ReadLine();
request.PageToken = resultado.NextPageToken;
resultado = request.Execute();
arquivos = resultado.Files;
}
else
{
arquivos = null;
}
}
}
private static void CriarDiretorio(Google.Apis.Drive.v3.DriveService servico, string nomeDiretorio)
{
var diretorio = new Google.Apis.Drive.v3.Data.File();
diretorio.Name = nomeDiretorio;
diretorio.MimeType = "application/vnd.google-apps.folder/";
var request = servico.Files.Create(diretorio);
request.Execute();
}
private static string[] ProcurarArquivoId(Google.Apis.Drive.v3.DriveService servico, string nome, bool procurarNaLixeira = false)
{
var retorno = new List<string>();
//var request = servico.Files.List();
//request.Q = string.Format("name = '{0}'", nome);
//if (!procurarNaLixeira)
//{
// request.Q += " and trashed = false";
//}
//request.Fields = "files(id)";
//var resultado = request.Execute();
//var arquivos = resultado.Files;
//if (arquivos != null && arquivos.Any())
//{
// foreach (var arquivo in arquivos)
// {
// retorno.Add(arquivo.Id);
// }
//}
var arquivos = ProcurarArquivo(servico, nome, procurarNaLixeira);
if (arquivos != null && arquivos.Any())
{
retorno.AddRange(arquivos.Select(a => a.Id));
}
return retorno.ToArray();
}
private static Google.Apis.Drive.v3.Data.File[] ProcurarArquivo(Google.Apis.Drive.v3.DriveService servico, string nome, bool procurarNaLixeira = false)
{
var retorno = new List<Google.Apis.Drive.v3.Data.File>();
var request = servico.Files.List();
request.Q = string.Format("name = '{0}'", nome);
if (!procurarNaLixeira)
{
request.Q += " and trashed = false";
}
request.Fields = "files(id)";
var resultado = request.Execute();
var arquivos = resultado.Files;
if (arquivos != null && arquivos.Any())
{
foreach (var arquivo in arquivos)
{
retorno.Add(arquivo);
}
}
return retorno.ToArray();
}
private static void DeletarItem(Google.Apis.Drive.v3.DriveService servico, string nome)
{
var ids = ProcurarArquivoId(servico, nome);
if (ids != null && ids.Any())
{
foreach (var id in ids)
{
var request = servico.Files.Delete(id);
request.Execute();
}
}
}
private static void Upload(Google.Apis.Drive.v3.DriveService servico, string caminhoArquivo)
{
//var arquivo = new Google.Apis.Drive.v3.Data.File();
//arquivo.Name = System.IO.Path.GetFileName(caminhoArquivo);
//arquivo.MimeType = MimeTypes.MimeTypeMap.GetMimeType(System.IO.Path.GetExtension(caminhoArquivo));
//using (var stream = new System.IO.FileStream(caminhoArquivo, System.IO.FileMode.Open, System.IO.FileAccess.Read))
//{
// var request = servico.Files.Create(arquivo, stream, arquivo.MimeType);
// request.Upload();
//}
var arquivo = new Google.Apis.Drive.v3.Data.File();
arquivo.Name = System.IO.Path.GetFileName(caminhoArquivo);
arquivo.MimeType = MimeTypes.MimeTypeMap.GetMimeType(System.IO.Path.GetExtension(caminhoArquivo));
//adicional de envio para diretorio especifico
var idPasta = ProcurarArquivoId(servico, "NovoDiretorio").First();
arquivo.Parents = new List<string>(new string[] { idPasta });
using (var stream = new System.IO.FileStream(caminhoArquivo, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
var ids = ProcurarArquivoId(servico, arquivo.Name);
Google.Apis.Upload.ResumableUpload<Google.Apis.Drive.v3.Data.File, Google.Apis.Drive.v3.Data.File> request;
if (ids == null || !ids.Any())
{
//request = servico.Files.Create(arquivo, stream, arquivo.MimeType);
var theRequest = servico.Files.Create(arquivo, stream, arquivo.MimeType);
theRequest.Fields = "id, parents";
request = theRequest;
}
else
{
request = servico.Files.Update(arquivo, ids.First(), stream, arquivo.MimeType);
}
request.Upload();
}
}
private static void Download(Google.Apis.Drive.v3.DriveService servico, string nome, string destino)
{
var ids = ProcurarArquivoId(servico, nome);
if (ids != null && ids.Any())
{
var request = servico.Files.Get(ids.First());
using (var stream = new System.IO.FileStream(destino, System.IO.FileMode.Create, System.IO.FileAccess.Write))
{
request.Download(stream);
}
}
}
private static void MoverParaLixeira(Google.Apis.Drive.v3.DriveService servico, string nome)
{
var ids = ProcurarArquivoId(servico, nome);
if (ids != null && ids.Any())
{
foreach (var id in ids)
{
var arquivo = new Google.Apis.Drive.v3.Data.File();
arquivo.Trashed = true;
var request = servico.Files.Update(arquivo, id);
request.Execute();
}
}
}
}
}