diff --git a/src/api.rs b/src/api.rs index 665ae01..21ac044 100644 --- a/src/api.rs +++ b/src/api.rs @@ -1,6 +1,6 @@ use crate::config::Config; use anyhow::{bail, Context, Result}; -use reqwest::blocking::{multipart::Form, Client}; +use reqwest::blocking::{multipart::Form, Client, RequestBuilder}; use reqwest::header; use serde::Deserialize; use std::env; @@ -52,15 +52,11 @@ pub fn upload_asciicast(path: &str, config: &Config) -> Result()?) } -pub fn get_user_stream(stream_id: String, config: &Config) -> Result { +pub fn create_user_stream(stream_id: String, config: &Config) -> Result { let server_url = config.get_server_url()?; let server_hostname = server_url.host().unwrap(); - let response = Client::new() - .get(user_stream_url(&server_url, stream_id)) - .basic_auth("", Some(config.get_install_id()?)) - .header(header::USER_AGENT, build_user_agent()) - .header(header::ACCEPT, "application/json") + let response = user_stream_request(&server_url, stream_id, config)? .send() .context("cannot obtain stream producer endpoint")?; @@ -106,14 +102,24 @@ fn build_user_agent() -> String { ua.to_owned() } -fn user_stream_url(server_url: &Url, stream_id: String) -> Url { +fn user_stream_request( + server_url: &Url, + stream_id: String, + config: &Config, +) -> Result { + let client = Client::new(); let mut url = server_url.clone(); - if stream_id.is_empty() { - url.set_path("api/user/stream"); + let builder = if stream_id.is_empty() { + url.set_path("api/user/streams"); + client.post(url) } else { url.set_path(&format!("api/user/streams/{stream_id}")); - } + client.get(url) + }; - url + Ok(builder + .basic_auth(get_username(), Some(config.get_install_id()?)) + .header(header::USER_AGENT, build_user_agent()) + .header(header::ACCEPT, "application/json")) } diff --git a/src/cmd/stream.rs b/src/cmd/stream.rs index 31dc930..d5bdd44 100644 --- a/src/cmd/stream.rs +++ b/src/cmd/stream.rs @@ -111,7 +111,7 @@ impl cli::Stream { fn get_relay(&mut self, config: &Config) -> Result> { match self.relay.take() { Some(RelayTarget::StreamId(id)) => { - let stream = api::get_user_stream(id, config)?; + let stream = api::create_user_stream(id, config)?; Ok(Some(Relay { ws_producer_url: stream.ws_producer_url.parse()?,