From f09d6b7b9502d78d4c3ed7e0b234498d7a8bc45c Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 14 Oct 2022 18:31:03 +0200 Subject: [PATCH] WIP --- crates/live_kit_server/src/api.rs | 43 ++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/crates/live_kit_server/src/api.rs b/crates/live_kit_server/src/api.rs index cec360a30d..52a911c593 100644 --- a/crates/live_kit_server/src/api.rs +++ b/crates/live_kit_server/src/api.rs @@ -1,5 +1,7 @@ -use crate::token; -use hyper::{client::HttpConnector, Request, Uri}; +use crate::{proto, token}; +use anyhow::{anyhow, Result}; +use hyper::{client::HttpConnector, header::AUTHORIZATION, Method, Request, Uri}; +use std::future::Future; pub struct Client { http: hyper::Client, @@ -14,23 +16,46 @@ impl Client { assert!(uri.authority().is_some(), "base uri must have an authority"); Self { http: hyper::Client::new(), - uri: uri, + uri, key, secret, } } - pub fn create_room(&self) { - // let mut uri = url.clone(); - // uri.set_path_and_query() + pub fn create_room(&self, name: String) -> impl Future> { + let token = token::create( + &self.key, + &self.secret, + None, + token::VideoGrant { + room_create: Some(true), + ..Default::default() + }, + ); + let client = self.http.clone(); let uri = Uri::builder() .scheme(self.uri.scheme().unwrap().clone()) .authority(self.uri.authority().unwrap().clone()) .path_and_query("twirp/livekit.RoomService/CreateRoom") .build(); - - // token::create(api_key, secret_key, room_name, participant_name) - // self.http.request(req) + async move { + let token = token?; + let uri = uri?; + let body = proto::CreateRoomRequest { + name: todo!(), + empty_timeout: todo!(), + max_participants: todo!(), + node_id: todo!(), + metadata: todo!(), + egress: todo!(), + }; + let mut request = Request::builder() + .uri(uri) + .method(Method::POST) + .header(AUTHORIZATION, format!("Bearer {}", token)) + .body(body); + Err(anyhow!("yeah")) + } } }