Skip to content

rodrwan/gridcube-challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Desafio de Gridcube

Desafio

Crear 2 contenedores utilizando docker compose en su versión 3, el primer contenedor debe ser utilizado para generar una conexión vía API al servicio de Instagram para autorizar la autenticación desde el contenedor a un usuario especifico, luego de autorizar el ingreso a Instagram, desde el segundo contenedor se debe publicar una foto aleatoria en la cuenta del usuario con los datos de acceso obtenidos a través del primer contenedor. (es mandatorio usar el sistema de DNS embebido que ofrece docker a través de docker compose para comunicar los contenedores).

Solución

Problemas

Trate de utilizar el API de Instagram y de Facebook (Graph API), ya que la de instagram al parecer será deprecada, sin tener resultados positivos. Esto lo expliqué en extenso en otro email (privado).

Workaround

Busque si existia alguna librería que ya hiciera todo el manejo de sesión y de subida de archivos a Instagram, por suerte, encontre goinsta, esta librería maneja todo lo relacionado con la sesión de instagram y además maneja la subida de imágenes.

Ahora si, la solución

Cree dos contenedores

  • auth que es el encargado de recibir las credenciales de un usuario y además un caption.
  • publisher el cual se encarga de recibir estos datos, autenticar al usuario y buscar una imagen aleatorea desde loremflickr, que luego es posteada a la cuenta de instagram.

Para esta solución use como lenguaje Golang para hacer unos pequeños microservicios. Estos servicios se comunican usando GRPC, auth tiene una interfaz publica REST con un método POST que recibe por medio de un JSON los datos del usuario junto con su caption de la siguiente forma:

{
    "username": "...",
    "password": "...",
    "caption": "Algo bonito sobre la imagen random",
}

Servicio Auth

  • Puerto: 8090
  • Protocolo: HTTP
  • Método: POST
  • Endpoint: /photo

Servicio Publisher

  • Puerto: 8091
  • Protocolo: GRPC
  • Método: UploadImage

¿Cómo correr el código?

$ make run

luego en otra terminal

$ curl -X POST -H "Content-Type:application/json" http://localhost:8090/photo -d '{"username": "---", "password": "---", "caption": "caption de prueba"}'

Si todo sale bien un OK debería desplegarse en la terminal y en la cuenta de instagram la imagen aleatoria.

About

Gridcube challenge

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published