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
:
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
telegram{
// we can use project properties
credentials{ (1)
token = telegramToken
channel = telegramChannel
}
message file('test.html') (2)
sendAsHTML() (3)
}
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