Use POST when obtaining new stream metadata, use GET when specific stream requested

This commit is contained in:
Marcin Kulik
2024-07-01 14:02:18 +02:00
parent 63436f7016
commit 59b58adf24
2 changed files with 19 additions and 13 deletions

View File

@@ -1,6 +1,6 @@
use crate::config::Config; use crate::config::Config;
use anyhow::{bail, Context, Result}; use anyhow::{bail, Context, Result};
use reqwest::blocking::{multipart::Form, Client}; use reqwest::blocking::{multipart::Form, Client, RequestBuilder};
use reqwest::header; use reqwest::header;
use serde::Deserialize; use serde::Deserialize;
use std::env; use std::env;
@@ -52,15 +52,11 @@ pub fn upload_asciicast(path: &str, config: &Config) -> Result<UploadAsciicastRe
Ok(response.json::<UploadAsciicastResponse>()?) Ok(response.json::<UploadAsciicastResponse>()?)
} }
pub fn get_user_stream(stream_id: String, config: &Config) -> Result<GetUserStreamResponse> { pub fn create_user_stream(stream_id: String, config: &Config) -> Result<GetUserStreamResponse> {
let server_url = config.get_server_url()?; let server_url = config.get_server_url()?;
let server_hostname = server_url.host().unwrap(); let server_hostname = server_url.host().unwrap();
let response = Client::new() let response = user_stream_request(&server_url, stream_id, config)?
.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")
.send() .send()
.context("cannot obtain stream producer endpoint")?; .context("cannot obtain stream producer endpoint")?;
@@ -106,14 +102,24 @@ fn build_user_agent() -> String {
ua.to_owned() 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<RequestBuilder> {
let client = Client::new();
let mut url = server_url.clone(); let mut url = server_url.clone();
if stream_id.is_empty() { let builder = if stream_id.is_empty() {
url.set_path("api/user/stream"); url.set_path("api/user/streams");
client.post(url)
} else { } else {
url.set_path(&format!("api/user/streams/{stream_id}")); 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"))
} }

View File

@@ -111,7 +111,7 @@ impl cli::Stream {
fn get_relay(&mut self, config: &Config) -> Result<Option<Relay>> { fn get_relay(&mut self, config: &Config) -> Result<Option<Relay>> {
match self.relay.take() { match self.relay.take() {
Some(RelayTarget::StreamId(id)) => { Some(RelayTarget::StreamId(id)) => {
let stream = api::get_user_stream(id, config)?; let stream = api::create_user_stream(id, config)?;
Ok(Some(Relay { Ok(Some(Relay {
ws_producer_url: stream.ws_producer_url.parse()?, ws_producer_url: stream.ws_producer_url.parse()?,