SocialNetwork Gradle Plugin

SocialNetwork es un plugin para Gradle que nos permite publicar en nuestras redes sociales notificaciones y que puede ser útil, por ejemplo, para incluir en desplieges de productos.

Plugin

Para incluir el plugin en el proyecto deberemos añadir el plugin socialnetwork junto con el resto de plugins del proyecto.

            plugins {
                id 'com.puravida.gradle.socialnetwork'
            }

Una vez incluido, el plugin nos permitirá usar las siguientes tasks :

Twitter

Este plugin utiliza el proyecto twitter4j para acceder a Twitter. Para más información consulta http://twitter4j.org/

Credenciales

Para poder enviar un tweet primero debemos obtener unas credenciales desde la consola de desarrollo de Twitter. Deberás proporcionar dichas credenciales a la task twitter para que pueda acceder en tu nombre y publicar el tweet.

Puedes proporcionarlas usando alguno de los siguientes métodos:

  • creando un fichero twitter4j.properties en el directorio raiz

oauth.consumerKey=*********************
oauth.consumerSecret=******************************************
oauth.accessToken=**************************************************
oauth.accessTokenSecret=******************************************
  • mediante la closure credentials que provee la task

    credentials{
        consumerKey = twitterConsumerKey
        consumerSecret = twitterConsumerSecret
        accessToken = twitterAccessToken
        accessTokenSecret = twitterAccessTokenSecret
    }

En este ejemplo se asume que se han proporcionado las credenciales como atributos del proyecto, por ejemplo:

./gradlew twitter -PtwitterConsumerKey=123123123 -PtwitterConsumerSecret=123123123 -P..

TwitterTask

            twitter{
                // we can use project properties
                credentials{    (1)
                    consumerKey = twitterConsumerKey
                    consumerSecret = twitterConsumerSecret
                    accessToken = twitterAccessToken
                    accessTokenSecret = twitterAccessTokenSecret
                }
                message "Testing a new #puravida #gradle #SocialNetwork "   (2)
                media file('1.png')                                         (3)
                media '2.png', 'https://groovy-lang.gitlab.io/101-scripts/images/menu/basico.png'
            }
1 You must to have credentials from twitter.
2 Set the message you want to send
3 Add up to 4 media images. They can be a file, a path or a URL

Esta tarea nos permitirá enviar un Tweet usando nuestras credenciales, con la posiblidad de adjuntar hasta 4 imágenes

Así mismo, podemos indicar, en lugar de 4 imágenes, un directorio de donde tomar hasta 4 imágenes que se encuentren en el mismo

            twitter{
                // we can use project properties
                credentials{    (1)
                    consumerKey = twitterConsumerKey
                    consumerSecret = twitterConsumerSecret
                    accessToken = twitterAccessToken
                    accessTokenSecret = twitterAccessTokenSecret
                }
                message "Testing a new #puravida #gradle #SocialNetwork "   (2)
                media 'images'                                         (3)
            }
1 You must to have credentials from twitter.
2 Set the message you want to send
3 Add up to 4 media images from this directory

Hilo/Thread

A partir de la version 0.2.1 es posible crear un hilo (varios tweets encadenados) usando un array de objetos (cadenas y/o ficheros) en lugar de una sóla cadena

Si adjuntamos un directorio de media se adjutaran en cada hilo aquellas imagenes que su nombre coincida con el índice del tweet (comenzando en cero)

            twitter{
                // we can use project properties
                credentials{    (1)
                    consumerKey = twitterConsumerKey
                    consumerSecret = twitterConsumerSecret
                    accessToken = twitterAccessToken
                    accessTokenSecret = twitterAccessTokenSecret
                }
                message = [
                    "Testing to create a thread with the new #puravida #gradle #SocialNetwork ",   (2)
                    "Instead of send a simple String or a File \\n and you can attach 1 image in the tweet",
                    "now you can set an array of String or files",
                    file('images/message.txt')
                     ]

                media 'images'                                         (3)
            }

Si por el contrario queremos que todos los mensajes se envíen como tweets independientes usaremos el flag asTread=false

            twitter{
                // we can use project properties
                credentials{    (1)
                    consumerKey = twitterConsumerKey
                    consumerSecret = twitterConsumerSecret
                    accessToken = twitterAccessToken
                    accessTokenSecret = twitterAccessTokenSecret
                }
                message = [
                    "Testing to create a thread with the new #puravida #gradle #SocialNetwork ",   (2)
                    "Instead of send a simple String or a File \\n and you can attach 1 image in the tweet",
                    "now you can set an array of String or files",
                    file('images/message.txt')
                     ]

                media 'images'                                         (3)

                asThread false //4
            }

Telegram

Social-network permite publicar mensajes en un canal de Telegram mediante la task telegram. Para ello deberás tener una cuenta en dicha plataforma y crear en primer lugar un bot mediante el bot BotFather que provee dicha plataforma (para más info consultar https://core.telegram.org/bots/api).

Una vez que hayas creado el bot mediante el interface de Telegram dispondrás un id o token que deberás proporcionar a la task.

Junto con este token, también deberás proporcionar el id de un canal al que enviar los mensajes. Puedes usar un canal público o privado. En el primero el id tiene la forma de @micanalpubico mientras que en el segundo sigue la forma de 12345689

Una vez que dispongas del canal, recuerda agregar a tu bot como administrador para que tenga permisos para publicar mensajes.

TelegramTask

            telegram{
                // we can use project properties
                credentials{    (1)
                    token = telegramToken
                    channel = telegramChannel
                }
                message "Testing a new #puravida #gradle #SocialNetwork "   (2)
                media file('1.png')                                         (3)
                media '2.png', 'https://groovy-lang.gitlab.io/101-scripts/images/menu/basico.png'
            }
1 You must to have credentials from twitter.
2 Set the message you want to send
3 Add up to 4 media images. They can be a file, a path or a URL

Así mismo, podemos indicar, en lugar de una lista de imágenes, un directorio de donde tomar las imágenes que se encuentren en el mismo

            telegram{
                // we can use project properties
                credentials{    (1)
                    token = telegramToken
                    channel = telegramChannel
                }
                message "Testing a new #puravida #gradle #SocialNetwork "   (2)
                media 'images'                                         (3)
            }
1 You must to have credentials from telegram.
2 Set the message you want to send
3 Add media images from this directory

File y Format

Además de una cadena de texto, el atributo message admite un File cuyo texto será enviado al canal.

Ambos tipos de mensaje (cadena o fichero) admiten la posibilidad de ser formateados (itálica, negrita, párrafos, etc) en HTML o Markdown, mediante sendAsHTML() o sendAsMarkdown() respectivamente

HTML
            telegram{
                // we can use project properties
                credentials{    (1)
                    token = telegramToken
                    channel = telegramChannel
                }
                message file('test.html')   (2)
                sendAsHTML() (3)
            }
Markdown
            telegram{
                // we can use project properties
                credentials{    (1)
                    token = telegramToken
                    channel = telegramChannel
                }
                message file('test.md')  (2)
                sendAsMarkdown() (3)
            }

Imágenes

Es posible enviar imágenes embebidas en el mensaje si usamos la opcion previewMessage a false (por defecto true) , pudiendo enviar mensajes similares a este:

<b>Incredible image bellow</b>
<a href="https://www.carspecs.us/photos/c8447c97e355f462368178b3518367824a757327-2000.jpg"> ‏ </a>

Slack

Social-network permite publicar mensajes en un canal de Slack mediante la task slack usando el api incoming-webhooks

En primer lugar deberás crear una app (o usar una existente) y darle permisos para poder escribir en el grupo que quieras que participe. Al finalizar el proceso obtendrás una url parecida a https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX. De esta url usaremos /services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX como service

Si quieres enviar ficheros a un canal, una vez que le des permisos a la aplicación para escribir en el mismo obtendras un token que podrás usar en el DSL junto con el nombre del canal donde quieres enviarlos

SlackTask

            slack{
                // we can use project properties
                credentials{    (1)
                    token = slackToken
                    channels = slackChannels
                    service = slackService
                }
                message \"""
                <!here>
                *Testing* a new #puravida #gradle #SocialNetwork
                Hello & <world> 🌊
                \"""   (2)
                media 'images' (3)
            }
1 You must to use part of the url.
2 Set the message you want to send. You can also use emoticons
3 you can send a directory of images

Mastodon

Social-network permite publicar mensajes en Mastodon mediante la task mastodon. Para ello deberás tener una cuenta en dicha plataforma en alguna de las instancias disponibles y crear una aplicación para obtener credenciales.

Una vez que dispongas de la aplicación, recuerda que tenga permisos para publicar mensajes.

MastodonTask

            mastodon{
                // we can use project properties
                credentials{    (1)
                    instanceName = mastodonInstanceName
                    accessToken = mastodonAccessToken
                }
                message "Testing a new #puravida #gradle #SocialNetwork in Mastodon"   (2)
                media file('1.png')                                         (3)
                media '2.png', 'https://groovy-lang.gitlab.io/101-scripts/images/menu/basico.png'
            }
1 You must to have credentials from Mastodon.
2 Set the message you want to send
3 Add up to 4 media images. They can be a file, a path or a URL

Así mismo, podemos indicar, en lugar de una lista de imágenes, un directorio de donde tomar las imágenes que se encuentren en el mismo