Skip to content

Instantly share code, notes, and snippets.

View xNok's full-sized avatar

Alexandre Couedelo xNok

View GitHub Profile
@xNok
xNok / pnd2slides.js
Created August 28, 2019 22:53
prepare json file to configure slideshow from all the png in a folder
var fs = require('fs');
// command usage validation
if (process.argv.length <= 3) {
console.log("Usage: " + __filename + " path/to/directory path/to/output");
process.exit(-1);
}
var path = process.argv[2];
var output = process.argv[3];
from diagrams import Diagram, Cluster, Edge
from diagrams.custom import Custom
from diagrams.onprem.compute import Server
from diagrams.onprem.monitoring import Grafana, Prometheus
from diagrams.onprem.container import Docker
from diagrams.onprem.database import Mongodb
from diagrams.onprem.iac import Ansible
from diagrams.onprem.ci import GithubActions
with Diagram(name="Startup infra for small self hosted project", show=False):
@startuml
actor USER as U
participant APP as A
participant SLACK as S
== App Home ==
autonumber
U -> S: Opens App Home Open
S -> A ++ #DarkSalmon: `app_home_opened` event triggered
import _ "embed"
//go:embed hello.txt
var s strings
//go:embed hello.txt
var b []bytes
func GreetingMessage(user string) []slack.Block {
// we need a stuct to hold template arguments
type args struct {
User string
}
tpl := renderTemplate(greetingAssets, "greetingViews/greeting.json", args{User: user})
// we convert the view into a message struct
view := slack.Msg{}
str, _ := ioutil.ReadAll(&tpl)
json.Unmarshal(str, &view)
func renderTemplate(fs fs.FS, file string
, args interface{}) bytes.Buffer {
var tpl bytes.Buffer
// read the block-kit definition as a go template
t, err := template.ParseFS(fs, file)
if err != nil {
panic(err)
}
// render the template using provided datas
err = t.Execute(&tpl, args)
import (
"embed"
)
//go:embed greetingViews/*
var greetingAssets embed.FS
func GreetingMessage(user string) []slack.Block {
// [TODO]: parse the template `greetingViews/greeting.json`
view := slack.Msg{}
// [TODO]: unmarshal the template into slack.Msg{}
return view.Blocks.BlockSet
}
func ConnectToSlackViaSocketmode() (*socketmode.Client, error) {
appToken := os.Getenv("SLACK_APP_TOKEN")
if appToken == "" {
return nil, errors.New("SLACK_APP_TOKEN must be set")
}
if !strings.HasPrefix(appToken, "xapp-") {
return nil, errors.New("SLACK_APP_TOKEN must have the prefix \"xapp-\".")
}
func NewAppHomeController(eventhandler *socketmode.SocketmodeHandler) AppHomeController {
c := AppHomeController{
EventHandler: eventhandler,
}
// App Home (2)
c.EventHandler.HandleEventsAPI(
slackevents.AppHomeOpened,
c.publishHomeTabView,
)