3

AllGocial-CLI Publicar Tweets por terminal usando Go

Osmandi
osmandi
45023

AllGocial-CLI No es el programa de producción ni menos el MVP, es sencillamente una prueba que he estado realizando para poder crear el MVP de AllGocial. En estos momentos solo hace publicaciones de Tweets desde la consola.

AllGocial Es una aplicación destinada a distribuir enlaces y publicaciones en múltiples redes al mismo tiempo: Twitter, Facebook y LinkedIn. Permitiendo la opción de personalizar en cada una de ellas para darle ese toque único que cada red se merece.

En esta ocasión le comparto mi código, que aunque se vea muy sencillo. Hay muchas horas de trabajo invertidas.

Explicando el código

Esto no requiere mucha explicación, solo son el nombre del paquete y las librerías a utilizar. Para usar twitter con Go utilizo Anaconda. Siendo ésta la que mejor respuesta y fácil de uso obtuve.

package main

import ("flag""fmt""io/ioutil""strings""github.com/ChimeraCoder/anaconda"
)

La siguiente función es para el manejo de errores, cerrando el programa si llega a tener un problema leyendo el archivo “keys.txt”.

// Check Errorfunccheck(eerror) {
	ife != nil {
		fmt.Println("Variables de OAuth no seteadas, genera tus propios keys en apps.twitter.com :P")
		panic(e)
	}
}

En el archivo “keys.txt” están los keys proporcionados por twitter para interactuar con sun API, que por medidas de seguridad no los hago públicos. Esta función los captura, convierte en estring y crea un slice a partir de ellos.

// Read variables key
func readVariables() []string {
	fileText, err := ioutil.ReadFile("keys.txt")
	check(err)
	return strings.Split(string(fileText), ",")
}

Vamos con la función main. En esta parte tomamos del archivo “keys.txt” las keys y las seteamos según las indicaciones de la librearía Anaconda.

	// Get variables keyskeys := readVariables()
	anaconda.SetConsumerKey(keys[0])
	anaconda.SetConsumerSecret(keys[1])
	api := anaconda.NewTwitterApi(keys[2], keys[3])

Esto es para poder utilizar flags o banderas. Quienes simplifican en gran medida la entrada de datos. En este caso solo tengo una “-m” haciendo referencia al mensaje de entrada.

// Flag insertvar message *string = flag.String(
		"m",
		"",
		"Message to tweet")

	flag.Parse()

Una vez obtenido el mensaje y seteado los keys, el paso siguiente es publicar el tweet.

// Post Tweet
	_, err := api.PostTweet(*message, nil)
	iferr != nil {
		fmt.Println("No se pudo publicar el tweet", err)
	} else {
		fmt.Println("Tweet publicado exitosamente")
	}

Estado actual

AllGocial-CLI En estos momentos solo publica tweets por terminal utilizando la librería Anaconda (en Go). Su login es completamente manual. Pero si haz desarrollado aplicaciones que usen la API de Twitter, no tendrás problemas en conseguir tus keys.

El código lo consigues aquí.

Su funcionamiento lo puedes ver aquí:

Prueba 7 de AllGocial-cli “Implementando banderas en publicación de tweet”
https://twitter.com/osmandi/status/971556321609834502?ref_src=twsrc

Lo aprendido

AllGocial Es mi primera aplicación que estoy realizando una vez ingresado en Platzi. Pero la idea viene de muchos años atrás solo que no tenía la más remota idea de cómo materializarlo.

El front está hecho en VueJS aplicando los conocimientos de los cursos de VueJS aquí en Platzi y el back lo estoy haciendo en Go.

El front lo hice en un día, pero el back me ha tomado varios ya. Claro teniendo en cuenta el tiempo disponible que puedo invertir allí. He estado leyendo y viendo muchos tutoriales para ir aprendiendo lo que necesito ya que la aplicación estará separada el back del front.

Entonces, en eso debo usar JWT porque voy a manejar cuentas de usuario y eso es muy importante. Para no tener que administrar usuarios y contraseñas del login implementaré OAuth.

Wow pero haciendo el back de esta forma, no solo me ha tomado más tiempo del que me imaginaba sino también es una complejidad mucho mayor.

Y en la medida que voy avanzando, con el tiempo disponible claro, voy aprendiendo muchas cosas en Go. Por ejemplo: ¿Sabías que con Godeps puedes llevarte las librerías de terceros a donde quieras?

Utilizando Godeps pude crear un CloudFoundry utilizando el framework echo que puedes ver aquí. Sí lo sé, es solo un par de letras impresas en html, pero allí está corriendo el framework echo (en Go) y de esas simples letras a una aplicación entera solo bastan unos sencillos pasos 😛

¿Y sabes qué es lo mejor de IBM Cloud? Que usa GitLab.
¿Sabes lo que eso significa? Que está en mi decisión hacer mi código Open Source o no sin estar obligado a pagar.

Saludos,

¿Me das un feedback? 😄

Escribe tu comentario
+ 2