Série Dropbox: Enviando arquivos para o Dropbox via Java Application

 
Olá Pessoal, 
 
Venho trabalhando há um bom tempo com API do Dropbox em web apps. No post de hoje vamos ver como enviar um arquivo para uma conta no dropbox via Java Application. É um verdadeiro upload via console. 
 
Lets go…
 
O cenário
 
Imagine que você queira ter um upload na sua aplicação. Nada de diferente aqui, mas sabemos que há várias formas de fazer isso e temos bastante frameworks Java que nos ajudam. Mas, como fazer de forma rápida e segura? Aqui usamos o serviço do Dropbox para armazenamento de arquivos que vem da aplicação. Isso nos ajuda em vários pontos:
 
1. Segurança: Certamente o time do dropbox é preocupado com isso;
 
2. Histórico: Por default o dropbox mantém um histórico do arquivo, então em caso de precisar retornar uma versão é muito simples; 
 
 
3. Baixo custo de desenvolvimento: API do dropbox é bem documentada e tem suporte a diversas linguagens. O que teremos que fazer é sempre implementar algo muito específico ou encapsular algumas features mais comuns para evitar de ter código repetido em várias partes da aplicação; 
 
Ai nasceu no laboratorio da ITS a easyJavaDropboxAPI, que nos ajuda no dia a dia. A API ainda está nas primeiras versões e recentemente acabou de sair a versão 1.1.0 com algumas funcionalidades e melhorias e uma delas é permitir salvar arquivos no dropbox (a versão anterior nos permitia apenas ler um arquivo). O método na API que salva um arquivo é assim:
 
public void saveToDropbox(String finalName,InputStream inputStreamContent) throws DbxException,IOException;

 

Vamos ver na prática 
 
 
Metendo a mão na massa  
 
Primeiro Passo
 
Vamos usar o projeto easyJavaDropboxAPIExample que vimos no post:
 
Então você precisa ter feito os passos descritos no post acima.
 
Segundo Passo
 
Se fez o passo 1, certamente consegue listar os arquivos. 
 
Terceiro Passo
 
Atualize o pom.xml para usar a versão mais nova da API:
 
<dependencies>
<dependency>
<groupId>com.its.api</groupId>
<artifactId>easyJavaDropboxAPI</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>

 

Quarto Passo 
 
Agora vamos adicionar o código que fará o upload. Não vamos modificar o código existente, apenas adicionar. No método main adicone as seguintes linhas:
 
//upload service
EasyJavaDropBoxServiceImpl upload = new EasyJavaDropBoxServiceImpl(token);
saveToDropbox(upload);

O código com o método main completo ficou assim: 

public static void main(String[] args) throws DbxException, IOException {
String token = "your token here";
String path = "/";
EasyJavaDropBoxService easyJavaDropBoxService = new EasyJavaDropBoxServiceImpl(path, token);
List<DbxEntry> listFiles = easyJavaDropBoxService.listFiles();
for (DbxEntry file : listFiles) {
System.out.println(file.name);
}
//upload service
EasyJavaDropBoxServiceImpl upload = new EasyJavaDropBoxServiceImpl(token);
saveToDropbox(upload);
}

Lembre-se de que é preciso gerar o token para sua conta. Quando tiver o token coloque como valor na variável token. Agora vamos criar o método que salva o arquivo no dropbox:

  

private static void saveToDropbox(EasyJavaDropBoxService uploadEasyJavaDropBoxService) throws DbxException, IOException {
//creating new file
File file = new File("camilotestedropbox2.txt");
file.createNewFile();
//writing content in file
FileWriter fileWriter = new FileWriter(file);
fileWriter.write("Test upload to dropbox  api");
fileWriter.close();

try {
FileInputStream fileInputStream = new FileInputStream(file);
String fileName = file.toString();
//calling method from easyJavaDropboxAPI
uploadEasyJavaDropBoxService.saveToDropbox(fileName, fileInputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}

}

Testando 

Agora chegou a hora de testar. Rode a aplicação e vamos ver a saída no console: 
 
dropboxuploadconsole
 
Na imagem acima são listados os arquivos que tenho no meu dropbox. Agora vamos ver se no dropbox tem o novo arquivo que criei: 
 
dropboxfileuploadeddone
 
Pronto, arquivo enviado para o dropbox. Simples, não? 
 
O projeto foi atualizado no Github:
 
 
Vou ficando por aqui. Espero que tenham gostado do post. 
 
Abracos, see ya!!!

Série Dropbox: Por que usar easyJavaDropboxAPI?

Olá Pessoal, 
 
Hoje vou falar rapidinho sobre a easyJavaDropbox API. Recebi um e-mail recentemente de um leitor perguntando por que ele deveria usar a easyJavaDropboxAPI já que pode usar diretamente API do dropbox. 
 
Lets go… 
 
 
Por que usar easyJavaDropboxAPI? 
 
A motivação com que criei a easyJavaDropboxAPI foi para encapsular algumas funcionalidades da API do dropbox. Se você usa muito recurso da API vai ver que tende a criar código repetido ou terá que criar uma classe utilitária para tratar e evitar código repetido. Ao invés de criarmos uma classe utilitária, que tal uma API que pudesse ser usada em outros projetos? Assim nasceu a easyJavaDropboxAPI. 
 
A API ainda está em uma fase bem inicial e simples. Estamos já com a pre-release da versão 1.2.0 e vamos atualizando constatemente à medida que identificamos novas funcionalidades que seria interessante na API e que deveria ser encapsulada. 
 
Quando devo usar? 
 
– Se precisa salvar um arquivo no dropbox via upload temos um método que resolve isso facilmente; 
– Se precisa listar e obter arquivos que estão no dropbox; 
– Se quer pesquisar um arquivo no dropbox, temos essa funcionalidade já implementada; 
  
Ainda temos poucas funcionalidades, na verdade todas elas foram nascendo com cases reais de projetos, e vamos evoluindo a API dessa maneira, pegando requisitos de mercado e melhorando.
 
Conclusão 
 
Se você quer uma forma mais simples de se conectar com o dropbox, a easyJavaDropbox API vai te ajudar evitando escrever mais código do que precisa. Uma outra vantagem que ganhamos foi de separar o código de terceiros do nosso código de negócio, pois apesar de usarmos as funcionalidades do dropbox para resolver problemas de negócio queríamos manter o código separado porque se amanhã deixarmos de usar o serviço do dropbox, o que iremos fazer? Então mantivemos isso separado usando a API e a troca do dropbox por um outro serviço, seja de terceiro ou próprio. É simples, fácil e com um custo de manutenção aceitável. Nada de big refactoring :). 
 
Github do Projeto
 
 
Vou ficando por aqui, e não deixe de mandar sugestões, críticas etc.

Série Dropbox Lançamento easyJavaDropboxAPI for Java Developer

Olá Pessoal,

É com muito prazer que venho apresentar pra vocês mais um trabalho da minha start-up: a ITS. Estamos trabalhando bastante com o dropbox aqui para soluções corporativas, e até final do ano devemos lançar uma plataforma para comunidade que vai estar usando a tecnologia. Nesse trabalho percebemos que era necessário criar uma API Java para o dropboxAPI. O motivo? Tínhamos muito trabalho sempre que um projeto ia precisar o dropbox API, ai decidi criar uma API  que chamei de easyJavaDropboxAPI. Como sabemos, qualidade de software, produtividade e manutenção é um desafio sempre e aqui acreditamos bastante no aprendizado contínuo para melhorar o que fizemos ontem, hoje e amanhã.  A seguir explico mais sobre a API e mostro um exemplo simples de uma aplicação Java  + easyJavaDropboxAPI.

lets go…

easyJavaDropboxAPI

Tudo começou de uma simples ideia, e enquanto fui dormir com um problema achei a solução durante os sonhos. Pode acreditar, foi verdade isso. Dei inicio aos estudos e achei a solução na api do dropbox. Infelizmente não posso entrar em detalhes do negócio, pois foi para um projeto corporativo que usamos. Outros projetos chegaram e precisamos da API, então certa hora eu disse “pessoal, precisamos criar uma API Java para o dropbox API. Já temos vários projetos usando e vai ser complicado dar manutenção”. Antes de tornar a easyJavaDropboxAPI pública, ela tinha outro nome, easyDropboxAPI. E por que eu deveria usar a easyJavaDropboxAPI e não diretamente API dropbox API?

É dificil responder a pergunta acima, mas vou mostrar os motivos que nos levou aqui na ITS a termos uma API .

 

Problemas

Produtividade

Estamos crescendo com soluções enterprise usando dropbox API e já estávamos entrando no terceiro projeto quando vimos que o custo de manutenção estava começando a aparecer. No inicio não tínhamos noção do quanto a API poderia ajudar em outros projetos e foi preciso usar em um projeto interno, testar por um período não só a funcionalidade, mas outros fatores de negócio. Por isso que não começamos criando uma API, mas a coisa “virou” e agora queremos ganhar tempo, e com a API é muito simples sair usando em meia dúzia de linhas e em poucos minutos você já está conectado ao dropbox.

Manutenção

Agora não é preciso ficar preocupado com a manutenção do código que conecta com a API do dropbox. Como o dropbox team está sempre atualizando e lançando novas features, temos apenas um único local que vai ter essa feature atualizada e os projetos que precisarem faz o update do .jar para a versão mais recente.

Desenvolvimento Ágil

Na interface temos os métodos mais comuns e objetos do dropbox API que é a base do serviço, então um desenvolvedor novo precisa inicialmente entender pontualmente e à medida que ele for evoluindo vai entrando nos detalhes. Por exemplo, se você pretende listar os arquivos que está no diretório /home do seu dropbox o que precisa ser feito?

1. Saber o que é um token e gerar um;

2. Chamar o método listFiles que retorna todos os arquivos do diretório informado

Cada elemento no list é um arquivo do diretório.

Esses três pontos foram o suficiente para termos API e impactou bastante no dia a dia desenvolvimento.

Vamos ver na prática?

Praticando

1. Crie um simple maven project

2. Adicione a dependência no pom.xml

dropboxeasyjavaapipom

 

<dependency>

<groupId>com.its.api</groupId>

<artifactId>easyJavaDropboxAPI</artifactId>

<version>1.0.0</version>

</dependency>

 

3. Adicione o nosso repositório no pom.xml

<repositories>

<repository>

<id>easyJavaDropboxAPI</id>

<url>https://raw.github.com/ITSStartup/easyJavaDropboxAPI/mvn-repo</url>

<snapshots>

<enabled>true</enabled>

<updatePolicy>always</updatePolicy>

</snapshots>

</repository>

</repositories>

 

4. Crie uma classe Java com o método main

 

public class DropboxMain {

public static void main(String[] args) throws DbxException {

String token = "TOKEN HERE";

EasyJavaDropBoxService easyJavaDropBoxService = new EasyJavaDropBoxServiceImpl(path, token);

List<DbxEntry> listFiles = easyJavaDropBoxService.listFiles();

for (DbxEntry file : listFiles) {

System.out.println(file.name);

}

}

}

 

5. Gere o token seguindo as instruções:

http://apps.camilolopes.com.br/dpboxapiweb

 

6. Rode aplicação e verá:

dropboxconsoleasyapi

 

Pronto, os arquivos que tenho na pasta são listados.

Simples, não?

O projeto de exemplo está disponível no repositório da ITS.

E caso queriam saber mais sobre API, visite o repositório:

https://github.com/ITSStartup/easyJavaDropboxAPI

Abracos. See ya!!!