terrazzo-terminal 0.2.8

A simple web-based terminal emulator built on Terrazzo.
use std::sync::Arc;

use terrazzo::axum::Json;
use trz_gateway_common::http_error::HttpError;

use crate::api::shared::terminal_schema::ResizeRequest;
use crate::backend::Server;
use crate::backend::client_service::terminal_service;
use crate::backend::protos::terrazzo::terminal::ResizeRequest as ResizeRequestProto;
use crate::backend::protos::terrazzo::terminal::Size as SizeProto;

pub async fn resize(
    server: Arc<Server>,
    Json(request): Json<ResizeRequest>,
) -> Result<(), HttpError<self::terminal_service::resize::ResizeError>> {
    let client_address = request.terminal.via.to_vec();
    let response = self::terminal_service::resize::resize(
        &server,
        &client_address,
        ResizeRequestProto {
            terminal: Some(request.terminal.into()),
            size: Some(SizeProto {
                rows: request.size.rows,
                cols: request.size.cols,
            }),
            force: request.force,
        },
    )
    .await;
    Ok(response?)
}