pub struct LocalClient { /* private fields */ }Expand description
A minimal client for the in-process LocalAPI HTTP server started alongside the loopback proxy —
the Rust analog of what Go’s tsnet.Server.LocalClient() returns (a *local.Client wired to the
node’s own LocalAPI).
Obtain one with Server::local_client. It authenticates every request with the loopback’s
local_api_cred (HTTP Basic auth, empty username) and speaks plain HTTP to 127.0.0.1, so it is
dependency-free (no hyper) and needs only the tsnet feature.
The fork’s Status is not a serde type, so status returns
the server’s raw JSON bytes rather than a deserialized struct; for typed status prefer
Server::status (the in-process path). For arbitrary endpoints use get.
Implementations§
Source§impl LocalClient
impl LocalClient
Sourcepub fn address(&self) -> SocketAddr
pub fn address(&self) -> SocketAddr
The 127.0.0.1:<port> address of the LocalAPI HTTP server this client talks to.
Sourcepub fn credential(&self) -> &str
pub fn credential(&self) -> &str
The LocalAPI credential (HTTP Basic-auth password) this client sends.
Sourcepub async fn status(&self) -> Result<Vec<u8>, Error>
pub async fn status(&self) -> Result<Vec<u8>, Error>
GET /localapi/v0/status — the node + peer status as raw JSON bytes (Go
LocalClient().Status, over the loopback). Errors if the server answers non-200.
Sourcepub async fn get(&self, path: &str) -> Result<(u16, Vec<u8>), Error>
pub async fn get(&self, path: &str) -> Result<(u16, Vec<u8>), Error>
Perform an authenticated GET against an arbitrary LocalAPI path (e.g.
"/localapi/v0/status"), returning (http_status_code, body_bytes).
The facade’s in-process server implements only GET /localapi/v0/status (unlike Go’s full
localapi.Handler); any other path returns HTTP 404. Every request also automatically
carries Go’s Sec-Tailscale: localapi anti-DNS-rebinding header alongside the credential.
Trait Implementations§
Source§impl Clone for LocalClient
impl Clone for LocalClient
Source§fn clone(&self) -> LocalClient
fn clone(&self) -> LocalClient
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for LocalClient
impl RefUnwindSafe for LocalClient
impl Send for LocalClient
impl Sync for LocalClient
impl Unpin for LocalClient
impl UnsafeUnpin for LocalClient
impl UnwindSafe for LocalClient
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<A, T> DynMessage<A> for T
impl<A, T> DynMessage<A> for T
Source§fn handle_dyn<'a>(
self: Box<T>,
state: &'a mut A,
actor_ref: ActorRef<A>,
tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>,
stop: &'a mut bool,
) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
fn handle_dyn<'a>( self: Box<T>, state: &'a mut A, actor_ref: ActorRef<A>, tx: Option<Sender<Result<Box<dyn Any + Send>, SendError<Box<dyn Any + Send>, Box<dyn Any + Send>>>>>, stop: &'a mut bool, ) -> Pin<Box<dyn Future<Output = Result<(), Box<dyn ReplyError>>> + Send + 'a>>
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more