From 8b710003cd14275534bbe3f4566b2e12c7f228f0 Mon Sep 17 00:00:00 2001 From: Ferris Tseng Date: Sat, 11 Jul 2020 14:11:47 -0400 Subject: use TypedBuilder instead of derive_builder --- ipfs-api/src/client/internal.rs | 12 +++++++++--- ipfs-api/src/request/add.rs | 24 +++++++++++++++++++++--- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/ipfs-api/src/client/internal.rs b/ipfs-api/src/client/internal.rs index ffac9c9..475ec17 100644 --- a/ipfs-api/src/client/internal.rs +++ b/ipfs-api/src/client/internal.rs @@ -460,9 +460,15 @@ impl IpfsClient { /// # fn main() { /// let client = IpfsClient::default(); /// let data = Cursor::new("Hello World!"); - /// let add = - /// ipfs_api::request::AddBuilder::default() - /// .chunker("rabin-512-1024-2048").build().unwrap(); + /// #[cfg(feature = "builder")] + /// let add = ipfs_api::request::Add::builder() + /// .chunker("rabin-512-1024-2048") + /// .build(); + /// #[cfg(not(feature = "builder"))] + /// let add = ipfs_api::request::Add { + /// chunker: Some("rabin-512-1024-2048"), + /// ..Default::default() + /// }; /// let req = client.add_with_options(data, add); /// # } /// ``` diff --git a/ipfs-api/src/request/add.rs b/ipfs-api/src/request/add.rs index ae0b1ba..72001c5 100644 --- a/ipfs-api/src/request/add.rs +++ b/ipfs-api/src/request/add.rs @@ -7,34 +7,52 @@ // use crate::request::ApiRequest; -use derive_builder::Builder; use serde::Serialize; -#[derive(Serialize, Builder, Default)] +#[cfg_attr(feature = "builder", derive(TypedBuilder))] +#[derive(Serialize, Default)] #[serde(rename_all = "kebab-case")] -#[builder(pattern = "owned", setter(strip_option))] pub struct Add<'a> { /// Use trickle-dag format for dag generation. + #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))] pub trickle: Option, + /// Only chunk and hash - do not write to disk. + #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))] pub only_hash: Option, + /// Wrap files with a directory object. + #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))] pub wrap_with_directory: Option, + /// Chunking algorithm, `size-[bytes]`, `rabin-[min]-[avg]-[max]` or `buzhash`. + #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))] pub chunker: Option<&'a str>, + /// Pin this object when adding. Defaults to `true`. + #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))] pub pin: Option, + /// Use raw blocks for leaf nodes. (experimental). + #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))] pub raw_leaves: Option, + /// CID version. Defaults to 0 unless an option that depends on CIDv1 is passed. /// (experimental). + #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))] pub cid_version: Option, + /// Hash function to use. Implies CIDv1 if not sha2-256. (experimental). Default: /// `sha2-256`. + #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))] pub hash: Option<&'a str>, + /// Inline small blocks into CIDs. (experimental). + #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))] pub inline: Option, + /// Maximum block size to inline. (experimental). Default: `32`. + #[cfg_attr(feature = "builder", builder(default, setter(strip_option)))] pub inline_limit: Option, } -- cgit v1.2.3