tgin 0.1.0

Universal traffic glue: a Rust construction kit for gateways — HTTP, Telegram bots, RabbitMQ, Kafka, WebSocket tunnels
Documentation
use std::time::Duration;

use tgin::Tgin;
use tgin::batteries::egress::telegram_bot::TelegramBotPollingEgress;
use tgin::batteries::ingress::telegram_bot::TelegramBotPollingIngress;
use tgin::batteries::lb::RoundRobin;
use tgin::shared::client::HttpClient;
use tgin::shared::server::HttpServer;

#[tokio::main]
async fn main() {
    let token = std::env::var("BOT_TOKEN").expect("BOT_TOKEN is not set");

    let server = HttpServer::new("0.0.0.0:8080");
    let http = HttpClient::builder()
        .timeout(Duration::from_secs(35))
        .build();

    Tgin::new()
        .pipeline(
            TelegramBotPollingIngress::new(&http, &token),
            RoundRobin::new()
                .to(TelegramBotPollingEgress::new(&server, "/bot1"))
                .to(TelegramBotPollingEgress::new(&server, "/bot2")),
        )
        .run()
        .await;
}