Skip to main content

Client

Struct Client 

Source
pub struct Client { /* private fields */ }
Expand description

Async client for SDaaS API

The Client provides methods for computing text deltas and validating API keys. It uses async/await patterns with tokio for high-efficiency concurrent operations.

§Example

use sdaas_rs::Client;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new(
        "your-api-key",
        "https://saas-core-production.up.railway.app"
    );

    let delta = client.compute_delta("Hello", "Hello World").await?;
    println!("Delta: {:?}", delta.delta);
    Ok(())
}

Implementations§

Source§

impl Client

Source

pub fn new(api_key: impl Into<String>, base_url: impl Into<String>) -> Self

Create a new SDaaS client

§Arguments
  • api_key - Your SDaaS API key (can be obtained from https://saas-core-production.up.railway.app)
  • base_url - Base URL for the SDaaS API (defaults to https://saas-core-production.up.railway.app)
§Example
use sdaas_rs::Client;

let client = Client::new(
    "your-api-key",
    "https://saas-core-production.up.railway.app"
);
Source

pub async fn compute_delta( &self, source: &str, target: &str, ) -> Result<DeltaResponse>

Compute delta between source and target text

Sends a request to the SDaaS API to compute the delta (diff) between two texts. The response includes delta operations and compression metrics.

§Arguments
  • source - The original text
  • target - The target text to transform source into
§Returns

Returns a DeltaResponse containing:

  • delta: Vector of insert/delete operations
  • size_bytes: Compressed delta size
  • compression_ratio: Efficiency metric (0.0-1.0)
§Errors

Returns Error::Unauthorized if API key is invalid. Returns Error::RateLimitExceeded if rate limit is hit. Returns Error::QuotaExceeded if quota is exhausted.

§Example
use sdaas_rs::Client;

let client = Client::new("your-api-key", "https://saas-core-production.up.railway.app");
let delta = client.compute_delta("Hello", "Hello World").await?;
println!("Operations: {}", delta.delta.len());
println!("Compression: {:.1}%", delta.compression_ratio * 100.0);
Source

pub async fn validate_key(&self) -> Result<ValidationResponse>

Validate API key and get current quota/rate limit info

Checks if the API key is valid and retrieves the current account details.

§Returns

Returns a ValidationResponse containing:

  • valid: Whether the key is valid
  • key: [KeyValidation] with tier, quota, and rate limit info
§Errors

Returns Error::InvalidApiKey if the API key is invalid.

§Example
use sdaas_rs::Client;

let client = Client::new("your-api-key", "https://saas-core-production.up.railway.app");
let validation = client.validate_key().await?;
println!("Tier: {}", validation.key.tier);
println!("Quota remaining: {}", validation.key.quota_remaining);
println!("Rate limit: {}/sec", validation.key.rate_limit);
Source

pub fn set_api_key(&mut self, api_key: impl Into<String>)

Set a new API key

Updates the API key used for subsequent requests.

§Example
use sdaas_rs::Client;

let mut client = Client::new("old-key", "https://saas-core-production.up.railway.app");
client.set_api_key("new-key");
Source

pub fn base_url(&self) -> &str

Get the current base URL

Returns a reference to the base URL being used for API requests.

Auto Trait Implementations§

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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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<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