Exporte arquivos para o DigitalOcean Spaces com facilidade
Hoje, apresentamos o novo Robot /digitalocean/store, que permite exportar os resultados da sua Assembly para o Spaces Object Storage da DigitalOcean. Ele adiciona mais uma opção à lista de provedores de exportação de arquivos que já suportamos, como Amazon S3, Rackspace Cloud Files e Dropbox. Confira a lista completa na nossa documentação.
O Robot /digitalocean/store
Você pode usar o Robot /digitalocean/store para enviar seus arquivos ou os resultados da sua Assembly para o DigitalOcean Spaces para armazenamento de longo e curto prazo. Você pode configurar seus arquivos para que fiquem disponíveis publicamente ou privados na sua conta.

Construído sobre o sistema de armazenamento de código aberto Ceph, o Spaces oferece suporte à maioria dos recursos do Amazon S3. Ou seja, se você já usa o nosso Robot /s3/store, a API deve parecer bem familiar.
Neste post do blog, vamos guiar você pelo processo de configurar uma conta no DigitalOcean Spaces, transcodificar seus arquivos e exportar os resultados para a sua conta do Spaces. Se você só quer dar uma olhada na API do Robot e testá-lo por conta própria, confira a documentação dele e o exemplo de Assembly Instructions abaixo:
{
"steps": {
":original": {
"robot": "/upload/handle"
},
"store": {
"use": ":original",
"robot": "/digitalocean/store",
"credentials": "spaces-store-demo",
"space": "spaces-store-demo",
"acl": "public-read"
}
}
}
Configurando o DigitalOcean Spaces
O primeiro passo é criar uma conta na DigitalOcean, caso você ainda não tenha uma. Acesse digitalocean.com para começar.
Em seguida, vá até a aba Spaces para criar um novo Space, que vamos chamar de
spaces-store-demo. Selecione a região de datacenter mais próxima de onde você vai buscar os
dados. Aqui, selecionamos fra1 / Frankfurt.

Depois de criado, temos uma conta do Spaces vazia para a qual podemos começar a exportar arquivos:

Para que o nosso Robot consiga se comunicar com a API do DigitalOcean Spaces, também precisamos criar um par de chaves de acesso do Spaces. Você pode fazer isso na seção API da sua conta da DigitalOcean. É melhor manter esta aba aberta por enquanto, pois vamos precisar da chave pública e da chave secreta privada nas próximas etapas. Nunca compartilhe essas credenciais com alguém que você não queira que tenha acesso de gravação ao seu Space.

Criando Credenciais de Template
Terminamos com a DigitalOcean por enquanto, então vamos até transloadit.com criar uma conta gratuita! Confira nossa página de preços para ver os planos atuais e o volume de codificação incluído.
Para oferecer mais segurança e facilitar a reutilização, a Transloadit permite criar Credenciais
de Template e guarda os segredos para você. Depois de fazer login, acesse sua conta e selecione
Credenciais de Template. Escolha o serviço de terceiros Digital Ocean Spaces e insira as
credenciais do seu Space da seguinte forma, substituindo nome do space, região, ID da chave e
chave de acesso secreta conforme necessário:

Clique em salvar e pronto! O nome da Credencial de Template (neste caso,
spaces-store-demo) é o que vamos usar na próxima etapa.
Detectando rostos
Finalmente, vamos enviar alguns arquivos para uma nova Assembly! Nosso exemplo vai usar os Robots /image/facedetect e /digitalocean/store. Quando terminarmos, você poderá enviar arquivos de imagem nos quais todos os rostos humanos serão detectados e enviados separadamente para o seu Space da DigitalOcean.
Neste guia, usamos a ferramenta de linha de comando curl(1),
que muito provavelmente já está instalada no seu computador, para interagir com a API da Transloadit.
Se você usa Windows, confira as
instruções oficiais do curl para Windows.
Antes, mais uma etapa de preparação: acesse as configurações de API da sua conta Transloadit e copie a Auth Key.

(Não se preocupe, geramos um novo Secret depois de tirar esta captura de tela 😄)
Em seguida, crie um arquivo com estas Assembly Instructions, que vamos chamar de
params.json. Substitua auth.key pela sua Auth Key pessoal.
{
"auth": {
"key": "YOUR_AUTH_KEY"
},
"steps": {
"face-detect": {
"use": ":original",
"robot": "/image/facedetect",
"crop": true,
"faces": "each"
},
"store": {
"use": "face-detect",
"robot": "/digitalocean/store",
"credentials": "spaces-store-demo",
"space": "spaces-store-demo",
"acl": "public-read"
}
}
}
A Assembly é composta por dois Steps:
- Detectar rostos e extrair cada rosto detectado como uma imagem recortada
- Enviar os rostos extraídos para o seu Space da DigitalOcean, usando permissões
public-read, para que os arquivos fiquem acessíveis publicamente
Testando a Assembly
Agora só falta uma peça: colocar toda a engrenagem para funcionar com um único comando!
Você vai precisar de uma imagem com alguns rostos para testar sua Assembly. Se não tiver uma à mão, pode usar esta:

Execute o seguinte comando curl(1) no seu terminal, na mesma pasta em que params.json e
a imagem de origem (aqui, group.jpg) estão armazenados. Redirecione a saída para
json_pp(1) para obter uma saída JSON bem
formatada.
curl \
-s \
-XPOST \
-F params="$(< params.json)" \
-F original=@group.jpg \
https://api2.transloadit.com/assemblies \
| json_pp
Se você está curioso para saber por que o comando
curl(1)tem essa aparência:
-sfaz ocurl(1)ficar em silêncio, para que vejamos apenas o corpo da resposta HTTP-XPOSTtransforma esta requisição em um POST-F ...: a Transloadit usa formposts HTTP multipart, para que o cliente possa enviar tanto as Assembly Instructions quanto os arquivos em uma única requisição (e para que a nossa API possa ser integrada com os bons e velhos<form>s). Aqui usamos-Fpara enviarparams.jsonegroup.jpg.
Acesse a página Assemblies da sua conta Transloadit e clique na primeira linha para ver os resultados!

Como você pode ver, no nosso caso foram detectados dois rostos. Clique nos botões ABRIR ao lado de cada resultado para ver os rostos recortados, servidos a partir do seu Space recém-criado na DigitalOcean!


Fim
É isso! Esperamos que você tenha gostado deste post e que esteja ansioso pelo próximo. E se quiser experimentar, crie hoje mesmo uma conta gratuita na Transloadit!
