Skip to main content

fiberplane_api_client/
clients.rs

1use crate::builder::ApiClientBuilder;
2use anyhow::{Context as _, Result};
3use reqwest::{header, Client, Method, RequestBuilder, Url};
4use std::time::Duration;
5
6pub fn default_config(
7    timeout: Option<Duration>,
8    user_agent: Option<&str>,
9    default_headers: Option<header::HeaderMap>,
10) -> Result<Client> {
11    let mut headers = default_headers.unwrap_or_default();
12    headers.insert(
13        header::USER_AGENT,
14        header::HeaderValue::from_str(user_agent.unwrap_or("Fiberplane Rust API client"))?,
15    );
16
17    Ok(Client::builder()
18        .connect_timeout(timeout.unwrap_or_else(|| Duration::from_secs(10)))
19        .default_headers(headers)
20        .build()?)
21}
22
23pub fn production_client() -> Result<crate::api_client::ApiClient> {
24    let url = "https://studio.fiberplane.com/";
25
26    let config = default_config(Some(Duration::from_secs(30)), None, None)?;
27
28    Ok(crate::api_client::ApiClient {
29        client: config,
30        server: Url::parse(url).context("Failed to parse base url from Open API document")?,
31    })
32}
33
34pub fn non_production_client(env: Option<&str>) -> Result<crate::api_client::ApiClient> {
35    let env = env.unwrap_or("dev");
36    let url = &format!("https://{env}.fiberplane.io/", env = env);
37
38    let config = default_config(Some(Duration::from_secs(30)), None, None)?;
39
40    Ok(crate::api_client::ApiClient {
41        client: config,
42        server: Url::parse(url).context("Failed to parse base url from Open API document")?,
43    })
44}
45
46#[deprecated(
47    note = "Use `fiberplane_api_client::ApiClient` or `fiberplane::fiberplane_api_client::ApiClient` instead"
48)]
49pub type ApiClient = crate::ApiClient;