fiberplane_api_client/
clients.rs1use 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;