Potenciando Latch a través de los plugins GoLatch y Latch-cmd

Después de un parón que viene durando unos meses, vuelvo a escribir unas líneas en este espacio con ocasión del evento Security Day 2016 organizado por Eleven Paths, que se celebrará el próximo 26 de mayo en Madrid y al que asistiré para presentar los proyectos GoLatch y Latch-cmd que presenté al concurso de plugins de Latch 2015 y que me han valido el segundo premio en esta segunda edición.

Mi compañero Fausto ya os habló en su día sobre Latch y cómo integrar este servicio en Codeigniter y yo quería aprovechar mi regreso a la actividad bloguera para hablaros un poco de estos dos plugins que he desarrollado para el concurso y que podéis encontrar en Github.

GoLatch

El primer “plugin” desarrollado se llama GoLatch y es una implementación del SDK de Latch en el lenguaje de programación Go. Como seguramente sabéis, Latch dispone de SDKs que permiten integrar este servicio en los lenguajes de programación más utilizados como Java, PHP o Javascript y en multitud de aplicaciones como WordPress o Drupal. Sin embargo, hasta ahora no había ninguna implementación para Go, por lo que me pareció interesante desarrollar una, para probar y aprender el lenguaje.

Pero… ¿por qué Go? En mi opinión es un lenguaje muy a tener en cuenta, apoyado por un gigante como Google y que está ganando bastante popularidad. Go destaca por ser un lenguaje sencillo de entender y aprender, compilado (mucho más rápido que lenguajes interpretados como PHP o Ruby) y multi-plataforma (permite escribir programas que se compilan para Windows, GNU/Linux y otros sistemas operativos). Go además dispone de una excelente librería estándar y está siendo utilizado con éxito para desarrollar micro-servicios y aplicaciones/servicios web. Es en estos ámbitos donde creo precisamente que se puede sacar el máximo potencial de un servicio como Latch.

Por estas razones, me pareció interesante desarrollar una implementación del SDK de Latch (cuya API actualmente está en la versión 1.0) que permitiera integrar este servicio de forma sencilla en cualquier aplicación escrita en Go. Dicha implementación consta de un paquete alojado en Github listo para ser utilizado. Teniendo Go instalado, es posible descargar e instalar GoLatch utilizando el comando go get:

$ go get github.com/millenc/golatch

Una vez descargado, podemos comenzar a utilizar GoLatch importando el paquete y utilizando las funciones disponibles. Por ejemplo, podemos escribir el siguiente programa para parear una nueva cuenta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main
 
//Importamos el paquete
import golatch "github.com/millenc/golatch"
 
func main() {
//Inicializamos la instancia de Latch con el ID de aplicación y la clave secreta
latch := golatch.NewLatch("MyAppID", "MySecretKey")
 
//Pareamos la cuenta utilizando el token de usuario MyToken
if err := latch.Pair("MyToken"); err == nil {
//Si todo ha ido bien podemos obtener el ID de la cuenta pareada
account_id := response.AccountId()
}
}

Se puede encontrar una extensa documentación de todas las funcionalidades del paquete con ejemplos en el repositorio de Github y en GoDoc (funciones y tipos de datos).

Latch-cmd

El segundo proyecto que desarrollé y presenté al concurso tiene por nombre Latch-cmd y es una aplicación que permite interactuar con la API de Latch mediante comandos (consola). Esta aplicación está desarrollada también en Go y hace uso del paquete GoLatch para la comunicación con la API de Latch. Con esta aplicación es posible, por ejemplo, parear y desparear una cuenta, consultar el estado de un pestillo y en general utilizar todas las funcionalidades que ofrece Latch mediante comandos simples.

La principal motivación para desarrollar esta aplicación ha sido el poder disponer de una herramienta que permitiera integrar Latch en otros programas y scripts de forma sencilla sin necesidad de programar. La herramienta además puede ser útil para depurar y probar otras implementaciones, ya que incluye algunas opciones que permiten ver cómo se está realizando la interacción con el servicio (peticiones y respuestas).

Latch-cmd está disponible para los sistemas operativos más utilizados (en Github se pueden encontrar los ejecutables) como un único fichero ejecutable sin dependencias, cuya instalación es tan sencilla como descargar el binario apropiado para cada sistema y guardarlo en algún lugar del Path (rutas en las que el sistema busca los ejecutables). Una vez instalada, la aplicación se puede ejecutar desde la consola escribiendo el comando:

$ latch-cmd

que mostrará la página de ayuda con todas las funciones disponibles. A dichas funciones se accede por medio de subcomandos tales como $ latch-cmd app status, que permite obtener el estado de un pestillo (activado o desactivado). Así por ejemplo, para parear una cuenta (mismo ejemplo que hemos visto antes en GoLatch) bastaría con utilizar el siguiente comando:

$ latch-cmd app pair --app=MyAppID --secret=MySecretKey --token=MyToken

donde MyAppID y MySecretKey son el ID y la clave secreta de nuestra aplicación (que hay que crear previamente) y MyToken es el código obtenido en la app móvil. Si todo es correcto, latch-cmd realizará el pareo de la nueva cuenta y devolverá el identificador de la misma para futuras consultas.

Se puede obtener ayuda para cada una de las funciones utilizando la opción –help (-h) o el comando help. Por ejemplo, para saber cómo utilizar la función para obtener el estado de un pestillo app status bastaría con utilizar alguno los siguientes comandos:

$ latch-cmd app status --help
$ latch-cmd app status -h
$ latch-cmd help app status

Como en el caso de GoLatch, en el repositorio de Github se puede encontrar una extensa documentación con ejemplos sobre cómo utilizar todas las funcionalidades de la herramienta, así como las opciones de configuración disponibles.

En el siguiente vídeo de Youtube podéis ver una breve explicación sobre cómo descargar, instalar y utilizar latch-cmd.

Conclusiones

Desde el punto de vista personal, el desarrollo de este par de proyectos ha sido muy interesante, ya que me han permitido aprender lo básico sobre un nuevo lenguaje (Go) y desarrollar nuevas herramientas para un servicio tan útil como Latch. Seguramente dedicaré otra entrada en este blog a explicar un ejemplo práctico acerca de cómo utilizar Latch-cmd en otros programas y scripts y que quizá podrá servir como idea o punto de partida para futuros plugins o integraciones, ¡Estad atentos!

The following two tabs change content below.

Mikel Pintor

Desarrollador web.

Latest posts by Mikel Pintor (see all)

Compartir: