sexta-feira, 14 de abril de 2017

Utilizando a API do Google Drive no C# e VB.NET - Parte 4


Baixando um arquivo do Google Drive

Até agora nós já vimos como listar arquivos no Google Drive e como criar e deletar pastas e arquivos. O que é que está faltando? O download de arquivos! Esse é um dos procedimentos mais tranquilos de serem feitos com a API do Google Drive. Nós só temos que criar um request com o método “Files.Get” passando o “id” do arquivo a ser baixado e, em seguida, chamamos o método “Download” passando a “Stream” onde o arquivo deverá ser salvo. Veja só como é simples:
1
2
3
4
5
6
7
8
9
10
11
12
13
// C#
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);
        }
    }
}
1
2
3
4
5
6
7
8
9
10
' VB.NET
Private Sub Download(Servico As Google.Apis.Drive.v3.DriveService, Nome As String, Destino As String)
    Dim Ids = ProcurarArquivoId(Servico, Nome)
    If Ids IsNot Nothing AndAlso Ids.Any() Then
        Dim Request = Servico.Files.[Get](Ids.First())
        Using Stream = New System.IO.FileStream(Destino, System.IO.FileMode.Create, System.IO.FileAccess.Write)
            Request.Download(Stream)
        End Using
    End If
End Sub
Para baixarmos o “arquivo.txt” que fizemos o upload na seção anterior, a chamada ficaria assim:
1
2
3
4
5
6
// C#
Console.Clear();
Console.WriteLine("Download");
Download(servico, "arquivo.txt", "arquivoBaixado.txt");
Console.WriteLine("Fim Download");
Console.ReadLine();
1
2
3
4
5
6
' VB.NET
Console.Clear()
Console.WriteLine("Download")
Download(Servico, "arquivo.txt", "arquivoBaixado.txt")
Console.WriteLine("Fim Download")
Console.ReadLine()

Enviando um item para a lixeira

Por fim, a última coisa que quero mostrar para você neste artigo é: como enviamos um item para a lixeira? Na segunda versão da API do Google Drive, nós tínhamos à nossa disposição um método específico para enviar um item para a lixeira. Porém, na terceira versão da API a Google decidiu remover esse método.
Para enviarmos um item para a lixeira, nós temos que recuperar o seu “id“, criar uma instância da classe “File” e marcar a propriedade “Trashed” como verdadeiro. Em seguida, nós criamos um request para o método “Files.Update” enviando essa instância de “File“:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// C#
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();
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
' VB.NET
Private Sub MoverParaLixeira(Servico As Google.Apis.Drive.v3.DriveService, Nome As String)
    Dim Ids = ProcurarArquivoId(Servico, Nome)
    If Ids IsNot Nothing AndAlso Ids.Any() Then
        For Each Id In Ids
            Dim Arquivo = New Google.Apis.Drive.v3.Data.File()
            Arquivo.Trashed = True
            Dim Request = Servico.Files.Update(Arquivo, Id)
            Request.Execute()
        Next
    End If
End Sub
A chamada desse método não tem segredo. Basta passarmos o nome do arquivo ou pasta que deverá ser mandado para a lixeira:
1
2
3
4
5
6
// C#
Console.Clear();
Console.WriteLine("Lixeira");
MoverParaLixeira(servico, "arquivo.txt");
Console.WriteLine("Fim Lixeira");
Console.ReadLine();
1
2
3
4
5
6
' VB.NET
Console.Clear()
Console.WriteLine("Lixeira")
MoverParaLixeira(Servico, "arquivo.txt")
Console.WriteLine("Fim Lixeira")
Console.ReadLine()

Concluindo

O acesso à API do Google Drive em projetos .NET não é tão complicado de se implementar. Existem alguns detalhes que são chatos, mas, uma vez que entendemos o funcionamento da API, fica fácil de fazer qualquer tipo de manipulação do Google Drive a partir da nossa aplicação.
No artigo de hoje você aprendeu a habilitar a API do Google Drive na sua conta, bem como a geração do arquivo de credenciais que é necessário para o seu acesso. Em seguida, vimos como listar, fazer o upload, download e exclusão de arquivos do Google Drive no C# e VB.NET. Além disso, nós conferimos também como mandar itens para a lixeira.
E você, já precisou fazer alguma integração com o Google Drive nas suas aplicações? Já pensou na possibilidade de armazenar alguns dados da sua aplicação na sua conta do Google Drive? Quem sabe algum backup ou disponibilizar novas versões da aplicação? Conte pra gente nos comentários a sua experiência com o Google Drive ou talvez as ideias que você teve após ter lido este artigo.

Baixe o projeto de exemplo

Para baixar o projeto de exemplo desse artigo, assine a minha newsletter. Ao fazer isso, além de ter acesso ao projeto, você receberá um e-mail toda semana sobre o artigo publicado e ficará sabendo também em primeira mão sobre o artigo da próxima semana, além de receber dicas “bônus” que eu só compartilho por e-mail. Inscreva-se utilizando o formulário no final do artigo.
Até a próxima!
André Lima

Um comentário: