Struct noosphere_core::api::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.

When built with the test-gateway flag, a modified Host header is sent, rewriting Host to {IDENTITY}.gateway.test, where IDENTITY is the client sphere identity with the did:key: prefix stripped.

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>)>>)>where R: Into<ReplicationMode>,

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> !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 K: Unpin, S: Unpin,

§

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

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

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

§

type Output = T

Should always be Self
source§

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

§

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 Twhere U: TryFrom<T>,

§

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.
§

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

§

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 Swhere S: Send,

source§

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

source§

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

source§

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

source§

impl<U> UcanStoreConditionalSend for Uwhere U: Send,

source§

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