Client

Struct Client 

Source
pub struct Client<K, S>
where K: KeyMaterial + Clone + 'static, S: UcanStore + BlockStore + 'static,
{ pub session: IdentifyResponse, pub sphere_identity: String, pub api_base: Url, pub author: Author<K>, pub store: S, /* private fields */ }
Expand description

A Client is a simple, portable HTTP client for the Noosphere gateway REST API. It embodies the intended usage of the REST API, which includes an opening handshake (with associated key verification) and various UCAN-authorized verbs over sphere data.

Fields§

§session: IdentifyResponse

The v0alpha1::IdentifyResponse that was received from the gateway when the Client was initialized

§sphere_identity: String

The Did of the sphere represented by this Client

§api_base: Url

The Url for the gateway API being used by this Client

§author: Author<K>

The Author that is wielding this Client to interact with the gateway API

§store: S

The backing BlockStore (also used as a UcanStore) for this Client

Implementations§

Source§

impl<K, S> Client<K, S>
where K: KeyMaterial + Clone + 'static, S: UcanStore + BlockStore + 'static,

Source

pub async fn identify( sphere_identity: &str, api_base: &Url, author: &Author<K>, did_parser: &mut DidParser, store: S, ) -> Result<Client<K, S>>

Initialize the Client by perfoming an “identification” handshake with a gateway whose API presumably lives at the specified URL. The request is authorized (so the provided Author must have the appropriate credentials), and the gateway responds with a v0alpha1::IdentifyResponse to verify its own credentials for the client.

Source

pub async fn replicate<R>( &self, mode: R, params: Option<&ReplicateParameters>, ) -> Result<(Cid, impl Stream<Item = Result<(Cid, Vec<u8>)>>)>

Replicate content from Noosphere, streaming its blocks from the configured gateway.

If v0alpha1::ReplicateParameters are specified, then the replication will represent incremental history going back to the since version.

Otherwise, the full crate::data::SphereIpld will be replicated (excluding any history).

If the gateway doesn’t have the desired content, it will look it up from other sources such as IPFS if they are available. Note that this means this call can potentially block on upstream access to an IPFS node (which, depending on the node’s network configuration and peering status, can be quite slow).

Source

pub async fn fetch( &self, params: &FetchParameters, ) -> Result<Option<(Link<MemoIpld>, impl Stream<Item = Result<(Cid, Vec<u8>)>>)>>

Fetch the latest, canonical history of the client’s sphere from the gateway, which serves as the aggregation point for history across many clients.

Source

pub async fn push( &self, push_body: &PushBody, ) -> Result<PushResponse, PushError>

Push the latest local history of this client to the gateway

Auto Trait Implementations§

§

impl<K, S> Freeze for Client<K, S>
where S: Freeze, K: Freeze,

§

impl<K, S> !RefUnwindSafe for Client<K, S>

§

impl<K, S> Send for Client<K, S>

§

impl<K, S> Sync for Client<K, S>

§

impl<K, S> Unpin for Client<K, S>
where S: Unpin, K: Unpin,

§

impl<K, S> !UnwindSafe for Client<K, S>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> References<RawCodec> for T

Source§

fn references<R, E>(_c: RawCodec, _r: &mut R, _set: &mut E) -> Result<(), Error>
where R: Read, E: Extend<Cid<64>>,

Scrape the references from an impl Read. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<S> ConditionalSend for S
where S: Send,

Source§

impl<S> ConditionalSync for S
where S: Send + Sync,

Source§

impl<S> TargetConditionalSendSync for S
where S: Send + Sync,

Source§

impl<T> TryBundleSendSync for T
where T: Send + Sync,

Source§

impl<U> UcanStoreConditionalSend for U
where U: Send,

Source§

impl<U> UcanStoreConditionalSendSync for U
where U: Send + Sync,