Replace POST /worktrees rest endpoint with GET /rpc-address

Co-Authored-By: Antonio Scandurra <me@as-cii.com>
This commit is contained in:
Max Brunsfeld
2021-06-17 16:11:54 -07:00
co-authored by Antonio Scandurra
parent 2fd0f0be50
commit f4dccc5353
2 changed files with 15 additions and 14 deletions
+4 -3
View File
@@ -1,7 +1,8 @@
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
pub struct CreateWorktreeResponse {
pub worktree_id: i32,
pub rpc_address: String,
pub struct GetRpcAddressResponse {
pub address: String,
}
pub const GET_RPC_ADDRESS_PATH: &'static str = "/api/rpc-address";
+11 -11
View File
@@ -31,7 +31,7 @@ use std::{
time::Duration,
};
use surf::Url;
use zed_rpc::{proto, rest::CreateWorktreeResponse, Peer, TypedEnvelope};
use zed_rpc::{proto, rest, Peer, TypedEnvelope};
pub fn init(cx: &mut MutableAppContext, rpc: Arc<Peer>) {
cx.add_global_action("workspace:open", open);
@@ -672,24 +672,23 @@ impl Workspace {
let (user_id, access_token) =
login(zed_url.clone(), cx.platform(), cx.background_executor()).await?;
let mut response = surf::post(format!("{}/api/worktrees", &zed_url))
let mut response = surf::get(format!("{}{}", &zed_url, &rest::GET_RPC_ADDRESS_PATH))
.header(
"Authorization",
http_auth_basic::Credentials::new(&user_id, &access_token).as_http_header(),
)
.await
.context("")?;
.context("rpc address request failed")?;
let CreateWorktreeResponse {
worktree_id,
rpc_address,
} = response.body_json().await?;
eprintln!("got worktree response: {:?} {:?}", worktree_id, rpc_address);
let rest::GetRpcAddressResponse { address } = response
.body_json()
.await
.context("failed to parse rpc address response")?;
// TODO - If the `ZED_SERVER_URL` uses https, then wrap this stream in
// a TLS stream using `native-tls`.
let stream = smol::net::TcpStream::connect(rpc_address).await?;
let stream = smol::net::TcpStream::connect(&address).await?;
log::info!("connected to rpc address {}", address);
let connection_id = rpc.add_connection(stream).await;
executor.spawn(rpc.handle_messages(connection_id)).detach();
@@ -702,7 +701,8 @@ impl Workspace {
access_token,
},
)
.await?;
.await
.context("rpc auth request failed")?;
if !auth_response.credentials_valid {
Err(anyhow!("failed to authenticate with RPC server"))?;
}