Skip to main content

Config

Struct Config 

Source
pub struct Config {
    pub api_key: String,
    pub api_secret: String,
    pub rest_url: String,
    pub ws_url: String,
    pub ws_ha: WebSocketHighAvailability,
    pub ws_max_reconnect: usize,
    pub insecure_skip_verify: InsecureSkipVerify,
    pub inspect_http_response: Option<fn(&Response)>,
}
Expand description

Config specifies the client configuration and dependencies.

Fields§

§api_key: String

Client API key

§api_secret: String

Client API secret

§rest_url: String

REST API URL

§ws_url: String

WebSocket API URL

§ws_ha: WebSocketHighAvailability

High Availability Mode: Use concurrent connections to multiple Streams servers

§ws_max_reconnect: usize

Maximum number of reconnection attempts for underlying WebSocket connections

§insecure_skip_verify: InsecureSkipVerify

Skip server certificate chain and host name verification

§inspect_http_response: Option<fn(&Response)>

Function to inspect HTTP responses for REST requests. The response object must not be modified.

Implementations§

Source§

impl Config

Source

pub fn new( api_key: String, api_secret: String, rest_url: String, ws_url: String, ) -> ConfigBuilder

Creates a new Config instance with the provided parameters. (Builder pattern)

§Arguments
  • api_key - Client API key for authentication.
  • api_secret - Client API secret for signing requests.
  • rest_url - REST API base URL.
  • ws_url - WebSocket API base URL.
  • ws_ha - Enable high availability for WebSocket connections.
  • ws_max_reconnect - Maximum reconnection attempts for WebSocket (optional, defaults to 5).
  • insecure_skip_verify - Skip TLS certificate verification (use with caution).
  • inspect_http_response - Optional callback to inspect HTTP responses.
§Errors

Returns ConfigError if any of the provided parameters are invalid.

§Example
use chainlink_data_streams_sdk::config::{Config, WebSocketHighAvailability, InsecureSkipVerify};

use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
   let api_key = "YOUR_API_KEY_GOES_HERE";
   let user_secret = "YOUR_USER_SECRET_GOES_HERE";
   let rest_url = "https://api.testnet-dataengine.chain.link";
   let ws_url = "wss://api.testnet-dataengine.chain.link/ws";

   // Initialize the basic configuration
   let config = Config::new(
       api_key.to_string(),
       user_secret.to_string(),
       rest_url.to_string(),
       ws_url.to_string(),
   )
   .build()?;

   // If you want to customize the configuration further, use the builder pattern
   // In HA mode, provide a single WebSocket URL — origins are discovered automatically
   // via a HEAD request to the server (X-Cll-Available-Origins header).
   let config_custom = Config::new(
       api_key.to_string(),
       user_secret.to_string(),
       rest_url.to_string(),
       ws_url.to_string(),
   )
   .with_ws_ha(WebSocketHighAvailability::Enabled) // Enable WebSocket High Availability Mode
   .with_ws_max_reconnect(10) // Set maximum reconnection attempts to 10, instead of the default 5.
   .with_insecure_skip_verify(InsecureSkipVerify::Enabled) // Skip TLS certificate verification, use with caution. This is disabled by default.
   .with_inspect_http_response(|response| {
        // Custom logic to inspect the HTTP response here
        println!("Received response with status: {}", response.status());
    })
   .build()?;

   Ok(())
}

Trait Implementations§

Source§

impl Clone for Config

Source§

fn clone(&self) -> Config

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Drop for Config

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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<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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,