api.rs

 1use crate::token;
 2use hyper::{client::HttpConnector, Request, Uri};
 3
 4pub struct Client {
 5    http: hyper::Client<HttpConnector>,
 6    uri: Uri,
 7    key: String,
 8    secret: String,
 9}
10
11impl Client {
12    pub fn new(uri: Uri, key: String, secret: String) -> Self {
13        assert!(uri.scheme().is_some(), "base uri must have a scheme");
14        assert!(uri.authority().is_some(), "base uri must have an authority");
15        Self {
16            http: hyper::Client::new(),
17            uri: uri,
18            key,
19            secret,
20        }
21    }
22
23    pub fn create_room(&self) {
24        // let mut uri = url.clone();
25        // uri.set_path_and_query()
26
27        let uri = Uri::builder()
28            .scheme(self.uri.scheme().unwrap().clone())
29            .authority(self.uri.authority().unwrap().clone())
30            .path_and_query("twirp/livekit.RoomService/CreateRoom")
31            .build();
32
33        // token::create(api_key, secret_key, room_name, participant_name)
34        self.http.request(req)
35    }
36}