Browse Source

Feat(telegram): Added new controller to handle help and show

master
Samuel Pua 3 years ago
parent
commit
b3644f05e6
  1. 3
      .dockerignore
  2. 1
      .gitignore
  3. 2
      backend/internal/webhookeverything/main.go
  4. 28
      backend/internal/webhookeverything/routegencontrollertelegram.go
  5. 2
      docker-compose.yml
  6. 2
      scripts/deploy.sh
  7. 2
      scripts/dev_postgres_docker.sh

3
.dockerignore

@ -1,2 +1,3 @@
.git
_postgres_data
_postgres_data
_docker_mnt

1
.gitignore

@ -10,6 +10,7 @@
# Dev Postgres
_postgres_data
_docker_mnt
# ---> Go
# Binaries for programs and plugins

2
backend/internal/webhookeverything/main.go

@ -30,6 +30,8 @@ func WebhookEverythingRoutes(db *gorm.DB, telegramEnv *telegrampackage.Env, host
// Telegram handlers
env.TelegramEnv.AddTelegramHandlerFunc(env.registerWebhook)
env.TelegramEnv.AddTelegramHandlerFunc(env.displayHelp)
env.TelegramEnv.AddTelegramHandlerFunc(env.showRoutes)
return r
}

28
backend/internal/webhookeverything/routegencontrollertelegram.go

@ -30,6 +30,34 @@ func (env *Env) registerWebhook(shortCode string, text string) (bool, *string) {
return false, nil
}
func (env *Env) displayHelp(shortCode string, text string) (bool, *string) {
commandSplitted := telegrampackage.ParseTelegramBotCommand(text)
if len(commandSplitted) > 0 && commandSplitted[0] == "/help" {
responseText := "/register -> Register for a chat ID\n/register-webhook -> Register for a web hook\n/show -> Show existing webhooks"
return true, &responseText
}
return false, nil
}
func (env *Env) showRoutes(shortCode string, text string) (bool, *string) {
commandSplitted := telegrampackage.ParseTelegramBotCommand(text)
if len(commandSplitted) > 0 && commandSplitted[0] == "/show" {
var results []WebhookRoute
env.DB.Where(&WebhookRoute{WebhookID: shortCode}).Find(&results)
responseText := "The following webhook URLs were previously registered:"
for _, curr := range results {
baseURL, _ := url.Parse(env.HostURL)
baseURL.Path = path.Join(baseURL.Path, "webhook")
baseURL.Path = path.Join(baseURL.Path, "routes")
baseURL.Path = path.Join(baseURL.Path, curr.WebhookID)
webhookURL := baseURL.String()
responseText += fmt.Sprintf("%s\n", webhookURL)
}
return true, &responseText
}
return false, nil
}
func genWebhookCode(n int) string {
var letters = []rune("abcdefghijklmnopqrstuvwxyz1234567890")
runeCode := make([]rune, n)

2
docker-compose.yml

@ -18,7 +18,7 @@ services:
image: postgres
restart: always
volumes:
- "./_postgres_data:/var/lib/postgresql/data"
- "./_docker_mnt/_postgres_data:/var/lib/postgresql/data"
environment:
- "POSTGRES_USER=${DB_USER}"
- "POSTGRES_PASSWORD=${DB_PASS}"

2
scripts/deploy.sh

@ -2,5 +2,5 @@
echo $ATHENA_DEPLOYMENT_SSH_KEY | base64 -d > /tmp/ssh-key
chmod 600 /tmp/ssh-key
rsync -v -e "ssh -o StrictHostKeyChecking=no -i /tmp/ssh-key -p 777" -a --exclude="_postgres_data" --delete . samuel@athena.gaia:~/webhook-everything || true
rsync -v -e "ssh -o StrictHostKeyChecking=no -i /tmp/ssh-key -p 777" -a --exclude="_docker_mnt/_postgres_data" --delete . samuel@athena.gaia:~/webhook-everything || true
ssh -p 777 -o StrictHostKeyChecking=no -i /tmp/ssh-key samuel@athena.gaia "cd /home/samuel/webhook-everything && docker-compose up --build -d"

2
scripts/dev_postgres_docker.sh

@ -1,6 +1,6 @@
docker rm -f dev_postgres
docker run -d \
-v `pwd`/_postgres_data:/var/lib/postgresql/data \
-v `pwd`/_docker_mnt/_postgres_data:/var/lib/postgresql/data \
-e POSTGRES_USER=testuser \
-e POSTGRES_PASSWORD=testpassword \
-e POSTGRES_DB=testdb \

Loading…
Cancel
Save