diff --git a/dev/src/generate/docs.rs b/dev/src/generate/docs.rs index 2e36b185b6e0..d1181aae6526 100644 --- a/dev/src/generate/docs.rs +++ b/dev/src/generate/docs.rs @@ -56,6 +56,12 @@ const BINDINGS: &[Binding] = &[ language: "rust", cargo: None, }, + Binding { + id: "java", + label: "Java", + language: "java", + cargo: Some("bindings/java/Cargo.toml"), + }, Binding { id: "python", label: "Python", @@ -69,10 +75,28 @@ const BINDINGS: &[Binding] = &[ cargo: Some("bindings/nodejs/Cargo.toml"), }, Binding { - id: "java", - label: "Java", - language: "java", - cargo: Some("bindings/java/Cargo.toml"), + id: "ruby", + label: "Ruby", + language: "ruby", + cargo: Some("bindings/ruby/Cargo.toml"), + }, + Binding { + id: "go", + label: "Go", + language: "go", + cargo: None, + }, + Binding { + id: "c", + label: "C", + language: "c", + cargo: None, + }, + Binding { + id: "cpp", + label: "C++", + language: "cpp", + cargo: None, }, ]; @@ -393,15 +417,23 @@ fn build(required: &[&Field], grouped: &[(&str, Vec<&Field>)], s: &Syntax) -> (S if multi { full.push_str(&format!("{}{}--- {group} ---\n", s.indent, s.comment)); } - for f in fields { - comment_block(f.comments, &mut full); - let assign = (s.assign)(f); - if f.required { - full.push_str(&format!("{}{assign}\n\n", s.indent)); + let mut config_options = vec![]; + for field in fields { + let mut field_comment = String::new(); + comment_block(field.comments, &mut field_comment); + let assign = (s.assign)(field); + // field have block indententation + if field.required { + config_options.push(format!("{field_comment}{}{assign}", s.indent)); } else { - full.push_str(&format!("{}{}{assign}\n\n", s.indent, s.comment)); + config_options.push(format!("{field_comment}{}{}{assign}", s.indent, s.comment)); } } + + if !config_options.is_empty() { + full.push_str(config_options.join("\n\n").trim_end()); + full.push('\n'); + } } full.push_str(&s.close); @@ -416,7 +448,7 @@ fn render_examples( ) -> (String, String) { let syntax = match binding { "rust" => Syntax { - open: format!("use opendal::Operator;\n\nlet op = Operator::via_iter(\"{scheme}\", [\n"), + open: format!("use opendal::Operator;\n\nlet operator = Operator::via_iter(\"{scheme}\", [\n"), close: "])?;".to_string(), indent: " ", comment: "// ", @@ -429,7 +461,7 @@ fn render_examples( }, }, "python" => Syntax { - open: format!("import opendal\n\nop = opendal.Operator(\n \"{scheme}\",\n"), + open: format!("import opendal\n\noperator = opendal.Operator(\n \"{scheme}\",\n"), close: ")".to_string(), indent: " ", comment: "# ", @@ -437,7 +469,7 @@ fn render_examples( }, "nodejs" => Syntax { open: format!( - "import {{ Operator }} from \"opendal\";\n\nconst op = new Operator(\"{scheme}\", {{\n" + "import {{ Operator }} from \"opendal\";\n\nconst operator = new Operator(\"{scheme}\", {{\n" ), close: "});".to_string(), indent: " ", @@ -445,11 +477,51 @@ fn render_examples( assign: |f| format!("{}: \"{}\",", f.name, value_of(f)), }, "java" => Syntax { - open: "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n".to_string(), - close: format!("Operator op = Operator.of(\"{scheme}\", conf);"), + open: "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n".to_string(), + close: format!("Operator operator = Operator.of(\"{scheme}\", config);"), indent: "", comment: "// ", - assign: |f| format!("conf.put(\"{}\", \"{}\");", f.name, value_of(f)), + assign: |f| format!("config.put(\"{}\", \"{}\");", f.name, value_of(f)), + }, + "go" => Syntax { + open: format!( + "import (\n \"github.com/apache/opendal-go-services/{scheme}\"\n opendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator({scheme}.Scheme, opendal.OperatorOptions{{\n", + ), + close: "})".to_string(), + indent: " ", + comment: "// ", + assign: |f| format!("\"{}\": \"{}\",", f.name, value_of(f)), + }, + "c" => Syntax { + open: "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n".to_string(), + close: format!( + "opendal_result_operator_new result = opendal_operator_new(\"{scheme}\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + ), + indent: "", + comment: "// ", + assign: |f| { + format!( + "opendal_operator_options_set(options, \"{}\", \"{}\");", + f.name, + value_of(f) + ) + }, + }, + "cpp" => Syntax { + open: "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n".to_string(), + close: format!("}};\nopendal::Operator operator(\"{scheme}\", config);"), + indent: " ", + comment: "// ", + assign: |f| format!("{{\"{}\", \"{}\"}},", f.name, value_of(f)), + }, + "ruby" => Syntax { + open: format!( + "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"{scheme}\", {{\n" + ), + close: "})".to_string(), + indent: " ", + comment: "# ", + assign: |f| format!("\"{}\" => \"{}\",", f.name, value_of(f)), }, other => unreachable!("no renderer for binding {other}"), }; diff --git a/dev/src/generate/java.rs b/dev/src/generate/java.rs index 8eb393e83c77..c25ea75af50f 100644 --- a/dev/src/generate/java.rs +++ b/dev/src/generate/java.rs @@ -136,10 +136,7 @@ fn make_populate_map(field: ViaDeserialize) -> Result format!( - "map.putAll({});", - case_java_field_name(&field.name) - ), + ConfigType::HashMap => format!("map.putAll({});", case_java_field_name(&field.name)), }; if field.optional { diff --git a/website/data/services.json b/website/data/services.json index 80c78f6e2af9..6dd142892508 100644 --- a/website/data/services.json +++ b/website/data/services.json @@ -5,6 +5,11 @@ "label": "Rust", "language": "rust" }, + { + "id": "java", + "label": "Java", + "language": "java" + }, { "id": "python", "label": "Python", @@ -16,9 +21,24 @@ "language": "javascript" }, { - "id": "java", - "label": "Java", - "language": "java" + "id": "ruby", + "label": "Ruby", + "language": "ruby" + }, + { + "id": "go", + "label": "Go", + "language": "go" + }, + { + "id": "c", + "label": "C", + "language": "c" + }, + { + "id": "cpp", + "label": "C++", + "language": "cpp" } ], "services": [ @@ -76,26 +96,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"aliyun-drive\", [\n (\"drive_type\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"aliyun-drive\", [\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The access_token of this backend.\n //\n // Solution for client-only purpose. #4733\n //\n // Required if no client_id, client_secret and refresh_token are provided.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // The client_id of this backend.\n //\n // Required if no access_token is provided.\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // The client_secret of this backend.\n //\n // Required if no access_token is provided.\n // (\"client_secret\".to_string(), \"...\".to_string()),\n\n // The refresh_token of this backend.\n //\n // Required if no access_token is provided.\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // The drive_type of this backend.\n //\n // All operations will happen under this type of drive.\n //\n // Available values are `default`, `backup` and `resource`.\n //\n // Fallback to default if not set or no other drives can be found.\n (\"drive_type\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"aliyun-drive\", [\n (\"drive_type\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"aliyun-drive\", [\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The access_token of this backend.\n //\n // Solution for client-only purpose. #4733\n //\n // Required if no client_id, client_secret and refresh_token are provided.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // The client_id of this backend.\n //\n // Required if no access_token is provided.\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // The client_secret of this backend.\n //\n // Required if no access_token is provided.\n // (\"client_secret\".to_string(), \"...\".to_string()),\n\n // The refresh_token of this backend.\n //\n // Required if no access_token is provided.\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // The drive_type of this backend.\n //\n // All operations will happen under this type of drive.\n //\n // Available values are `default`, `backup` and `resource`.\n //\n // Fallback to default if not set or no other drives can be found.\n (\"drive_type\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"drive_type\", \"...\");\nOperator operator = Operator.of(\"aliyun-drive\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// The Root of this backend.\n//\n// All operations will happen under this root.\n//\n// Default to `/` if not set.\n// config.put(\"root\", \"...\");\n\n// The access_token of this backend.\n//\n// Solution for client-only purpose. #4733\n//\n// Required if no client_id, client_secret and refresh_token are provided.\n// config.put(\"access_token\", \"...\");\n\n// The client_id of this backend.\n//\n// Required if no access_token is provided.\n// config.put(\"client_id\", \"...\");\n\n// The client_secret of this backend.\n//\n// Required if no access_token is provided.\n// config.put(\"client_secret\", \"...\");\n\n// The refresh_token of this backend.\n//\n// Required if no access_token is provided.\n// config.put(\"refresh_token\", \"...\");\n\n// The drive_type of this backend.\n//\n// All operations will happen under this type of drive.\n//\n// Available values are `default`, `backup` and `resource`.\n//\n// Fallback to default if not set or no other drives can be found.\nconfig.put(\"drive_type\", \"...\");\nOperator operator = Operator.of(\"aliyun-drive\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"aliyun-drive\",\n drive_type=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"aliyun-drive\",\n # The Root of this backend.\n #\n # All operations will happen under this root.\n #\n # Default to `/` if not set.\n # root=\"...\",\n\n # The access_token of this backend.\n #\n # Solution for client-only purpose. #4733\n #\n # Required if no client_id, client_secret and refresh_token are provided.\n # access_token=\"...\",\n\n # The client_id of this backend.\n #\n # Required if no access_token is provided.\n # client_id=\"...\",\n\n # The client_secret of this backend.\n #\n # Required if no access_token is provided.\n # client_secret=\"...\",\n\n # The refresh_token of this backend.\n #\n # Required if no access_token is provided.\n # refresh_token=\"...\",\n\n # The drive_type of this backend.\n #\n # All operations will happen under this type of drive.\n #\n # Available values are `default`, `backup` and `resource`.\n #\n # Fallback to default if not set or no other drives can be found.\n drive_type=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"aliyun-drive\",\n drive_type=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"aliyun-drive\",\n # The Root of this backend.\n #\n # All operations will happen under this root.\n #\n # Default to `/` if not set.\n # root=\"...\",\n\n # The access_token of this backend.\n #\n # Solution for client-only purpose. #4733\n #\n # Required if no client_id, client_secret and refresh_token are provided.\n # access_token=\"...\",\n\n # The client_id of this backend.\n #\n # Required if no access_token is provided.\n # client_id=\"...\",\n\n # The client_secret of this backend.\n #\n # Required if no access_token is provided.\n # client_secret=\"...\",\n\n # The refresh_token of this backend.\n #\n # Required if no access_token is provided.\n # refresh_token=\"...\",\n\n # The drive_type of this backend.\n #\n # All operations will happen under this type of drive.\n #\n # Available values are `default`, `backup` and `resource`.\n #\n # Fallback to default if not set or no other drives can be found.\n drive_type=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"aliyun-drive\", {\n drive_type: \"...\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"aliyun-drive\", {\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // root: \"...\",\n\n // The access_token of this backend.\n //\n // Solution for client-only purpose. #4733\n //\n // Required if no client_id, client_secret and refresh_token are provided.\n // access_token: \"...\",\n\n // The client_id of this backend.\n //\n // Required if no access_token is provided.\n // client_id: \"...\",\n\n // The client_secret of this backend.\n //\n // Required if no access_token is provided.\n // client_secret: \"...\",\n\n // The refresh_token of this backend.\n //\n // Required if no access_token is provided.\n // refresh_token: \"...\",\n\n // The drive_type of this backend.\n //\n // All operations will happen under this type of drive.\n //\n // Available values are `default`, `backup` and `resource`.\n //\n // Fallback to default if not set or no other drives can be found.\n drive_type: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"aliyun-drive\", {\n drive_type: \"...\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"aliyun-drive\", {\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // root: \"...\",\n\n // The access_token of this backend.\n //\n // Solution for client-only purpose. #4733\n //\n // Required if no client_id, client_secret and refresh_token are provided.\n // access_token: \"...\",\n\n // The client_id of this backend.\n //\n // Required if no access_token is provided.\n // client_id: \"...\",\n\n // The client_secret of this backend.\n //\n // Required if no access_token is provided.\n // client_secret: \"...\",\n\n // The refresh_token of this backend.\n //\n // Required if no access_token is provided.\n // refresh_token: \"...\",\n\n // The drive_type of this backend.\n //\n // All operations will happen under this type of drive.\n //\n // Available values are `default`, `backup` and `resource`.\n //\n // Fallback to default if not set or no other drives can be found.\n drive_type: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"drive_type\", \"...\");\nOperator op = Operator.of(\"aliyun-drive\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// The Root of this backend.\n//\n// All operations will happen under this root.\n//\n// Default to `/` if not set.\n// conf.put(\"root\", \"...\");\n\n// The access_token of this backend.\n//\n// Solution for client-only purpose. #4733\n//\n// Required if no client_id, client_secret and refresh_token are provided.\n// conf.put(\"access_token\", \"...\");\n\n// The client_id of this backend.\n//\n// Required if no access_token is provided.\n// conf.put(\"client_id\", \"...\");\n\n// The client_secret of this backend.\n//\n// Required if no access_token is provided.\n// conf.put(\"client_secret\", \"...\");\n\n// The refresh_token of this backend.\n//\n// Required if no access_token is provided.\n// conf.put(\"refresh_token\", \"...\");\n\n// The drive_type of this backend.\n//\n// All operations will happen under this type of drive.\n//\n// Available values are `default`, `backup` and `resource`.\n//\n// Fallback to default if not set or no other drives can be found.\nconf.put(\"drive_type\", \"...\");\n\nOperator op = Operator.of(\"aliyun-drive\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/aliyun-drive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(aliyun-drive.Scheme, opendal.OperatorOptions{\n\t\"drive_type\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/aliyun-drive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(aliyun-drive.Scheme, opendal.OperatorOptions{\n\t// The Root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// Default to `/` if not set.\n\t// \"root\": \"...\",\n\n\t// The access_token of this backend.\n\t//\n\t// Solution for client-only purpose. #4733\n\t//\n\t// Required if no client_id, client_secret and refresh_token are provided.\n\t// \"access_token\": \"...\",\n\n\t// The client_id of this backend.\n\t//\n\t// Required if no access_token is provided.\n\t// \"client_id\": \"...\",\n\n\t// The client_secret of this backend.\n\t//\n\t// Required if no access_token is provided.\n\t// \"client_secret\": \"...\",\n\n\t// The refresh_token of this backend.\n\t//\n\t// Required if no access_token is provided.\n\t// \"refresh_token\": \"...\",\n\n\t// The drive_type of this backend.\n\t//\n\t// All operations will happen under this type of drive.\n\t//\n\t// Available values are `default`, `backup` and `resource`.\n\t//\n\t// Fallback to default if not set or no other drives can be found.\n\t\"drive_type\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"drive_type\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"aliyun-drive\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The Root of this backend.\n//\n// All operations will happen under this root.\n//\n// Default to `/` if not set.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// The access_token of this backend.\n//\n// Solution for client-only purpose. #4733\n//\n// Required if no client_id, client_secret and refresh_token are provided.\n// opendal_operator_options_set(options, \"access_token\", \"...\");\n\n// The client_id of this backend.\n//\n// Required if no access_token is provided.\n// opendal_operator_options_set(options, \"client_id\", \"...\");\n\n// The client_secret of this backend.\n//\n// Required if no access_token is provided.\n// opendal_operator_options_set(options, \"client_secret\", \"...\");\n\n// The refresh_token of this backend.\n//\n// Required if no access_token is provided.\n// opendal_operator_options_set(options, \"refresh_token\", \"...\");\n\n// The drive_type of this backend.\n//\n// All operations will happen under this type of drive.\n//\n// Available values are `default`, `backup` and `resource`.\n//\n// Fallback to default if not set or no other drives can be found.\nopendal_operator_options_set(options, \"drive_type\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"aliyun-drive\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"drive_type\", \"...\"},\n};\nopendal::Operator operator(\"aliyun-drive\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // {\"root\", \"...\"},\n\n // The access_token of this backend.\n //\n // Solution for client-only purpose. #4733\n //\n // Required if no client_id, client_secret and refresh_token are provided.\n // {\"access_token\", \"...\"},\n\n // The client_id of this backend.\n //\n // Required if no access_token is provided.\n // {\"client_id\", \"...\"},\n\n // The client_secret of this backend.\n //\n // Required if no access_token is provided.\n // {\"client_secret\", \"...\"},\n\n // The refresh_token of this backend.\n //\n // Required if no access_token is provided.\n // {\"refresh_token\", \"...\"},\n\n // The drive_type of this backend.\n //\n // All operations will happen under this type of drive.\n //\n // Available values are `default`, `backup` and `resource`.\n //\n // Fallback to default if not set or no other drives can be found.\n {\"drive_type\", \"...\"},\n};\nopendal::Operator operator(\"aliyun-drive\", config);" } ] }, @@ -125,26 +163,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"alluxio\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"alluxio\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"alluxio\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"alluxio\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"alluxio\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// config.put(\"root\", \"...\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n// config.put(\"endpoint\", \"...\");\nOperator operator = Operator.of(\"alluxio\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"alluxio\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"alluxio\",\n # root of this backend.\n #\n # All operations will happen under this root.\n #\n # default to `/` if not set.\n # root=\"...\",\n\n # endpoint of this backend.\n #\n # Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n # endpoint=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"alluxio\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"alluxio\",\n # root of this backend.\n #\n # All operations will happen under this root.\n #\n # default to `/` if not set.\n # root=\"...\",\n\n # endpoint of this backend.\n #\n # Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n # endpoint=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"alluxio\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"alluxio\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // root: \"...\",\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n // endpoint: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"alluxio\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"alluxio\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // root: \"...\",\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n // endpoint: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"alluxio\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// conf.put(\"root\", \"...\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n// conf.put(\"endpoint\", \"...\");\n\nOperator op = Operator.of(\"alluxio\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/alluxio\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(alluxio.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/alluxio\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(alluxio.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// default to `/` if not set.\n\t// \"root\": \"...\",\n\n\t// endpoint of this backend.\n\t//\n\t// Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n\t// \"endpoint\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"alluxio\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"alluxio\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"alluxio\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // {\"root\", \"...\"},\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.\n // {\"endpoint\", \"...\"},\n};\nopendal::Operator operator(\"alluxio\", config);" } ] }, @@ -241,26 +297,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"azblob\", [\n (\"container\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"azblob\", [\n // The root of Azblob service backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The container name of Azblob service backend.\n (\"container\".to_string(), \"...\".to_string()),\n\n // The endpoint of Azblob service backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - Azblob: `https://accountname.blob.core.windows.net`\n // - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The account name of Azblob service backend.\n // (\"account_name\".to_string(), \"...\".to_string()),\n\n // The account key of Azblob service backend.\n // (\"account_key\".to_string(), \"...\".to_string()),\n\n // The encryption key of Azblob service backend.\n // (\"encryption_key\".to_string(), \"...\".to_string()),\n\n // The encryption key sha256 of Azblob service backend.\n // (\"encryption_key_sha256\".to_string(), \"...\".to_string()),\n\n // The encryption algorithm of Azblob service backend.\n // (\"encryption_algorithm\".to_string(), \"...\".to_string()),\n\n // The sas token of Azblob service backend.\n // (\"sas_token\".to_string(), \"...\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azblob\", [\n (\"container\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azblob\", [\n // The root of Azblob service backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The container name of Azblob service backend.\n (\"container\".to_string(), \"...\".to_string()),\n\n // The endpoint of Azblob service backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - Azblob: `https://accountname.blob.core.windows.net`\n // - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The account name of Azblob service backend.\n // (\"account_name\".to_string(), \"...\".to_string()),\n\n // The account key of Azblob service backend.\n // (\"account_key\".to_string(), \"...\".to_string()),\n\n // The encryption key of Azblob service backend.\n // (\"encryption_key\".to_string(), \"...\".to_string()),\n\n // The encryption key sha256 of Azblob service backend.\n // (\"encryption_key_sha256\".to_string(), \"...\".to_string()),\n\n // The encryption algorithm of Azblob service backend.\n // (\"encryption_algorithm\".to_string(), \"...\".to_string()),\n\n // The sas token of Azblob service backend.\n // (\"sas_token\".to_string(), \"...\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"container\", \"...\");\nOperator operator = Operator.of(\"azblob\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// The root of Azblob service backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// The container name of Azblob service backend.\nconfig.put(\"container\", \"...\");\n\n// The endpoint of Azblob service backend.\n//\n// Endpoint must be full uri, e.g.\n//\n// - Azblob: `https://accountname.blob.core.windows.net`\n// - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n// config.put(\"endpoint\", \"...\");\n\n// The account name of Azblob service backend.\n// config.put(\"account_name\", \"...\");\n\n// The account key of Azblob service backend.\n// config.put(\"account_key\", \"...\");\n\n// The encryption key of Azblob service backend.\n// config.put(\"encryption_key\", \"...\");\n\n// The encryption key sha256 of Azblob service backend.\n// config.put(\"encryption_key_sha256\", \"...\");\n\n// The encryption algorithm of Azblob service backend.\n// config.put(\"encryption_algorithm\", \"...\");\n\n// The sas token of Azblob service backend.\n// config.put(\"sas_token\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// config.put(\"skip_signature\", \"true\");\nOperator operator = Operator.of(\"azblob\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"azblob\",\n container=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"azblob\",\n # The root of Azblob service backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # The container name of Azblob service backend.\n container=\"...\",\n\n # The endpoint of Azblob service backend.\n #\n # Endpoint must be full uri, e.g.\n #\n # - Azblob: `https://accountname.blob.core.windows.net`\n # - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n # endpoint=\"...\",\n\n # The account name of Azblob service backend.\n # account_name=\"...\",\n\n # The account key of Azblob service backend.\n # account_key=\"...\",\n\n # The encryption key of Azblob service backend.\n # encryption_key=\"...\",\n\n # The encryption key sha256 of Azblob service backend.\n # encryption_key_sha256=\"...\",\n\n # The encryption algorithm of Azblob service backend.\n # encryption_algorithm=\"...\",\n\n # The sas token of Azblob service backend.\n # sas_token=\"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"azblob\",\n container=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"azblob\",\n # The root of Azblob service backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # The container name of Azblob service backend.\n container=\"...\",\n\n # The endpoint of Azblob service backend.\n #\n # Endpoint must be full uri, e.g.\n #\n # - Azblob: `https://accountname.blob.core.windows.net`\n # - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n # endpoint=\"...\",\n\n # The account name of Azblob service backend.\n # account_name=\"...\",\n\n # The account key of Azblob service backend.\n # account_key=\"...\",\n\n # The encryption key of Azblob service backend.\n # encryption_key=\"...\",\n\n # The encryption key sha256 of Azblob service backend.\n # encryption_key_sha256=\"...\",\n\n # The encryption algorithm of Azblob service backend.\n # encryption_algorithm=\"...\",\n\n # The sas token of Azblob service backend.\n # sas_token=\"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"azblob\", {\n container: \"...\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"azblob\", {\n // The root of Azblob service backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // The container name of Azblob service backend.\n container: \"...\",\n\n // The endpoint of Azblob service backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - Azblob: `https://accountname.blob.core.windows.net`\n // - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n // endpoint: \"...\",\n\n // The account name of Azblob service backend.\n // account_name: \"...\",\n\n // The account key of Azblob service backend.\n // account_key: \"...\",\n\n // The encryption key of Azblob service backend.\n // encryption_key: \"...\",\n\n // The encryption key sha256 of Azblob service backend.\n // encryption_key_sha256: \"...\",\n\n // The encryption algorithm of Azblob service backend.\n // encryption_algorithm: \"...\",\n\n // The sas token of Azblob service backend.\n // sas_token: \"...\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azblob\", {\n container: \"...\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azblob\", {\n // The root of Azblob service backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // The container name of Azblob service backend.\n container: \"...\",\n\n // The endpoint of Azblob service backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - Azblob: `https://accountname.blob.core.windows.net`\n // - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n // endpoint: \"...\",\n\n // The account name of Azblob service backend.\n // account_name: \"...\",\n\n // The account key of Azblob service backend.\n // account_key: \"...\",\n\n // The encryption key of Azblob service backend.\n // encryption_key: \"...\",\n\n // The encryption key sha256 of Azblob service backend.\n // encryption_key_sha256: \"...\",\n\n // The encryption algorithm of Azblob service backend.\n // encryption_algorithm: \"...\",\n\n // The sas token of Azblob service backend.\n // sas_token: \"...\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"container\", \"...\");\nOperator op = Operator.of(\"azblob\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// The root of Azblob service backend.\n//\n// All operations will happen under this root.\n// conf.put(\"root\", \"...\");\n\n// The container name of Azblob service backend.\nconf.put(\"container\", \"...\");\n\n// The endpoint of Azblob service backend.\n//\n// Endpoint must be full uri, e.g.\n//\n// - Azblob: `https://accountname.blob.core.windows.net`\n// - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n// conf.put(\"endpoint\", \"...\");\n\n// The account name of Azblob service backend.\n// conf.put(\"account_name\", \"...\");\n\n// The account key of Azblob service backend.\n// conf.put(\"account_key\", \"...\");\n\n// The encryption key of Azblob service backend.\n// conf.put(\"encryption_key\", \"...\");\n\n// The encryption key sha256 of Azblob service backend.\n// conf.put(\"encryption_key_sha256\", \"...\");\n\n// The encryption algorithm of Azblob service backend.\n// conf.put(\"encryption_algorithm\", \"...\");\n\n// The sas token of Azblob service backend.\n// conf.put(\"sas_token\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// conf.put(\"skip_signature\", \"true\");\n\nOperator op = Operator.of(\"azblob\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azblob\", {\n \"container\" => \"...\",\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azblob\", {\n # The root of Azblob service backend.\n #\n # All operations will happen under this root.\n # \"root\" => \"...\",\n\n # The container name of Azblob service backend.\n \"container\" => \"...\",\n\n # The endpoint of Azblob service backend.\n #\n # Endpoint must be full uri, e.g.\n #\n # - Azblob: `https://accountname.blob.core.windows.net`\n # - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n # \"endpoint\" => \"...\",\n\n # The account name of Azblob service backend.\n # \"account_name\" => \"...\",\n\n # The account key of Azblob service backend.\n # \"account_key\" => \"...\",\n\n # The encryption key of Azblob service backend.\n # \"encryption_key\" => \"...\",\n\n # The encryption key sha256 of Azblob service backend.\n # \"encryption_key_sha256\" => \"...\",\n\n # The encryption algorithm of Azblob service backend.\n # \"encryption_algorithm\" => \"...\",\n\n # The sas token of Azblob service backend.\n # \"sas_token\" => \"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # \"skip_signature\" => \"true\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/azblob\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azblob.Scheme, opendal.OperatorOptions{\n\t\"container\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/azblob\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azblob.Scheme, opendal.OperatorOptions{\n\t// The root of Azblob service backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// The container name of Azblob service backend.\n\t\"container\": \"...\",\n\n\t// The endpoint of Azblob service backend.\n\t//\n\t// Endpoint must be full uri, e.g.\n\t//\n\t// - Azblob: `https://accountname.blob.core.windows.net`\n\t// - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n\t// \"endpoint\": \"...\",\n\n\t// The account name of Azblob service backend.\n\t// \"account_name\": \"...\",\n\n\t// The account key of Azblob service backend.\n\t// \"account_key\": \"...\",\n\n\t// The encryption key of Azblob service backend.\n\t// \"encryption_key\": \"...\",\n\n\t// The encryption key sha256 of Azblob service backend.\n\t// \"encryption_key_sha256\": \"...\",\n\n\t// The encryption algorithm of Azblob service backend.\n\t// \"encryption_algorithm\": \"...\",\n\n\t// The sas token of Azblob service backend.\n\t// \"sas_token\": \"...\",\n\n\t// Skip signature will skip loading credentials and signing requests.\n\t// \"skip_signature\": \"true\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"container\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"azblob\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The root of Azblob service backend.\n//\n// All operations will happen under this root.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// The container name of Azblob service backend.\nopendal_operator_options_set(options, \"container\", \"...\");\n\n// The endpoint of Azblob service backend.\n//\n// Endpoint must be full uri, e.g.\n//\n// - Azblob: `https://accountname.blob.core.windows.net`\n// - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// The account name of Azblob service backend.\n// opendal_operator_options_set(options, \"account_name\", \"...\");\n\n// The account key of Azblob service backend.\n// opendal_operator_options_set(options, \"account_key\", \"...\");\n\n// The encryption key of Azblob service backend.\n// opendal_operator_options_set(options, \"encryption_key\", \"...\");\n\n// The encryption key sha256 of Azblob service backend.\n// opendal_operator_options_set(options, \"encryption_key_sha256\", \"...\");\n\n// The encryption algorithm of Azblob service backend.\n// opendal_operator_options_set(options, \"encryption_algorithm\", \"...\");\n\n// The sas token of Azblob service backend.\n// opendal_operator_options_set(options, \"sas_token\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// opendal_operator_options_set(options, \"skip_signature\", \"true\");\nopendal_result_operator_new result = opendal_operator_new(\"azblob\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"container\", \"...\"},\n};\nopendal::Operator operator(\"azblob\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The root of Azblob service backend.\n //\n // All operations will happen under this root.\n // {\"root\", \"...\"},\n\n // The container name of Azblob service backend.\n {\"container\", \"...\"},\n\n // The endpoint of Azblob service backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - Azblob: `https://accountname.blob.core.windows.net`\n // - Azurite: `http://127.0.0.1:10000/devstoreaccount1`\n // {\"endpoint\", \"...\"},\n\n // The account name of Azblob service backend.\n // {\"account_name\", \"...\"},\n\n // The account key of Azblob service backend.\n // {\"account_key\", \"...\"},\n\n // The encryption key of Azblob service backend.\n // {\"encryption_key\", \"...\"},\n\n // The encryption key sha256 of Azblob service backend.\n // {\"encryption_key_sha256\", \"...\"},\n\n // The encryption algorithm of Azblob service backend.\n // {\"encryption_algorithm\", \"...\"},\n\n // The sas token of Azblob service backend.\n // {\"sas_token\", \"...\"},\n\n // Skip signature will skip loading credentials and signing requests.\n // {\"skip_signature\", \"true\"},\n};\nopendal::Operator operator(\"azblob\", config);" } ] }, @@ -353,26 +433,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"azdls\", [\n (\"filesystem\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"azdls\", [\n // Root of this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Filesystem name of this backend.\n (\"filesystem\".to_string(), \"...\".to_string()),\n\n // Endpoint of this backend.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Account name of this backend.\n // (\"account_name\".to_string(), \"...\".to_string()),\n\n // Account key of this backend.\n // - required for shared_key authentication\n // (\"account_key\".to_string(), \"...\".to_string()),\n\n // client_secret\n // The client secret of the service principal.\n // - required for client_credentials authentication\n // (\"client_secret\".to_string(), \"...\".to_string()),\n\n // tenant_id\n // The tenant id of the service principal.\n // - required for client_credentials authentication\n // (\"tenant_id\".to_string(), \"...\".to_string()),\n\n // client_id\n // The client id of the service principal.\n // - required for client_credentials authentication\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // sas_token\n // The shared access signature token.\n // - required for sas authentication\n // (\"sas_token\".to_string(), \"...\".to_string()),\n\n // authority_host\n // The authority host of the service principal.\n // - required for client_credentials authentication\n // - default value: `https://login.microsoftonline.com`\n // (\"authority_host\".to_string(), \"...\".to_string()),\n\n // Whether hierarchical namespace (HNS) is enabled for the storage account.\n // When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n // - default value: `false`\n // (\"enable_hns\".to_string(), \"true\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azdls\", [\n (\"filesystem\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azdls\", [\n // Root of this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Filesystem name of this backend.\n (\"filesystem\".to_string(), \"...\".to_string()),\n\n // Endpoint of this backend.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Account name of this backend.\n // (\"account_name\".to_string(), \"...\".to_string()),\n\n // Account key of this backend.\n // - required for shared_key authentication\n // (\"account_key\".to_string(), \"...\".to_string()),\n\n // client_secret\n // The client secret of the service principal.\n // - required for client_credentials authentication\n // (\"client_secret\".to_string(), \"...\".to_string()),\n\n // tenant_id\n // The tenant id of the service principal.\n // - required for client_credentials authentication\n // (\"tenant_id\".to_string(), \"...\".to_string()),\n\n // client_id\n // The client id of the service principal.\n // - required for client_credentials authentication\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // sas_token\n // The shared access signature token.\n // - required for sas authentication\n // (\"sas_token\".to_string(), \"...\".to_string()),\n\n // authority_host\n // The authority host of the service principal.\n // - required for client_credentials authentication\n // - default value: `https://login.microsoftonline.com`\n // (\"authority_host\".to_string(), \"...\".to_string()),\n\n // Whether hierarchical namespace (HNS) is enabled for the storage account.\n // When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n // - default value: `false`\n // (\"enable_hns\".to_string(), \"true\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"filesystem\", \"...\");\nOperator operator = Operator.of(\"azdls\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Root of this backend.\n// config.put(\"root\", \"...\");\n\n// Filesystem name of this backend.\nconfig.put(\"filesystem\", \"...\");\n\n// Endpoint of this backend.\n// config.put(\"endpoint\", \"...\");\n\n// Account name of this backend.\n// config.put(\"account_name\", \"...\");\n\n// Account key of this backend.\n// - required for shared_key authentication\n// config.put(\"account_key\", \"...\");\n\n// client_secret\n// The client secret of the service principal.\n// - required for client_credentials authentication\n// config.put(\"client_secret\", \"...\");\n\n// tenant_id\n// The tenant id of the service principal.\n// - required for client_credentials authentication\n// config.put(\"tenant_id\", \"...\");\n\n// client_id\n// The client id of the service principal.\n// - required for client_credentials authentication\n// config.put(\"client_id\", \"...\");\n\n// sas_token\n// The shared access signature token.\n// - required for sas authentication\n// config.put(\"sas_token\", \"...\");\n\n// authority_host\n// The authority host of the service principal.\n// - required for client_credentials authentication\n// - default value: `https://login.microsoftonline.com`\n// config.put(\"authority_host\", \"...\");\n\n// Whether hierarchical namespace (HNS) is enabled for the storage account.\n// When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n// - default value: `false`\n// config.put(\"enable_hns\", \"true\");\nOperator operator = Operator.of(\"azdls\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"azdls\",\n filesystem=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"azdls\",\n # Root of this backend.\n # root=\"...\",\n\n # Filesystem name of this backend.\n filesystem=\"...\",\n\n # Endpoint of this backend.\n # endpoint=\"...\",\n\n # Account name of this backend.\n # account_name=\"...\",\n\n # Account key of this backend.\n # - required for shared_key authentication\n # account_key=\"...\",\n\n # client_secret\n # The client secret of the service principal.\n # - required for client_credentials authentication\n # client_secret=\"...\",\n\n # tenant_id\n # The tenant id of the service principal.\n # - required for client_credentials authentication\n # tenant_id=\"...\",\n\n # client_id\n # The client id of the service principal.\n # - required for client_credentials authentication\n # client_id=\"...\",\n\n # sas_token\n # The shared access signature token.\n # - required for sas authentication\n # sas_token=\"...\",\n\n # authority_host\n # The authority host of the service principal.\n # - required for client_credentials authentication\n # - default value: `https://login.microsoftonline.com`\n # authority_host=\"...\",\n\n # Whether hierarchical namespace (HNS) is enabled for the storage account.\n # When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n # - default value: `false`\n # enable_hns=\"true\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"azdls\",\n filesystem=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"azdls\",\n # Root of this backend.\n # root=\"...\",\n\n # Filesystem name of this backend.\n filesystem=\"...\",\n\n # Endpoint of this backend.\n # endpoint=\"...\",\n\n # Account name of this backend.\n # account_name=\"...\",\n\n # Account key of this backend.\n # - required for shared_key authentication\n # account_key=\"...\",\n\n # client_secret\n # The client secret of the service principal.\n # - required for client_credentials authentication\n # client_secret=\"...\",\n\n # tenant_id\n # The tenant id of the service principal.\n # - required for client_credentials authentication\n # tenant_id=\"...\",\n\n # client_id\n # The client id of the service principal.\n # - required for client_credentials authentication\n # client_id=\"...\",\n\n # sas_token\n # The shared access signature token.\n # - required for sas authentication\n # sas_token=\"...\",\n\n # authority_host\n # The authority host of the service principal.\n # - required for client_credentials authentication\n # - default value: `https://login.microsoftonline.com`\n # authority_host=\"...\",\n\n # Whether hierarchical namespace (HNS) is enabled for the storage account.\n # When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n # - default value: `false`\n # enable_hns=\"true\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"azdls\", {\n filesystem: \"...\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"azdls\", {\n // Root of this backend.\n // root: \"...\",\n\n // Filesystem name of this backend.\n filesystem: \"...\",\n\n // Endpoint of this backend.\n // endpoint: \"...\",\n\n // Account name of this backend.\n // account_name: \"...\",\n\n // Account key of this backend.\n // - required for shared_key authentication\n // account_key: \"...\",\n\n // client_secret\n // The client secret of the service principal.\n // - required for client_credentials authentication\n // client_secret: \"...\",\n\n // tenant_id\n // The tenant id of the service principal.\n // - required for client_credentials authentication\n // tenant_id: \"...\",\n\n // client_id\n // The client id of the service principal.\n // - required for client_credentials authentication\n // client_id: \"...\",\n\n // sas_token\n // The shared access signature token.\n // - required for sas authentication\n // sas_token: \"...\",\n\n // authority_host\n // The authority host of the service principal.\n // - required for client_credentials authentication\n // - default value: `https://login.microsoftonline.com`\n // authority_host: \"...\",\n\n // Whether hierarchical namespace (HNS) is enabled for the storage account.\n // When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n // - default value: `false`\n // enable_hns: \"true\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azdls\", {\n filesystem: \"...\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azdls\", {\n // Root of this backend.\n // root: \"...\",\n\n // Filesystem name of this backend.\n filesystem: \"...\",\n\n // Endpoint of this backend.\n // endpoint: \"...\",\n\n // Account name of this backend.\n // account_name: \"...\",\n\n // Account key of this backend.\n // - required for shared_key authentication\n // account_key: \"...\",\n\n // client_secret\n // The client secret of the service principal.\n // - required for client_credentials authentication\n // client_secret: \"...\",\n\n // tenant_id\n // The tenant id of the service principal.\n // - required for client_credentials authentication\n // tenant_id: \"...\",\n\n // client_id\n // The client id of the service principal.\n // - required for client_credentials authentication\n // client_id: \"...\",\n\n // sas_token\n // The shared access signature token.\n // - required for sas authentication\n // sas_token: \"...\",\n\n // authority_host\n // The authority host of the service principal.\n // - required for client_credentials authentication\n // - default value: `https://login.microsoftonline.com`\n // authority_host: \"...\",\n\n // Whether hierarchical namespace (HNS) is enabled for the storage account.\n // When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n // - default value: `false`\n // enable_hns: \"true\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"filesystem\", \"...\");\nOperator op = Operator.of(\"azdls\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Root of this backend.\n// conf.put(\"root\", \"...\");\n\n// Filesystem name of this backend.\nconf.put(\"filesystem\", \"...\");\n\n// Endpoint of this backend.\n// conf.put(\"endpoint\", \"...\");\n\n// Account name of this backend.\n// conf.put(\"account_name\", \"...\");\n\n// Account key of this backend.\n// - required for shared_key authentication\n// conf.put(\"account_key\", \"...\");\n\n// client_secret\n// The client secret of the service principal.\n// - required for client_credentials authentication\n// conf.put(\"client_secret\", \"...\");\n\n// tenant_id\n// The tenant id of the service principal.\n// - required for client_credentials authentication\n// conf.put(\"tenant_id\", \"...\");\n\n// client_id\n// The client id of the service principal.\n// - required for client_credentials authentication\n// conf.put(\"client_id\", \"...\");\n\n// sas_token\n// The shared access signature token.\n// - required for sas authentication\n// conf.put(\"sas_token\", \"...\");\n\n// authority_host\n// The authority host of the service principal.\n// - required for client_credentials authentication\n// - default value: `https://login.microsoftonline.com`\n// conf.put(\"authority_host\", \"...\");\n\n// Whether hierarchical namespace (HNS) is enabled for the storage account.\n// When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n// - default value: `false`\n// conf.put(\"enable_hns\", \"true\");\n\nOperator op = Operator.of(\"azdls\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azdls\", {\n \"filesystem\" => \"...\",\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azdls\", {\n # Root of this backend.\n # \"root\" => \"...\",\n\n # Filesystem name of this backend.\n \"filesystem\" => \"...\",\n\n # Endpoint of this backend.\n # \"endpoint\" => \"...\",\n\n # Account name of this backend.\n # \"account_name\" => \"...\",\n\n # Account key of this backend.\n # - required for shared_key authentication\n # \"account_key\" => \"...\",\n\n # client_secret\n # The client secret of the service principal.\n # - required for client_credentials authentication\n # \"client_secret\" => \"...\",\n\n # tenant_id\n # The tenant id of the service principal.\n # - required for client_credentials authentication\n # \"tenant_id\" => \"...\",\n\n # client_id\n # The client id of the service principal.\n # - required for client_credentials authentication\n # \"client_id\" => \"...\",\n\n # sas_token\n # The shared access signature token.\n # - required for sas authentication\n # \"sas_token\" => \"...\",\n\n # authority_host\n # The authority host of the service principal.\n # - required for client_credentials authentication\n # - default value: `https://login.microsoftonline.com`\n # \"authority_host\" => \"...\",\n\n # Whether hierarchical namespace (HNS) is enabled for the storage account.\n # When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n # - default value: `false`\n # \"enable_hns\" => \"true\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/azdls\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azdls.Scheme, opendal.OperatorOptions{\n\t\"filesystem\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/azdls\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azdls.Scheme, opendal.OperatorOptions{\n\t// Root of this backend.\n\t// \"root\": \"...\",\n\n\t// Filesystem name of this backend.\n\t\"filesystem\": \"...\",\n\n\t// Endpoint of this backend.\n\t// \"endpoint\": \"...\",\n\n\t// Account name of this backend.\n\t// \"account_name\": \"...\",\n\n\t// Account key of this backend.\n\t// - required for shared_key authentication\n\t// \"account_key\": \"...\",\n\n\t// client_secret\n\t// The client secret of the service principal.\n\t// - required for client_credentials authentication\n\t// \"client_secret\": \"...\",\n\n\t// tenant_id\n\t// The tenant id of the service principal.\n\t// - required for client_credentials authentication\n\t// \"tenant_id\": \"...\",\n\n\t// client_id\n\t// The client id of the service principal.\n\t// - required for client_credentials authentication\n\t// \"client_id\": \"...\",\n\n\t// sas_token\n\t// The shared access signature token.\n\t// - required for sas authentication\n\t// \"sas_token\": \"...\",\n\n\t// authority_host\n\t// The authority host of the service principal.\n\t// - required for client_credentials authentication\n\t// - default value: `https://login.microsoftonline.com`\n\t// \"authority_host\": \"...\",\n\n\t// Whether hierarchical namespace (HNS) is enabled for the storage account.\n\t// When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n\t// - default value: `false`\n\t// \"enable_hns\": \"true\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"filesystem\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"azdls\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Root of this backend.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Filesystem name of this backend.\nopendal_operator_options_set(options, \"filesystem\", \"...\");\n\n// Endpoint of this backend.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// Account name of this backend.\n// opendal_operator_options_set(options, \"account_name\", \"...\");\n\n// Account key of this backend.\n// - required for shared_key authentication\n// opendal_operator_options_set(options, \"account_key\", \"...\");\n\n// client_secret\n// The client secret of the service principal.\n// - required for client_credentials authentication\n// opendal_operator_options_set(options, \"client_secret\", \"...\");\n\n// tenant_id\n// The tenant id of the service principal.\n// - required for client_credentials authentication\n// opendal_operator_options_set(options, \"tenant_id\", \"...\");\n\n// client_id\n// The client id of the service principal.\n// - required for client_credentials authentication\n// opendal_operator_options_set(options, \"client_id\", \"...\");\n\n// sas_token\n// The shared access signature token.\n// - required for sas authentication\n// opendal_operator_options_set(options, \"sas_token\", \"...\");\n\n// authority_host\n// The authority host of the service principal.\n// - required for client_credentials authentication\n// - default value: `https://login.microsoftonline.com`\n// opendal_operator_options_set(options, \"authority_host\", \"...\");\n\n// Whether hierarchical namespace (HNS) is enabled for the storage account.\n// When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n// - default value: `false`\n// opendal_operator_options_set(options, \"enable_hns\", \"true\");\nopendal_result_operator_new result = opendal_operator_new(\"azdls\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"filesystem\", \"...\"},\n};\nopendal::Operator operator(\"azdls\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Root of this backend.\n // {\"root\", \"...\"},\n\n // Filesystem name of this backend.\n {\"filesystem\", \"...\"},\n\n // Endpoint of this backend.\n // {\"endpoint\", \"...\"},\n\n // Account name of this backend.\n // {\"account_name\", \"...\"},\n\n // Account key of this backend.\n // - required for shared_key authentication\n // {\"account_key\", \"...\"},\n\n // client_secret\n // The client secret of the service principal.\n // - required for client_credentials authentication\n // {\"client_secret\", \"...\"},\n\n // tenant_id\n // The tenant id of the service principal.\n // - required for client_credentials authentication\n // {\"tenant_id\", \"...\"},\n\n // client_id\n // The client id of the service principal.\n // - required for client_credentials authentication\n // {\"client_id\", \"...\"},\n\n // sas_token\n // The shared access signature token.\n // - required for sas authentication\n // {\"sas_token\", \"...\"},\n\n // authority_host\n // The authority host of the service principal.\n // - required for client_credentials authentication\n // - default value: `https://login.microsoftonline.com`\n // {\"authority_host\", \"...\"},\n\n // Whether hierarchical namespace (HNS) is enabled for the storage account.\n // When enabled, recursive deletion can use pagination to avoid timeouts on large directories.\n // - default value: `false`\n // {\"enable_hns\", \"true\"},\n};\nopendal::Operator operator(\"azdls\", config);" } ] }, @@ -430,26 +534,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"azfile\", [\n (\"share_name\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"azfile\", [\n // The root path for azfile.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The endpoint for azfile.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The share name for azfile.\n (\"share_name\".to_string(), \"...\".to_string()),\n\n // The account name for azfile.\n // (\"account_name\".to_string(), \"...\".to_string()),\n\n // The account key for azfile.\n // (\"account_key\".to_string(), \"...\".to_string()),\n\n // The sas token for azfile.\n // (\"sas_token\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azfile\", [\n (\"share_name\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"azfile\", [\n // The root path for azfile.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The endpoint for azfile.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The share name for azfile.\n (\"share_name\".to_string(), \"...\".to_string()),\n\n // The account name for azfile.\n // (\"account_name\".to_string(), \"...\".to_string()),\n\n // The account key for azfile.\n // (\"account_key\".to_string(), \"...\".to_string()),\n\n // The sas token for azfile.\n // (\"sas_token\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"share_name\", \"...\");\nOperator operator = Operator.of(\"azfile\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// The root path for azfile.\n// config.put(\"root\", \"...\");\n\n// The endpoint for azfile.\n// config.put(\"endpoint\", \"...\");\n\n// The share name for azfile.\nconfig.put(\"share_name\", \"...\");\n\n// The account name for azfile.\n// config.put(\"account_name\", \"...\");\n\n// The account key for azfile.\n// config.put(\"account_key\", \"...\");\n\n// The sas token for azfile.\n// config.put(\"sas_token\", \"...\");\nOperator operator = Operator.of(\"azfile\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"azfile\",\n share_name=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"azfile\",\n # The root path for azfile.\n # root=\"...\",\n\n # The endpoint for azfile.\n # endpoint=\"...\",\n\n # The share name for azfile.\n share_name=\"...\",\n\n # The account name for azfile.\n # account_name=\"...\",\n\n # The account key for azfile.\n # account_key=\"...\",\n\n # The sas token for azfile.\n # sas_token=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"azfile\",\n share_name=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"azfile\",\n # The root path for azfile.\n # root=\"...\",\n\n # The endpoint for azfile.\n # endpoint=\"...\",\n\n # The share name for azfile.\n share_name=\"...\",\n\n # The account name for azfile.\n # account_name=\"...\",\n\n # The account key for azfile.\n # account_key=\"...\",\n\n # The sas token for azfile.\n # sas_token=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"azfile\", {\n share_name: \"...\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"azfile\", {\n // The root path for azfile.\n // root: \"...\",\n\n // The endpoint for azfile.\n // endpoint: \"...\",\n\n // The share name for azfile.\n share_name: \"...\",\n\n // The account name for azfile.\n // account_name: \"...\",\n\n // The account key for azfile.\n // account_key: \"...\",\n\n // The sas token for azfile.\n // sas_token: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azfile\", {\n share_name: \"...\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"azfile\", {\n // The root path for azfile.\n // root: \"...\",\n\n // The endpoint for azfile.\n // endpoint: \"...\",\n\n // The share name for azfile.\n share_name: \"...\",\n\n // The account name for azfile.\n // account_name: \"...\",\n\n // The account key for azfile.\n // account_key: \"...\",\n\n // The sas token for azfile.\n // sas_token: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"share_name\", \"...\");\nOperator op = Operator.of(\"azfile\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// The root path for azfile.\n// conf.put(\"root\", \"...\");\n\n// The endpoint for azfile.\n// conf.put(\"endpoint\", \"...\");\n\n// The share name for azfile.\nconf.put(\"share_name\", \"...\");\n\n// The account name for azfile.\n// conf.put(\"account_name\", \"...\");\n\n// The account key for azfile.\n// conf.put(\"account_key\", \"...\");\n\n// The sas token for azfile.\n// conf.put(\"sas_token\", \"...\");\n\nOperator op = Operator.of(\"azfile\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azfile\", {\n \"share_name\" => \"...\",\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"azfile\", {\n # The root path for azfile.\n # \"root\" => \"...\",\n\n # The endpoint for azfile.\n # \"endpoint\" => \"...\",\n\n # The share name for azfile.\n \"share_name\" => \"...\",\n\n # The account name for azfile.\n # \"account_name\" => \"...\",\n\n # The account key for azfile.\n # \"account_key\" => \"...\",\n\n # The sas token for azfile.\n # \"sas_token\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/azfile\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azfile.Scheme, opendal.OperatorOptions{\n\t\"share_name\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/azfile\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(azfile.Scheme, opendal.OperatorOptions{\n\t// The root path for azfile.\n\t// \"root\": \"...\",\n\n\t// The endpoint for azfile.\n\t// \"endpoint\": \"...\",\n\n\t// The share name for azfile.\n\t\"share_name\": \"...\",\n\n\t// The account name for azfile.\n\t// \"account_name\": \"...\",\n\n\t// The account key for azfile.\n\t// \"account_key\": \"...\",\n\n\t// The sas token for azfile.\n\t// \"sas_token\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"share_name\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"azfile\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The root path for azfile.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// The endpoint for azfile.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// The share name for azfile.\nopendal_operator_options_set(options, \"share_name\", \"...\");\n\n// The account name for azfile.\n// opendal_operator_options_set(options, \"account_name\", \"...\");\n\n// The account key for azfile.\n// opendal_operator_options_set(options, \"account_key\", \"...\");\n\n// The sas token for azfile.\n// opendal_operator_options_set(options, \"sas_token\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"azfile\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"share_name\", \"...\"},\n};\nopendal::Operator operator(\"azfile\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The root path for azfile.\n // {\"root\", \"...\"},\n\n // The endpoint for azfile.\n // {\"endpoint\", \"...\"},\n\n // The share name for azfile.\n {\"share_name\", \"...\"},\n\n // The account name for azfile.\n // {\"account_name\", \"...\"},\n\n // The account key for azfile.\n // {\"account_key\", \"...\"},\n\n // The sas token for azfile.\n // {\"sas_token\", \"...\"},\n};\nopendal::Operator operator(\"azfile\", config);" } ] }, @@ -500,26 +628,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"b2\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n (\"bucket_id\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"b2\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // keyID of this backend.\n //\n // - If application_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"application_key_id\".to_string(), \"...\".to_string()),\n\n // applicationKey of this backend.\n //\n // - If application_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"application_key\".to_string(), \"...\".to_string()),\n\n // bucket of this backend.\n //\n // required.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // bucket id of this backend.\n //\n // required.\n (\"bucket_id\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"b2\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n (\"bucket_id\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"b2\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // keyID of this backend.\n //\n // - If application_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"application_key_id\".to_string(), \"...\".to_string()),\n\n // applicationKey of this backend.\n //\n // - If application_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"application_key\".to_string(), \"...\".to_string()),\n\n // bucket of this backend.\n //\n // required.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // bucket id of this backend.\n //\n // required.\n (\"bucket_id\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"bucket\", \"...\");\nconfig.put(\"bucket_id\", \"...\");\nOperator operator = Operator.of(\"b2\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// keyID of this backend.\n//\n// - If application_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"application_key_id\", \"...\");\n\n// applicationKey of this backend.\n//\n// - If application_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"application_key\", \"...\");\n\n// bucket of this backend.\n//\n// required.\nconfig.put(\"bucket\", \"...\");\n\n// bucket id of this backend.\n//\n// required.\nconfig.put(\"bucket_id\", \"...\");\nOperator operator = Operator.of(\"b2\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"b2\",\n bucket=\"...\",\n bucket_id=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"b2\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # keyID of this backend.\n #\n # - If application_key_id is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # application_key_id=\"...\",\n\n # applicationKey of this backend.\n #\n # - If application_key is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # application_key=\"...\",\n\n # bucket of this backend.\n #\n # required.\n bucket=\"...\",\n\n # bucket id of this backend.\n #\n # required.\n bucket_id=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"b2\",\n bucket=\"...\",\n bucket_id=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"b2\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # keyID of this backend.\n #\n # - If application_key_id is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # application_key_id=\"...\",\n\n # applicationKey of this backend.\n #\n # - If application_key is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # application_key=\"...\",\n\n # bucket of this backend.\n #\n # required.\n bucket=\"...\",\n\n # bucket id of this backend.\n #\n # required.\n bucket_id=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"b2\", {\n bucket: \"...\",\n bucket_id: \"...\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"b2\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // keyID of this backend.\n //\n // - If application_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // application_key_id: \"...\",\n\n // applicationKey of this backend.\n //\n // - If application_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // application_key: \"...\",\n\n // bucket of this backend.\n //\n // required.\n bucket: \"...\",\n\n // bucket id of this backend.\n //\n // required.\n bucket_id: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"b2\", {\n bucket: \"...\",\n bucket_id: \"...\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"b2\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // keyID of this backend.\n //\n // - If application_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // application_key_id: \"...\",\n\n // applicationKey of this backend.\n //\n // - If application_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // application_key: \"...\",\n\n // bucket of this backend.\n //\n // required.\n bucket: \"...\",\n\n // bucket id of this backend.\n //\n // required.\n bucket_id: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"bucket\", \"...\");\nconf.put(\"bucket_id\", \"...\");\nOperator op = Operator.of(\"b2\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// conf.put(\"root\", \"...\");\n\n// keyID of this backend.\n//\n// - If application_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// conf.put(\"application_key_id\", \"...\");\n\n// applicationKey of this backend.\n//\n// - If application_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// conf.put(\"application_key\", \"...\");\n\n// bucket of this backend.\n//\n// required.\nconf.put(\"bucket\", \"...\");\n\n// bucket id of this backend.\n//\n// required.\nconf.put(\"bucket_id\", \"...\");\n\nOperator op = Operator.of(\"b2\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/b2\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(b2.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"...\",\n\t\"bucket_id\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/b2\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(b2.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// keyID of this backend.\n\t//\n\t// - If application_key_id is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"application_key_id\": \"...\",\n\n\t// applicationKey of this backend.\n\t//\n\t// - If application_key is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"application_key\": \"...\",\n\n\t// bucket of this backend.\n\t//\n\t// required.\n\t\"bucket\": \"...\",\n\n\t// bucket id of this backend.\n\t//\n\t// required.\n\t\"bucket_id\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"bucket\", \"...\");\nopendal_operator_options_set(options, \"bucket_id\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"b2\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of this backend.\n//\n// All operations will happen under this root.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// keyID of this backend.\n//\n// - If application_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// opendal_operator_options_set(options, \"application_key_id\", \"...\");\n\n// applicationKey of this backend.\n//\n// - If application_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// opendal_operator_options_set(options, \"application_key\", \"...\");\n\n// bucket of this backend.\n//\n// required.\nopendal_operator_options_set(options, \"bucket\", \"...\");\n\n// bucket id of this backend.\n//\n// required.\nopendal_operator_options_set(options, \"bucket_id\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"b2\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"bucket\", \"...\"},\n {\"bucket_id\", \"...\"},\n};\nopendal::Operator operator(\"b2\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of this backend.\n //\n // All operations will happen under this root.\n // {\"root\", \"...\"},\n\n // keyID of this backend.\n //\n // - If application_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // {\"application_key_id\", \"...\"},\n\n // applicationKey of this backend.\n //\n // - If application_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // {\"application_key\", \"...\"},\n\n // bucket of this backend.\n //\n // required.\n {\"bucket\", \"...\"},\n\n // bucket id of this backend.\n //\n // required.\n {\"bucket_id\", \"...\"},\n};\nopendal::Operator operator(\"b2\", config);" } ] }, @@ -542,26 +688,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"cacache\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"cacache\", [\n // That path to the cacache data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cacache\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cacache\", [\n // That path to the cacache data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"cacache\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// That path to the cacache data directory.\n// config.put(\"datadir\", \"...\");\nOperator operator = Operator.of(\"cacache\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"cacache\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"cacache\",\n # That path to the cacache data directory.\n # datadir=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"cacache\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"cacache\",\n # That path to the cacache data directory.\n # datadir=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"cacache\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"cacache\", {\n // That path to the cacache data directory.\n // datadir: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"cacache\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"cacache\", {\n // That path to the cacache data directory.\n // datadir: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"cacache\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// That path to the cacache data directory.\n// conf.put(\"datadir\", \"...\");\n\nOperator op = Operator.of(\"cacache\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/cacache\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cacache.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/cacache\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cacache.Scheme, opendal.OperatorOptions{\n\t// That path to the cacache data directory.\n\t// \"datadir\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"cacache\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// That path to the cacache data directory.\n// opendal_operator_options_set(options, \"datadir\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"cacache\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"cacache\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // That path to the cacache data directory.\n // {\"datadir\", \"...\"},\n};\nopendal::Operator operator(\"cacache\", config);" } ] }, @@ -612,14 +776,32 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"cloudflare-kv\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"cloudflare-kv\", [\n // The token used to authenticate with CloudFlare.\n // (\"api_token\".to_string(), \"...\".to_string()),\n\n // The account ID used to authenticate with CloudFlare. Used as URI path parameter.\n // (\"account_id\".to_string(), \"...\".to_string()),\n\n // The namespace ID. Used as URI path parameter.\n // (\"namespace_id\".to_string(), \"...\".to_string()),\n\n // The default ttl for write operations.\n // (\"default_ttl\".to_string(), \"10s\".to_string()),\n\n // Root within this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cloudflare-kv\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cloudflare-kv\", [\n // The token used to authenticate with CloudFlare.\n // (\"api_token\".to_string(), \"...\".to_string()),\n\n // The account ID used to authenticate with CloudFlare. Used as URI path parameter.\n // (\"account_id\".to_string(), \"...\".to_string()),\n\n // The namespace ID. Used as URI path parameter.\n // (\"namespace_id\".to_string(), \"...\".to_string()),\n\n // The default ttl for write operations.\n // (\"default_ttl\".to_string(), \"10s\".to_string()),\n\n // Root within this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"cloudflare-kv\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"cloudflare-kv\",\n # The token used to authenticate with CloudFlare.\n # api_token=\"...\",\n\n # The account ID used to authenticate with CloudFlare. Used as URI path parameter.\n # account_id=\"...\",\n\n # The namespace ID. Used as URI path parameter.\n # namespace_id=\"...\",\n\n # The default ttl for write operations.\n # default_ttl=\"10s\",\n\n # Root within this backend.\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"cloudflare-kv\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"cloudflare-kv\",\n # The token used to authenticate with CloudFlare.\n # api_token=\"...\",\n\n # The account ID used to authenticate with CloudFlare. Used as URI path parameter.\n # account_id=\"...\",\n\n # The namespace ID. Used as URI path parameter.\n # namespace_id=\"...\",\n\n # The default ttl for write operations.\n # default_ttl=\"10s\",\n\n # Root within this backend.\n # root=\"...\",\n)" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/cloudflare-kv\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cloudflare-kv.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/cloudflare-kv\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cloudflare-kv.Scheme, opendal.OperatorOptions{\n\t// The token used to authenticate with CloudFlare.\n\t// \"api_token\": \"...\",\n\n\t// The account ID used to authenticate with CloudFlare. Used as URI path parameter.\n\t// \"account_id\": \"...\",\n\n\t// The namespace ID. Used as URI path parameter.\n\t// \"namespace_id\": \"...\",\n\n\t// The default ttl for write operations.\n\t// \"default_ttl\": \"10s\",\n\n\t// Root within this backend.\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"cloudflare-kv\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The token used to authenticate with CloudFlare.\n// opendal_operator_options_set(options, \"api_token\", \"...\");\n\n// The account ID used to authenticate with CloudFlare. Used as URI path parameter.\n// opendal_operator_options_set(options, \"account_id\", \"...\");\n\n// The namespace ID. Used as URI path parameter.\n// opendal_operator_options_set(options, \"namespace_id\", \"...\");\n\n// The default ttl for write operations.\n// opendal_operator_options_set(options, \"default_ttl\", \"10s\");\n\n// Root within this backend.\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"cloudflare-kv\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"cloudflare-kv\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The token used to authenticate with CloudFlare.\n // {\"api_token\", \"...\"},\n\n // The account ID used to authenticate with CloudFlare. Used as URI path parameter.\n // {\"account_id\", \"...\"},\n\n // The namespace ID. Used as URI path parameter.\n // {\"namespace_id\", \"...\"},\n\n // The default ttl for write operations.\n // {\"default_ttl\", \"10s\"},\n\n // Root within this backend.\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"cloudflare-kv\", config);" } ] }, @@ -642,20 +824,38 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"compfs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"compfs\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"compfs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"compfs\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"compfs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"compfs\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"compfs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"compfs\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"compfs\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"compfs\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"compfs\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"compfs\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n});" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/compfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(compfs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/compfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(compfs.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"compfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of this backend.\n//\n// All operations will happen under this root.\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"compfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"compfs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of this backend.\n //\n // All operations will happen under this root.\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"compfs\", config);" } ] }, @@ -731,26 +931,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"cos\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"cos\", [\n // Root of this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint of this backend.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Secret ID of this backend.\n // (\"secret_id\".to_string(), \"...\".to_string()),\n\n // Secret key of this backend.\n // (\"secret_key\".to_string(), \"...\".to_string()),\n\n // Security token (a.k.a. session token) of this backend.\n //\n // This is used for temporary credentials issued by Tencent Cloud STS\n // (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n // provided, it will be used together with `secret_id` and `secret_key`\n // to sign requests, and the `x-cos-security-token` header will be\n // attached automatically by the signer.\n //\n // If this field is not set, OpenDAL will also fall back to reading\n // the token from environment variables `TENCENTCLOUD_TOKEN`,\n // `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n // `disable_config_load` is enabled).\n // (\"security_token\".to_string(), \"...\".to_string()),\n\n // Bucket of this backend.\n // (\"bucket\".to_string(), \"...\".to_string()),\n\n // Disable config load so that opendal will not load config from\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cos\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"cos\", [\n // Root of this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint of this backend.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Secret ID of this backend.\n // (\"secret_id\".to_string(), \"...\".to_string()),\n\n // Secret key of this backend.\n // (\"secret_key\".to_string(), \"...\".to_string()),\n\n // Security token (a.k.a. session token) of this backend.\n //\n // This is used for temporary credentials issued by Tencent Cloud STS\n // (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n // provided, it will be used together with `secret_id` and `secret_key`\n // to sign requests, and the `x-cos-security-token` header will be\n // attached automatically by the signer.\n //\n // If this field is not set, OpenDAL will also fall back to reading\n // the token from environment variables `TENCENTCLOUD_TOKEN`,\n // `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n // `disable_config_load` is enabled).\n // (\"security_token\".to_string(), \"...\".to_string()),\n\n // Bucket of this backend.\n // (\"bucket\".to_string(), \"...\".to_string()),\n\n // Disable config load so that opendal will not load config from\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"cos\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Root of this backend.\n// config.put(\"root\", \"...\");\n\n// Endpoint of this backend.\n// config.put(\"endpoint\", \"...\");\n\n// Secret ID of this backend.\n// config.put(\"secret_id\", \"...\");\n\n// Secret key of this backend.\n// config.put(\"secret_key\", \"...\");\n\n// Security token (a.k.a. session token) of this backend.\n//\n// This is used for temporary credentials issued by Tencent Cloud STS\n// (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n// provided, it will be used together with `secret_id` and `secret_key`\n// to sign requests, and the `x-cos-security-token` header will be\n// attached automatically by the signer.\n//\n// If this field is not set, OpenDAL will also fall back to reading\n// the token from environment variables `TENCENTCLOUD_TOKEN`,\n// `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n// `disable_config_load` is enabled).\n// config.put(\"security_token\", \"...\");\n\n// Bucket of this backend.\n// config.put(\"bucket\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// config.put(\"disable_config_load\", \"true\");\nOperator operator = Operator.of(\"cos\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"cos\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"cos\",\n # Root of this backend.\n # root=\"...\",\n\n # Endpoint of this backend.\n # endpoint=\"...\",\n\n # Secret ID of this backend.\n # secret_id=\"...\",\n\n # Secret key of this backend.\n # secret_key=\"...\",\n\n # Security token (a.k.a. session token) of this backend.\n #\n # This is used for temporary credentials issued by Tencent Cloud STS\n # (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n # provided, it will be used together with `secret_id` and `secret_key`\n # to sign requests, and the `x-cos-security-token` header will be\n # attached automatically by the signer.\n #\n # If this field is not set, OpenDAL will also fall back to reading\n # the token from environment variables `TENCENTCLOUD_TOKEN`,\n # `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n # `disable_config_load` is enabled).\n # security_token=\"...\",\n\n # Bucket of this backend.\n # bucket=\"...\",\n\n # Disable config load so that opendal will not load config from\n # disable_config_load=\"true\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"cos\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"cos\",\n # Root of this backend.\n # root=\"...\",\n\n # Endpoint of this backend.\n # endpoint=\"...\",\n\n # Secret ID of this backend.\n # secret_id=\"...\",\n\n # Secret key of this backend.\n # secret_key=\"...\",\n\n # Security token (a.k.a. session token) of this backend.\n #\n # This is used for temporary credentials issued by Tencent Cloud STS\n # (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n # provided, it will be used together with `secret_id` and `secret_key`\n # to sign requests, and the `x-cos-security-token` header will be\n # attached automatically by the signer.\n #\n # If this field is not set, OpenDAL will also fall back to reading\n # the token from environment variables `TENCENTCLOUD_TOKEN`,\n # `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n # `disable_config_load` is enabled).\n # security_token=\"...\",\n\n # Bucket of this backend.\n # bucket=\"...\",\n\n # Disable config load so that opendal will not load config from\n # disable_config_load=\"true\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"cos\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"cos\", {\n // Root of this backend.\n // root: \"...\",\n\n // Endpoint of this backend.\n // endpoint: \"...\",\n\n // Secret ID of this backend.\n // secret_id: \"...\",\n\n // Secret key of this backend.\n // secret_key: \"...\",\n\n // Security token (a.k.a. session token) of this backend.\n //\n // This is used for temporary credentials issued by Tencent Cloud STS\n // (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n // provided, it will be used together with `secret_id` and `secret_key`\n // to sign requests, and the `x-cos-security-token` header will be\n // attached automatically by the signer.\n //\n // If this field is not set, OpenDAL will also fall back to reading\n // the token from environment variables `TENCENTCLOUD_TOKEN`,\n // `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n // `disable_config_load` is enabled).\n // security_token: \"...\",\n\n // Bucket of this backend.\n // bucket: \"...\",\n\n // Disable config load so that opendal will not load config from\n // disable_config_load: \"true\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"cos\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"cos\", {\n // Root of this backend.\n // root: \"...\",\n\n // Endpoint of this backend.\n // endpoint: \"...\",\n\n // Secret ID of this backend.\n // secret_id: \"...\",\n\n // Secret key of this backend.\n // secret_key: \"...\",\n\n // Security token (a.k.a. session token) of this backend.\n //\n // This is used for temporary credentials issued by Tencent Cloud STS\n // (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n // provided, it will be used together with `secret_id` and `secret_key`\n // to sign requests, and the `x-cos-security-token` header will be\n // attached automatically by the signer.\n //\n // If this field is not set, OpenDAL will also fall back to reading\n // the token from environment variables `TENCENTCLOUD_TOKEN`,\n // `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n // `disable_config_load` is enabled).\n // security_token: \"...\",\n\n // Bucket of this backend.\n // bucket: \"...\",\n\n // Disable config load so that opendal will not load config from\n // disable_config_load: \"true\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"cos\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Root of this backend.\n// conf.put(\"root\", \"...\");\n\n// Endpoint of this backend.\n// conf.put(\"endpoint\", \"...\");\n\n// Secret ID of this backend.\n// conf.put(\"secret_id\", \"...\");\n\n// Secret key of this backend.\n// conf.put(\"secret_key\", \"...\");\n\n// Security token (a.k.a. session token) of this backend.\n//\n// This is used for temporary credentials issued by Tencent Cloud STS\n// (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n// provided, it will be used together with `secret_id` and `secret_key`\n// to sign requests, and the `x-cos-security-token` header will be\n// attached automatically by the signer.\n//\n// If this field is not set, OpenDAL will also fall back to reading\n// the token from environment variables `TENCENTCLOUD_TOKEN`,\n// `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n// `disable_config_load` is enabled).\n// conf.put(\"security_token\", \"...\");\n\n// Bucket of this backend.\n// conf.put(\"bucket\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// conf.put(\"disable_config_load\", \"true\");\n\nOperator op = Operator.of(\"cos\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"cos\", {\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"cos\", {\n # Root of this backend.\n # \"root\" => \"...\",\n\n # Endpoint of this backend.\n # \"endpoint\" => \"...\",\n\n # Secret ID of this backend.\n # \"secret_id\" => \"...\",\n\n # Secret key of this backend.\n # \"secret_key\" => \"...\",\n\n # Security token (a.k.a. session token) of this backend.\n #\n # This is used for temporary credentials issued by Tencent Cloud STS\n # (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n # provided, it will be used together with `secret_id` and `secret_key`\n # to sign requests, and the `x-cos-security-token` header will be\n # attached automatically by the signer.\n #\n # If this field is not set, OpenDAL will also fall back to reading\n # the token from environment variables `TENCENTCLOUD_TOKEN`,\n # `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n # `disable_config_load` is enabled).\n # \"security_token\" => \"...\",\n\n # Bucket of this backend.\n # \"bucket\" => \"...\",\n\n # Disable config load so that opendal will not load config from\n # \"disable_config_load\" => \"true\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/cos\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cos.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/cos\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(cos.Scheme, opendal.OperatorOptions{\n\t// Root of this backend.\n\t// \"root\": \"...\",\n\n\t// Endpoint of this backend.\n\t// \"endpoint\": \"...\",\n\n\t// Secret ID of this backend.\n\t// \"secret_id\": \"...\",\n\n\t// Secret key of this backend.\n\t// \"secret_key\": \"...\",\n\n\t// Security token (a.k.a. session token) of this backend.\n\t//\n\t// This is used for temporary credentials issued by Tencent Cloud STS\n\t// (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n\t// provided, it will be used together with `secret_id` and `secret_key`\n\t// to sign requests, and the `x-cos-security-token` header will be\n\t// attached automatically by the signer.\n\t//\n\t// If this field is not set, OpenDAL will also fall back to reading\n\t// the token from environment variables `TENCENTCLOUD_TOKEN`,\n\t// `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n\t// `disable_config_load` is enabled).\n\t// \"security_token\": \"...\",\n\n\t// Bucket of this backend.\n\t// \"bucket\": \"...\",\n\n\t// Disable config load so that opendal will not load config from\n\t// \"disable_config_load\": \"true\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"cos\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Root of this backend.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Endpoint of this backend.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// Secret ID of this backend.\n// opendal_operator_options_set(options, \"secret_id\", \"...\");\n\n// Secret key of this backend.\n// opendal_operator_options_set(options, \"secret_key\", \"...\");\n\n// Security token (a.k.a. session token) of this backend.\n//\n// This is used for temporary credentials issued by Tencent Cloud STS\n// (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n// provided, it will be used together with `secret_id` and `secret_key`\n// to sign requests, and the `x-cos-security-token` header will be\n// attached automatically by the signer.\n//\n// If this field is not set, OpenDAL will also fall back to reading\n// the token from environment variables `TENCENTCLOUD_TOKEN`,\n// `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n// `disable_config_load` is enabled).\n// opendal_operator_options_set(options, \"security_token\", \"...\");\n\n// Bucket of this backend.\n// opendal_operator_options_set(options, \"bucket\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// opendal_operator_options_set(options, \"disable_config_load\", \"true\");\nopendal_result_operator_new result = opendal_operator_new(\"cos\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"cos\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Root of this backend.\n // {\"root\", \"...\"},\n\n // Endpoint of this backend.\n // {\"endpoint\", \"...\"},\n\n // Secret ID of this backend.\n // {\"secret_id\", \"...\"},\n\n // Secret key of this backend.\n // {\"secret_key\", \"...\"},\n\n // Security token (a.k.a. session token) of this backend.\n //\n // This is used for temporary credentials issued by Tencent Cloud STS\n // (e.g. `GetFederationToken` / `AssumeRole`). When `security_token` is\n // provided, it will be used together with `secret_id` and `secret_key`\n // to sign requests, and the `x-cos-security-token` header will be\n // attached automatically by the signer.\n //\n // If this field is not set, OpenDAL will also fall back to reading\n // the token from environment variables `TENCENTCLOUD_TOKEN`,\n // `TENCENTCLOUD_SECURITY_TOKEN` or `QCLOUD_SECRET_TOKEN` (unless\n // `disable_config_load` is enabled).\n // {\"security_token\", \"...\"},\n\n // Bucket of this backend.\n // {\"bucket\", \"...\"},\n\n // Disable config load so that opendal will not load config from\n // {\"disable_config_load\", \"true\"},\n};\nopendal::Operator operator(\"cos\", config);" } ] }, @@ -815,14 +1039,32 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"d1\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"d1\", [\n // Set the token of cloudflare api.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // Set the account id of cloudflare api.\n // (\"account_id\".to_string(), \"...\".to_string()),\n\n // Set the database id of cloudflare api.\n // (\"database_id\".to_string(), \"...\".to_string()),\n\n // Set the working directory of OpenDAL.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Set the table of D1 Database.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // Set the key field of D1 Database.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // Set the value field of D1 Database.\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"d1\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"d1\", [\n // Set the token of cloudflare api.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // Set the account id of cloudflare api.\n // (\"account_id\".to_string(), \"...\".to_string()),\n\n // Set the database id of cloudflare api.\n // (\"database_id\".to_string(), \"...\".to_string()),\n\n // Set the working directory of OpenDAL.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Set the table of D1 Database.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // Set the key field of D1 Database.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // Set the value field of D1 Database.\n // (\"value_field\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"d1\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"d1\",\n # Set the token of cloudflare api.\n # token=\"...\",\n\n # Set the account id of cloudflare api.\n # account_id=\"...\",\n\n # Set the database id of cloudflare api.\n # database_id=\"...\",\n\n # Set the working directory of OpenDAL.\n # root=\"...\",\n\n # Set the table of D1 Database.\n # table=\"...\",\n\n # Set the key field of D1 Database.\n # key_field=\"...\",\n\n # Set the value field of D1 Database.\n # value_field=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"d1\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"d1\",\n # Set the token of cloudflare api.\n # token=\"...\",\n\n # Set the account id of cloudflare api.\n # account_id=\"...\",\n\n # Set the database id of cloudflare api.\n # database_id=\"...\",\n\n # Set the working directory of OpenDAL.\n # root=\"...\",\n\n # Set the table of D1 Database.\n # table=\"...\",\n\n # Set the key field of D1 Database.\n # key_field=\"...\",\n\n # Set the value field of D1 Database.\n # value_field=\"...\",\n)" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/d1\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(d1.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/d1\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(d1.Scheme, opendal.OperatorOptions{\n\t// Set the token of cloudflare api.\n\t// \"token\": \"...\",\n\n\t// Set the account id of cloudflare api.\n\t// \"account_id\": \"...\",\n\n\t// Set the database id of cloudflare api.\n\t// \"database_id\": \"...\",\n\n\t// Set the working directory of OpenDAL.\n\t// \"root\": \"...\",\n\n\t// Set the table of D1 Database.\n\t// \"table\": \"...\",\n\n\t// Set the key field of D1 Database.\n\t// \"key_field\": \"...\",\n\n\t// Set the value field of D1 Database.\n\t// \"value_field\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"d1\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Set the token of cloudflare api.\n// opendal_operator_options_set(options, \"token\", \"...\");\n\n// Set the account id of cloudflare api.\n// opendal_operator_options_set(options, \"account_id\", \"...\");\n\n// Set the database id of cloudflare api.\n// opendal_operator_options_set(options, \"database_id\", \"...\");\n\n// Set the working directory of OpenDAL.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Set the table of D1 Database.\n// opendal_operator_options_set(options, \"table\", \"...\");\n\n// Set the key field of D1 Database.\n// opendal_operator_options_set(options, \"key_field\", \"...\");\n\n// Set the value field of D1 Database.\n// opendal_operator_options_set(options, \"value_field\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"d1\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"d1\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Set the token of cloudflare api.\n // {\"token\", \"...\"},\n\n // Set the account id of cloudflare api.\n // {\"account_id\", \"...\"},\n\n // Set the database id of cloudflare api.\n // {\"database_id\", \"...\"},\n\n // Set the working directory of OpenDAL.\n // {\"root\", \"...\"},\n\n // Set the table of D1 Database.\n // {\"table\", \"...\"},\n\n // Set the key field of D1 Database.\n // {\"key_field\", \"...\"},\n\n // Set the value field of D1 Database.\n // {\"value_field\", \"...\"},\n};\nopendal::Operator operator(\"d1\", config);" } ] }, @@ -845,26 +1087,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"dashmap\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"dashmap\", [\n // root path of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dashmap\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dashmap\", [\n // root path of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"dashmap\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// root path of this backend\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"dashmap\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"dashmap\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"dashmap\",\n # root path of this backend\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"dashmap\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"dashmap\",\n # root path of this backend\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"dashmap\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"dashmap\", {\n // root path of this backend\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"dashmap\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"dashmap\", {\n // root path of this backend\n // root: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"dashmap\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// root path of this backend\n// conf.put(\"root\", \"...\");\n\nOperator op = Operator.of(\"dashmap\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/dashmap\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dashmap.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/dashmap\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dashmap.Scheme, opendal.OperatorOptions{\n\t// root path of this backend\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"dashmap\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root path of this backend\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"dashmap\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"dashmap\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root path of this backend\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"dashmap\", config);" } ] }, @@ -901,14 +1161,32 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"dbfs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"dbfs\", [\n // The root for dbfs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The endpoint for dbfs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The token for dbfs.\n // (\"token\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dbfs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dbfs\", [\n // The root for dbfs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The endpoint for dbfs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The token for dbfs.\n // (\"token\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"dbfs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"dbfs\",\n # The root for dbfs.\n # root=\"...\",\n\n # The endpoint for dbfs.\n # endpoint=\"...\",\n\n # The token for dbfs.\n # token=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"dbfs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"dbfs\",\n # The root for dbfs.\n # root=\"...\",\n\n # The endpoint for dbfs.\n # endpoint=\"...\",\n\n # The token for dbfs.\n # token=\"...\",\n)" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/dbfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dbfs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/dbfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dbfs.Scheme, opendal.OperatorOptions{\n\t// The root for dbfs.\n\t// \"root\": \"...\",\n\n\t// The endpoint for dbfs.\n\t// \"endpoint\": \"...\",\n\n\t// The token for dbfs.\n\t// \"token\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"dbfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The root for dbfs.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// The endpoint for dbfs.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// The token for dbfs.\n// opendal_operator_options_set(options, \"token\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"dbfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"dbfs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The root for dbfs.\n // {\"root\", \"...\"},\n\n // The endpoint for dbfs.\n // {\"endpoint\", \"...\"},\n\n // The token for dbfs.\n // {\"token\", \"...\"},\n};\nopendal::Operator operator(\"dbfs\", config);" } ] }, @@ -959,26 +1237,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"dropbox\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"dropbox\", [\n // root path for dropbox.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // access token for dropbox.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // refresh_token for dropbox.\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // client_id for dropbox.\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // client_secret for dropbox.\n // (\"client_secret\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dropbox\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"dropbox\", [\n // root path for dropbox.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // access token for dropbox.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // refresh_token for dropbox.\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // client_id for dropbox.\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // client_secret for dropbox.\n // (\"client_secret\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"dropbox\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// root path for dropbox.\n// config.put(\"root\", \"...\");\n\n// access token for dropbox.\n// config.put(\"access_token\", \"...\");\n\n// refresh_token for dropbox.\n// config.put(\"refresh_token\", \"...\");\n\n// client_id for dropbox.\n// config.put(\"client_id\", \"...\");\n\n// client_secret for dropbox.\n// config.put(\"client_secret\", \"...\");\nOperator operator = Operator.of(\"dropbox\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"dropbox\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"dropbox\",\n # root path for dropbox.\n # root=\"...\",\n\n # access token for dropbox.\n # access_token=\"...\",\n\n # refresh_token for dropbox.\n # refresh_token=\"...\",\n\n # client_id for dropbox.\n # client_id=\"...\",\n\n # client_secret for dropbox.\n # client_secret=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"dropbox\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"dropbox\",\n # root path for dropbox.\n # root=\"...\",\n\n # access token for dropbox.\n # access_token=\"...\",\n\n # refresh_token for dropbox.\n # refresh_token=\"...\",\n\n # client_id for dropbox.\n # client_id=\"...\",\n\n # client_secret for dropbox.\n # client_secret=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"dropbox\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"dropbox\", {\n // root path for dropbox.\n // root: \"...\",\n\n // access token for dropbox.\n // access_token: \"...\",\n\n // refresh_token for dropbox.\n // refresh_token: \"...\",\n\n // client_id for dropbox.\n // client_id: \"...\",\n\n // client_secret for dropbox.\n // client_secret: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"dropbox\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"dropbox\", {\n // root path for dropbox.\n // root: \"...\",\n\n // access token for dropbox.\n // access_token: \"...\",\n\n // refresh_token for dropbox.\n // refresh_token: \"...\",\n\n // client_id for dropbox.\n // client_id: \"...\",\n\n // client_secret for dropbox.\n // client_secret: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"dropbox\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// root path for dropbox.\n// conf.put(\"root\", \"...\");\n\n// access token for dropbox.\n// conf.put(\"access_token\", \"...\");\n\n// refresh_token for dropbox.\n// conf.put(\"refresh_token\", \"...\");\n\n// client_id for dropbox.\n// conf.put(\"client_id\", \"...\");\n\n// client_secret for dropbox.\n// conf.put(\"client_secret\", \"...\");\n\nOperator op = Operator.of(\"dropbox\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/dropbox\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dropbox.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/dropbox\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(dropbox.Scheme, opendal.OperatorOptions{\n\t// root path for dropbox.\n\t// \"root\": \"...\",\n\n\t// access token for dropbox.\n\t// \"access_token\": \"...\",\n\n\t// refresh_token for dropbox.\n\t// \"refresh_token\": \"...\",\n\n\t// client_id for dropbox.\n\t// \"client_id\": \"...\",\n\n\t// client_secret for dropbox.\n\t// \"client_secret\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"dropbox\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root path for dropbox.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// access token for dropbox.\n// opendal_operator_options_set(options, \"access_token\", \"...\");\n\n// refresh_token for dropbox.\n// opendal_operator_options_set(options, \"refresh_token\", \"...\");\n\n// client_id for dropbox.\n// opendal_operator_options_set(options, \"client_id\", \"...\");\n\n// client_secret for dropbox.\n// opendal_operator_options_set(options, \"client_secret\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"dropbox\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"dropbox\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root path for dropbox.\n // {\"root\", \"...\"},\n\n // access token for dropbox.\n // {\"access_token\", \"...\"},\n\n // refresh_token for dropbox.\n // {\"refresh_token\", \"...\"},\n\n // client_id for dropbox.\n // {\"client_id\", \"...\"},\n\n // client_secret for dropbox.\n // {\"client_secret\", \"...\"},\n};\nopendal::Operator operator(\"dropbox\", config);" } ] }, @@ -1043,26 +1339,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"etcd\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"etcd\", [\n // network address of the Etcd services.\n // If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n // e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n //\n // default is \"http://127.0.0.1:2379\"\n // (\"endpoints\".to_string(), \"...\".to_string()),\n\n // the username to connect etcd service.\n //\n // default is None\n // (\"username\".to_string(), \"...\".to_string()),\n\n // the password for authentication\n //\n // default is None\n // (\"password\".to_string(), \"...\".to_string()),\n\n // the working directory of the etcd service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n\n // certificate authority file path\n //\n // default is None\n // (\"ca_path\".to_string(), \"...\".to_string()),\n\n // cert path\n //\n // default is None\n // (\"cert_path\".to_string(), \"...\".to_string()),\n\n // key path\n //\n // default is None\n // (\"key_path\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"etcd\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"etcd\", [\n // network address of the Etcd services.\n // If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n // e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n //\n // default is \"http://127.0.0.1:2379\"\n // (\"endpoints\".to_string(), \"...\".to_string()),\n\n // the username to connect etcd service.\n //\n // default is None\n // (\"username\".to_string(), \"...\".to_string()),\n\n // the password for authentication\n //\n // default is None\n // (\"password\".to_string(), \"...\".to_string()),\n\n // the working directory of the etcd service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n\n // certificate authority file path\n //\n // default is None\n // (\"ca_path\".to_string(), \"...\".to_string()),\n\n // cert path\n //\n // default is None\n // (\"cert_path\".to_string(), \"...\".to_string()),\n\n // key path\n //\n // default is None\n // (\"key_path\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"etcd\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// network address of the Etcd services.\n// If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n// e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n//\n// default is \"http://127.0.0.1:2379\"\n// config.put(\"endpoints\", \"...\");\n\n// the username to connect etcd service.\n//\n// default is None\n// config.put(\"username\", \"...\");\n\n// the password for authentication\n//\n// default is None\n// config.put(\"password\", \"...\");\n\n// the working directory of the etcd service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// config.put(\"root\", \"...\");\n\n// certificate authority file path\n//\n// default is None\n// config.put(\"ca_path\", \"...\");\n\n// cert path\n//\n// default is None\n// config.put(\"cert_path\", \"...\");\n\n// key path\n//\n// default is None\n// config.put(\"key_path\", \"...\");\nOperator operator = Operator.of(\"etcd\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"etcd\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"etcd\",\n # network address of the Etcd services.\n # If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n # e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n #\n # default is \"http://127.0.0.1:2379\"\n # endpoints=\"...\",\n\n # the username to connect etcd service.\n #\n # default is None\n # username=\"...\",\n\n # the password for authentication\n #\n # default is None\n # password=\"...\",\n\n # the working directory of the etcd service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n\n # certificate authority file path\n #\n # default is None\n # ca_path=\"...\",\n\n # cert path\n #\n # default is None\n # cert_path=\"...\",\n\n # key path\n #\n # default is None\n # key_path=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"etcd\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"etcd\",\n # network address of the Etcd services.\n # If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n # e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n #\n # default is \"http://127.0.0.1:2379\"\n # endpoints=\"...\",\n\n # the username to connect etcd service.\n #\n # default is None\n # username=\"...\",\n\n # the password for authentication\n #\n # default is None\n # password=\"...\",\n\n # the working directory of the etcd service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n\n # certificate authority file path\n #\n # default is None\n # ca_path=\"...\",\n\n # cert path\n #\n # default is None\n # cert_path=\"...\",\n\n # key path\n #\n # default is None\n # key_path=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"etcd\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"etcd\", {\n // network address of the Etcd services.\n // If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n // e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n //\n // default is \"http://127.0.0.1:2379\"\n // endpoints: \"...\",\n\n // the username to connect etcd service.\n //\n // default is None\n // username: \"...\",\n\n // the password for authentication\n //\n // default is None\n // password: \"...\",\n\n // the working directory of the etcd service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n\n // certificate authority file path\n //\n // default is None\n // ca_path: \"...\",\n\n // cert path\n //\n // default is None\n // cert_path: \"...\",\n\n // key path\n //\n // default is None\n // key_path: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"etcd\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"etcd\", {\n // network address of the Etcd services.\n // If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n // e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n //\n // default is \"http://127.0.0.1:2379\"\n // endpoints: \"...\",\n\n // the username to connect etcd service.\n //\n // default is None\n // username: \"...\",\n\n // the password for authentication\n //\n // default is None\n // password: \"...\",\n\n // the working directory of the etcd service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n\n // certificate authority file path\n //\n // default is None\n // ca_path: \"...\",\n\n // cert path\n //\n // default is None\n // cert_path: \"...\",\n\n // key path\n //\n // default is None\n // key_path: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"etcd\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// network address of the Etcd services.\n// If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n// e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n//\n// default is \"http://127.0.0.1:2379\"\n// conf.put(\"endpoints\", \"...\");\n\n// the username to connect etcd service.\n//\n// default is None\n// conf.put(\"username\", \"...\");\n\n// the password for authentication\n//\n// default is None\n// conf.put(\"password\", \"...\");\n\n// the working directory of the etcd service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// conf.put(\"root\", \"...\");\n\n// certificate authority file path\n//\n// default is None\n// conf.put(\"ca_path\", \"...\");\n\n// cert path\n//\n// default is None\n// conf.put(\"cert_path\", \"...\");\n\n// key path\n//\n// default is None\n// conf.put(\"key_path\", \"...\");\n\nOperator op = Operator.of(\"etcd\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/etcd\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(etcd.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/etcd\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(etcd.Scheme, opendal.OperatorOptions{\n\t// network address of the Etcd services.\n\t// If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n\t// e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n\t//\n\t// default is \"http://127.0.0.1:2379\"\n\t// \"endpoints\": \"...\",\n\n\t// the username to connect etcd service.\n\t//\n\t// default is None\n\t// \"username\": \"...\",\n\n\t// the password for authentication\n\t//\n\t// default is None\n\t// \"password\": \"...\",\n\n\t// the working directory of the etcd service. Can be \"/path/to/dir\"\n\t//\n\t// default is \"/\"\n\t// \"root\": \"...\",\n\n\t// certificate authority file path\n\t//\n\t// default is None\n\t// \"ca_path\": \"...\",\n\n\t// cert path\n\t//\n\t// default is None\n\t// \"cert_path\": \"...\",\n\n\t// key path\n\t//\n\t// default is None\n\t// \"key_path\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"etcd\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// network address of the Etcd services.\n// If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n// e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n//\n// default is \"http://127.0.0.1:2379\"\n// opendal_operator_options_set(options, \"endpoints\", \"...\");\n\n// the username to connect etcd service.\n//\n// default is None\n// opendal_operator_options_set(options, \"username\", \"...\");\n\n// the password for authentication\n//\n// default is None\n// opendal_operator_options_set(options, \"password\", \"...\");\n\n// the working directory of the etcd service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// certificate authority file path\n//\n// default is None\n// opendal_operator_options_set(options, \"ca_path\", \"...\");\n\n// cert path\n//\n// default is None\n// opendal_operator_options_set(options, \"cert_path\", \"...\");\n\n// key path\n//\n// default is None\n// opendal_operator_options_set(options, \"key_path\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"etcd\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"etcd\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // network address of the Etcd services.\n // If use https, must set TLS options: `ca_path`, `cert_path`, `key_path`.\n // e.g. \"127.0.0.1:23790,127.0.0.1:23791,127.0.0.1:23792\" or \"http://127.0.0.1:23790,http://127.0.0.1:23791,http://127.0.0.1:23792\" or \"https://127.0.0.1:23790,https://127.0.0.1:23791,https://127.0.0.1:23792\"\n //\n // default is \"http://127.0.0.1:2379\"\n // {\"endpoints\", \"...\"},\n\n // the username to connect etcd service.\n //\n // default is None\n // {\"username\", \"...\"},\n\n // the password for authentication\n //\n // default is None\n // {\"password\", \"...\"},\n\n // the working directory of the etcd service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // {\"root\", \"...\"},\n\n // certificate authority file path\n //\n // default is None\n // {\"ca_path\", \"...\"},\n\n // cert path\n //\n // default is None\n // {\"cert_path\", \"...\"},\n\n // key path\n //\n // default is None\n // {\"key_path\", \"...\"},\n};\nopendal::Operator operator(\"etcd\", config);" } ] }, @@ -1092,20 +1406,38 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"foundationdb\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"foundationdb\", [\n // root of the backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // config_path for the backend.\n // (\"config_path\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"foundationdb\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"foundationdb\", [\n // root of the backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // config_path for the backend.\n // (\"config_path\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"foundationdb\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"foundationdb\",\n # root of the backend.\n # root=\"...\",\n\n # config_path for the backend.\n # config_path=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"foundationdb\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"foundationdb\",\n # root of the backend.\n # root=\"...\",\n\n # config_path for the backend.\n # config_path=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"foundationdb\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"foundationdb\", {\n // root of the backend.\n // root: \"...\",\n\n // config_path for the backend.\n // config_path: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"foundationdb\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"foundationdb\", {\n // root of the backend.\n // root: \"...\",\n\n // config_path for the backend.\n // config_path: \"...\",\n});" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/foundationdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(foundationdb.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/foundationdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(foundationdb.Scheme, opendal.OperatorOptions{\n\t// root of the backend.\n\t// \"root\": \"...\",\n\n\t// config_path for the backend.\n\t// \"config_path\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"foundationdb\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of the backend.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// config_path for the backend.\n// opendal_operator_options_set(options, \"config_path\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"foundationdb\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"foundationdb\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of the backend.\n // {\"root\", \"...\"},\n\n // config_path for the backend.\n // {\"config_path\", \"...\"},\n};\nopendal::Operator operator(\"foundationdb\", config);" } ] }, @@ -1177,14 +1509,32 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"foyer\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"foyer\", [\n // Name for this cache instance.\n // (\"name\".to_string(), \"...\".to_string()),\n\n // Root path of this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Memory capacity in bytes for the cache.\n // (\"memory\".to_string(), \"1000\".to_string()),\n\n // Disk cache directory path.\n //\n // If set, enables hybrid cache with disk storage. Data will be persisted to\n // this directory when memory cache is full.\n // (\"disk_path\".to_string(), \"...\".to_string()),\n\n // Disk cache total capacity in bytes.\n // Only used when `disk_path` is set.\n // (\"disk_capacity\".to_string(), \"1000\".to_string()),\n\n // Individual cache file size in bytes.\n //\n // Default is 1 MiB.\n // Only used when `disk_path` is set.\n // (\"disk_file_size\".to_string(), \"1000\".to_string()),\n\n // Recovery mode when starting the cache.\n //\n // Valid values: \"none\" (default), \"quiet\", \"strict\".\n // - \"none\": Don't recover from disk\n // - \"quiet\": Recover and skip errors\n // - \"strict\": Recover and panic on errors\n // (\"recover_mode\".to_string(), \"...\".to_string()),\n\n // Number of shards for concurrent access.\n //\n // Default is 1. Higher values improve concurrency but increase overhead.\n // (\"shards\".to_string(), \"1000\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"foyer\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"foyer\", [\n // Name for this cache instance.\n // (\"name\".to_string(), \"...\".to_string()),\n\n // Root path of this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Memory capacity in bytes for the cache.\n // (\"memory\".to_string(), \"1000\".to_string()),\n\n // Disk cache directory path.\n //\n // If set, enables hybrid cache with disk storage. Data will be persisted to\n // this directory when memory cache is full.\n // (\"disk_path\".to_string(), \"...\".to_string()),\n\n // Disk cache total capacity in bytes.\n // Only used when `disk_path` is set.\n // (\"disk_capacity\".to_string(), \"1000\".to_string()),\n\n // Individual cache file size in bytes.\n //\n // Default is 1 MiB.\n // Only used when `disk_path` is set.\n // (\"disk_file_size\".to_string(), \"1000\".to_string()),\n\n // Recovery mode when starting the cache.\n //\n // Valid values: \"none\" (default), \"quiet\", \"strict\".\n // - \"none\": Don't recover from disk\n // - \"quiet\": Recover and skip errors\n // - \"strict\": Recover and panic on errors\n // (\"recover_mode\".to_string(), \"...\".to_string()),\n\n // Number of shards for concurrent access.\n //\n // Default is 1. Higher values improve concurrency but increase overhead.\n // (\"shards\".to_string(), \"1000\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"foyer\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"foyer\",\n # Name for this cache instance.\n # name=\"...\",\n\n # Root path of this backend.\n # root=\"...\",\n\n # Memory capacity in bytes for the cache.\n # memory=\"1000\",\n\n # Disk cache directory path.\n #\n # If set, enables hybrid cache with disk storage. Data will be persisted to\n # this directory when memory cache is full.\n # disk_path=\"...\",\n\n # Disk cache total capacity in bytes.\n # Only used when `disk_path` is set.\n # disk_capacity=\"1000\",\n\n # Individual cache file size in bytes.\n #\n # Default is 1 MiB.\n # Only used when `disk_path` is set.\n # disk_file_size=\"1000\",\n\n # Recovery mode when starting the cache.\n #\n # Valid values: \"none\" (default), \"quiet\", \"strict\".\n # - \"none\": Don't recover from disk\n # - \"quiet\": Recover and skip errors\n # - \"strict\": Recover and panic on errors\n # recover_mode=\"...\",\n\n # Number of shards for concurrent access.\n #\n # Default is 1. Higher values improve concurrency but increase overhead.\n # shards=\"1000\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"foyer\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"foyer\",\n # Name for this cache instance.\n # name=\"...\",\n\n # Root path of this backend.\n # root=\"...\",\n\n # Memory capacity in bytes for the cache.\n # memory=\"1000\",\n\n # Disk cache directory path.\n #\n # If set, enables hybrid cache with disk storage. Data will be persisted to\n # this directory when memory cache is full.\n # disk_path=\"...\",\n\n # Disk cache total capacity in bytes.\n # Only used when `disk_path` is set.\n # disk_capacity=\"1000\",\n\n # Individual cache file size in bytes.\n #\n # Default is 1 MiB.\n # Only used when `disk_path` is set.\n # disk_file_size=\"1000\",\n\n # Recovery mode when starting the cache.\n #\n # Valid values: \"none\" (default), \"quiet\", \"strict\".\n # - \"none\": Don't recover from disk\n # - \"quiet\": Recover and skip errors\n # - \"strict\": Recover and panic on errors\n # recover_mode=\"...\",\n\n # Number of shards for concurrent access.\n #\n # Default is 1. Higher values improve concurrency but increase overhead.\n # shards=\"1000\",\n)" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/foyer\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(foyer.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/foyer\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(foyer.Scheme, opendal.OperatorOptions{\n\t// Name for this cache instance.\n\t// \"name\": \"...\",\n\n\t// Root path of this backend.\n\t// \"root\": \"...\",\n\n\t// Memory capacity in bytes for the cache.\n\t// \"memory\": \"1000\",\n\n\t// Disk cache directory path.\n\t//\n\t// If set, enables hybrid cache with disk storage. Data will be persisted to\n\t// this directory when memory cache is full.\n\t// \"disk_path\": \"...\",\n\n\t// Disk cache total capacity in bytes.\n\t// Only used when `disk_path` is set.\n\t// \"disk_capacity\": \"1000\",\n\n\t// Individual cache file size in bytes.\n\t//\n\t// Default is 1 MiB.\n\t// Only used when `disk_path` is set.\n\t// \"disk_file_size\": \"1000\",\n\n\t// Recovery mode when starting the cache.\n\t//\n\t// Valid values: \"none\" (default), \"quiet\", \"strict\".\n\t// - \"none\": Don't recover from disk\n\t// - \"quiet\": Recover and skip errors\n\t// - \"strict\": Recover and panic on errors\n\t// \"recover_mode\": \"...\",\n\n\t// Number of shards for concurrent access.\n\t//\n\t// Default is 1. Higher values improve concurrency but increase overhead.\n\t// \"shards\": \"1000\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"foyer\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Name for this cache instance.\n// opendal_operator_options_set(options, \"name\", \"...\");\n\n// Root path of this backend.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Memory capacity in bytes for the cache.\n// opendal_operator_options_set(options, \"memory\", \"1000\");\n\n// Disk cache directory path.\n//\n// If set, enables hybrid cache with disk storage. Data will be persisted to\n// this directory when memory cache is full.\n// opendal_operator_options_set(options, \"disk_path\", \"...\");\n\n// Disk cache total capacity in bytes.\n// Only used when `disk_path` is set.\n// opendal_operator_options_set(options, \"disk_capacity\", \"1000\");\n\n// Individual cache file size in bytes.\n//\n// Default is 1 MiB.\n// Only used when `disk_path` is set.\n// opendal_operator_options_set(options, \"disk_file_size\", \"1000\");\n\n// Recovery mode when starting the cache.\n//\n// Valid values: \"none\" (default), \"quiet\", \"strict\".\n// - \"none\": Don't recover from disk\n// - \"quiet\": Recover and skip errors\n// - \"strict\": Recover and panic on errors\n// opendal_operator_options_set(options, \"recover_mode\", \"...\");\n\n// Number of shards for concurrent access.\n//\n// Default is 1. Higher values improve concurrency but increase overhead.\n// opendal_operator_options_set(options, \"shards\", \"1000\");\nopendal_result_operator_new result = opendal_operator_new(\"foyer\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"foyer\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Name for this cache instance.\n // {\"name\", \"...\"},\n\n // Root path of this backend.\n // {\"root\", \"...\"},\n\n // Memory capacity in bytes for the cache.\n // {\"memory\", \"1000\"},\n\n // Disk cache directory path.\n //\n // If set, enables hybrid cache with disk storage. Data will be persisted to\n // this directory when memory cache is full.\n // {\"disk_path\", \"...\"},\n\n // Disk cache total capacity in bytes.\n // Only used when `disk_path` is set.\n // {\"disk_capacity\", \"1000\"},\n\n // Individual cache file size in bytes.\n //\n // Default is 1 MiB.\n // Only used when `disk_path` is set.\n // {\"disk_file_size\", \"1000\"},\n\n // Recovery mode when starting the cache.\n //\n // Valid values: \"none\" (default), \"quiet\", \"strict\".\n // - \"none\": Don't recover from disk\n // - \"quiet\": Recover and skip errors\n // - \"strict\": Recover and panic on errors\n // {\"recover_mode\", \"...\"},\n\n // Number of shards for concurrent access.\n //\n // Default is 1. Higher values improve concurrency but increase overhead.\n // {\"shards\", \"1000\"},\n};\nopendal::Operator operator(\"foyer\", config);" } ] }, @@ -1214,26 +1564,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"fs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"fs\", [\n // root dir for backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // tmp dir for atomic write\n // (\"atomic_write_dir\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"fs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"fs\", [\n // root dir for backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // tmp dir for atomic write\n // (\"atomic_write_dir\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"fs\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// root dir for backend\n// config.put(\"root\", \"...\");\n\n// tmp dir for atomic write\n// config.put(\"atomic_write_dir\", \"...\");\nOperator operator = Operator.of(\"fs\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"fs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"fs\",\n # root dir for backend\n # root=\"...\",\n\n # tmp dir for atomic write\n # atomic_write_dir=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"fs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"fs\",\n # root dir for backend\n # root=\"...\",\n\n # tmp dir for atomic write\n # atomic_write_dir=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"fs\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"fs\", {\n // root dir for backend\n // root: \"...\",\n\n // tmp dir for atomic write\n // atomic_write_dir: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"fs\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"fs\", {\n // root dir for backend\n // root: \"...\",\n\n // tmp dir for atomic write\n // atomic_write_dir: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"fs\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// root dir for backend\n// conf.put(\"root\", \"...\");\n\n// tmp dir for atomic write\n// conf.put(\"atomic_write_dir\", \"...\");\n\nOperator op = Operator.of(\"fs\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"fs\", {\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"fs\", {\n # root dir for backend\n # \"root\" => \"...\",\n\n # tmp dir for atomic write\n # \"atomic_write_dir\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/fs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(fs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/fs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(fs.Scheme, opendal.OperatorOptions{\n\t// root dir for backend\n\t// \"root\": \"...\",\n\n\t// tmp dir for atomic write\n\t// \"atomic_write_dir\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"fs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root dir for backend\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// tmp dir for atomic write\n// opendal_operator_options_set(options, \"atomic_write_dir\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"fs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"fs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root dir for backend\n // {\"root\", \"...\"},\n\n // tmp dir for atomic write\n // {\"atomic_write_dir\", \"...\"},\n};\nopendal::Operator operator(\"fs\", config);" } ] }, @@ -1277,20 +1651,38 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"ftp\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"ftp\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // user of this backend\n // (\"user\".to_string(), \"...\".to_string()),\n\n // password of this backend\n // (\"password\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ftp\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ftp\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // user of this backend\n // (\"user\".to_string(), \"...\".to_string()),\n\n // password of this backend\n // (\"password\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"ftp\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"ftp\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # user of this backend\n # user=\"...\",\n\n # password of this backend\n # password=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"ftp\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"ftp\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # user of this backend\n # user=\"...\",\n\n # password of this backend\n # password=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"ftp\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"ftp\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // user of this backend\n // user: \"...\",\n\n // password of this backend\n // password: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ftp\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ftp\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // user of this backend\n // user: \"...\",\n\n // password of this backend\n // password: \"...\",\n});" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/ftp\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ftp.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/ftp\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ftp.Scheme, opendal.OperatorOptions{\n\t// endpoint of this backend\n\t// \"endpoint\": \"...\",\n\n\t// root of this backend\n\t// \"root\": \"...\",\n\n\t// user of this backend\n\t// \"user\": \"...\",\n\n\t// password of this backend\n\t// \"password\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"ftp\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// endpoint of this backend\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// root of this backend\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// user of this backend\n// opendal_operator_options_set(options, \"user\", \"...\");\n\n// password of this backend\n// opendal_operator_options_set(options, \"password\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"ftp\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"ftp\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // endpoint of this backend\n // {\"endpoint\", \"...\"},\n\n // root of this backend\n // {\"root\", \"...\"},\n\n // user of this backend\n // {\"user\", \"...\"},\n\n // password of this backend\n // {\"password\", \"...\"},\n};\nopendal::Operator operator(\"ftp\", config);" } ] }, @@ -1414,26 +1806,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"gcs\", [\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"gcs\", [\n // --- General ---\n // root URI, all operations happens under `root`\n // (\"root\".to_string(), \"/\".to_string()),\n\n // bucket name\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n\n // endpoint URI of GCS service,\n // default is `https://storage.googleapis.com`\n // (\"endpoint\".to_string(), \"https://storage.googleapis.com\".to_string()),\n\n // Scope for gcs.\n // (\"scope\".to_string(), \"...\".to_string()),\n\n // --- Credentials ---\n // Service Account for gcs.\n // (\"service_account\".to_string(), \"...\".to_string()),\n\n // Credentials string for GCS service OAuth2 authentication.\n // (\"credential\".to_string(), \"...\".to_string()),\n\n // Local path to credentials file for GCS service OAuth2 authentication.\n // (\"credential_path\".to_string(), \"...\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n\n // Disable attempting to load credentials from the GCE metadata server when\n // running within Google Cloud.\n // (\"disable_vm_metadata\".to_string(), \"true\".to_string()),\n\n // Disable loading configuration from the environment.\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n\n // A Google Cloud OAuth2 token.\n //\n // Takes precedence over `credential` and `credential_path`.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // --- Behavior ---\n // The predefined acl for GCS.\n // (\"predefined_acl\".to_string(), \"...\".to_string()),\n\n // The default storage class used by gcs.\n // (\"default_storage_class\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gcs\", [\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gcs\", [\n // --- General ---\n // root URI, all operations happens under `root`\n // (\"root\".to_string(), \"/\".to_string()),\n\n // bucket name\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n\n // endpoint URI of GCS service,\n // default is `https://storage.googleapis.com`\n // (\"endpoint\".to_string(), \"https://storage.googleapis.com\".to_string()),\n\n // Scope for gcs.\n // (\"scope\".to_string(), \"...\".to_string()),\n // --- Credentials ---\n // Service Account for gcs.\n // (\"service_account\".to_string(), \"...\".to_string()),\n\n // Credentials string for GCS service OAuth2 authentication.\n // (\"credential\".to_string(), \"...\".to_string()),\n\n // Local path to credentials file for GCS service OAuth2 authentication.\n // (\"credential_path\".to_string(), \"...\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n\n // Disable attempting to load credentials from the GCE metadata server when\n // running within Google Cloud.\n // (\"disable_vm_metadata\".to_string(), \"true\".to_string()),\n\n // Disable loading configuration from the environment.\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n\n // A Google Cloud OAuth2 token.\n //\n // Takes precedence over `credential` and `credential_path`.\n // (\"token\".to_string(), \"...\".to_string()),\n // --- Behavior ---\n // The predefined acl for GCS.\n // (\"predefined_acl\".to_string(), \"...\".to_string()),\n\n // The default storage class used by gcs.\n // (\"default_storage_class\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"bucket\", \"my-bucket\");\nOperator operator = Operator.of(\"gcs\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// --- General ---\n// root URI, all operations happens under `root`\n// config.put(\"root\", \"/\");\n\n// bucket name\nconfig.put(\"bucket\", \"my-bucket\");\n\n// endpoint URI of GCS service,\n// default is `https://storage.googleapis.com`\n// config.put(\"endpoint\", \"https://storage.googleapis.com\");\n\n// Scope for gcs.\n// config.put(\"scope\", \"...\");\n// --- Credentials ---\n// Service Account for gcs.\n// config.put(\"service_account\", \"...\");\n\n// Credentials string for GCS service OAuth2 authentication.\n// config.put(\"credential\", \"...\");\n\n// Local path to credentials file for GCS service OAuth2 authentication.\n// config.put(\"credential_path\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// config.put(\"skip_signature\", \"true\");\n\n// Disable attempting to load credentials from the GCE metadata server when\n// running within Google Cloud.\n// config.put(\"disable_vm_metadata\", \"true\");\n\n// Disable loading configuration from the environment.\n// config.put(\"disable_config_load\", \"true\");\n\n// A Google Cloud OAuth2 token.\n//\n// Takes precedence over `credential` and `credential_path`.\n// config.put(\"token\", \"...\");\n// --- Behavior ---\n// The predefined acl for GCS.\n// config.put(\"predefined_acl\", \"...\");\n\n// The default storage class used by gcs.\n// config.put(\"default_storage_class\", \"...\");\nOperator operator = Operator.of(\"gcs\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"gcs\",\n bucket=\"my-bucket\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"gcs\",\n # --- General ---\n # root URI, all operations happens under `root`\n # root=\"/\",\n\n # bucket name\n bucket=\"my-bucket\",\n\n # endpoint URI of GCS service,\n # default is `https://storage.googleapis.com`\n # endpoint=\"https://storage.googleapis.com\",\n\n # Scope for gcs.\n # scope=\"...\",\n\n # --- Credentials ---\n # Service Account for gcs.\n # service_account=\"...\",\n\n # Credentials string for GCS service OAuth2 authentication.\n # credential=\"...\",\n\n # Local path to credentials file for GCS service OAuth2 authentication.\n # credential_path=\"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n\n # Disable attempting to load credentials from the GCE metadata server when\n # running within Google Cloud.\n # disable_vm_metadata=\"true\",\n\n # Disable loading configuration from the environment.\n # disable_config_load=\"true\",\n\n # A Google Cloud OAuth2 token.\n #\n # Takes precedence over `credential` and `credential_path`.\n # token=\"...\",\n\n # --- Behavior ---\n # The predefined acl for GCS.\n # predefined_acl=\"...\",\n\n # The default storage class used by gcs.\n # default_storage_class=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"gcs\",\n bucket=\"my-bucket\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"gcs\",\n # --- General ---\n # root URI, all operations happens under `root`\n # root=\"/\",\n\n # bucket name\n bucket=\"my-bucket\",\n\n # endpoint URI of GCS service,\n # default is `https://storage.googleapis.com`\n # endpoint=\"https://storage.googleapis.com\",\n\n # Scope for gcs.\n # scope=\"...\",\n # --- Credentials ---\n # Service Account for gcs.\n # service_account=\"...\",\n\n # Credentials string for GCS service OAuth2 authentication.\n # credential=\"...\",\n\n # Local path to credentials file for GCS service OAuth2 authentication.\n # credential_path=\"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n\n # Disable attempting to load credentials from the GCE metadata server when\n # running within Google Cloud.\n # disable_vm_metadata=\"true\",\n\n # Disable loading configuration from the environment.\n # disable_config_load=\"true\",\n\n # A Google Cloud OAuth2 token.\n #\n # Takes precedence over `credential` and `credential_path`.\n # token=\"...\",\n # --- Behavior ---\n # The predefined acl for GCS.\n # predefined_acl=\"...\",\n\n # The default storage class used by gcs.\n # default_storage_class=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"gcs\", {\n bucket: \"my-bucket\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"gcs\", {\n // --- General ---\n // root URI, all operations happens under `root`\n // root: \"/\",\n\n // bucket name\n bucket: \"my-bucket\",\n\n // endpoint URI of GCS service,\n // default is `https://storage.googleapis.com`\n // endpoint: \"https://storage.googleapis.com\",\n\n // Scope for gcs.\n // scope: \"...\",\n\n // --- Credentials ---\n // Service Account for gcs.\n // service_account: \"...\",\n\n // Credentials string for GCS service OAuth2 authentication.\n // credential: \"...\",\n\n // Local path to credentials file for GCS service OAuth2 authentication.\n // credential_path: \"...\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n\n // Disable attempting to load credentials from the GCE metadata server when\n // running within Google Cloud.\n // disable_vm_metadata: \"true\",\n\n // Disable loading configuration from the environment.\n // disable_config_load: \"true\",\n\n // A Google Cloud OAuth2 token.\n //\n // Takes precedence over `credential` and `credential_path`.\n // token: \"...\",\n\n // --- Behavior ---\n // The predefined acl for GCS.\n // predefined_acl: \"...\",\n\n // The default storage class used by gcs.\n // default_storage_class: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gcs\", {\n bucket: \"my-bucket\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gcs\", {\n // --- General ---\n // root URI, all operations happens under `root`\n // root: \"/\",\n\n // bucket name\n bucket: \"my-bucket\",\n\n // endpoint URI of GCS service,\n // default is `https://storage.googleapis.com`\n // endpoint: \"https://storage.googleapis.com\",\n\n // Scope for gcs.\n // scope: \"...\",\n // --- Credentials ---\n // Service Account for gcs.\n // service_account: \"...\",\n\n // Credentials string for GCS service OAuth2 authentication.\n // credential: \"...\",\n\n // Local path to credentials file for GCS service OAuth2 authentication.\n // credential_path: \"...\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n\n // Disable attempting to load credentials from the GCE metadata server when\n // running within Google Cloud.\n // disable_vm_metadata: \"true\",\n\n // Disable loading configuration from the environment.\n // disable_config_load: \"true\",\n\n // A Google Cloud OAuth2 token.\n //\n // Takes precedence over `credential` and `credential_path`.\n // token: \"...\",\n // --- Behavior ---\n // The predefined acl for GCS.\n // predefined_acl: \"...\",\n\n // The default storage class used by gcs.\n // default_storage_class: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"bucket\", \"my-bucket\");\nOperator op = Operator.of(\"gcs\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// --- General ---\n// root URI, all operations happens under `root`\n// conf.put(\"root\", \"/\");\n\n// bucket name\nconf.put(\"bucket\", \"my-bucket\");\n\n// endpoint URI of GCS service,\n// default is `https://storage.googleapis.com`\n// conf.put(\"endpoint\", \"https://storage.googleapis.com\");\n\n// Scope for gcs.\n// conf.put(\"scope\", \"...\");\n\n// --- Credentials ---\n// Service Account for gcs.\n// conf.put(\"service_account\", \"...\");\n\n// Credentials string for GCS service OAuth2 authentication.\n// conf.put(\"credential\", \"...\");\n\n// Local path to credentials file for GCS service OAuth2 authentication.\n// conf.put(\"credential_path\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// conf.put(\"skip_signature\", \"true\");\n\n// Disable attempting to load credentials from the GCE metadata server when\n// running within Google Cloud.\n// conf.put(\"disable_vm_metadata\", \"true\");\n\n// Disable loading configuration from the environment.\n// conf.put(\"disable_config_load\", \"true\");\n\n// A Google Cloud OAuth2 token.\n//\n// Takes precedence over `credential` and `credential_path`.\n// conf.put(\"token\", \"...\");\n\n// --- Behavior ---\n// The predefined acl for GCS.\n// conf.put(\"predefined_acl\", \"...\");\n\n// The default storage class used by gcs.\n// conf.put(\"default_storage_class\", \"...\");\n\nOperator op = Operator.of(\"gcs\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"gcs\", {\n \"bucket\" => \"my-bucket\",\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"gcs\", {\n # --- General ---\n # root URI, all operations happens under `root`\n # \"root\" => \"/\",\n\n # bucket name\n \"bucket\" => \"my-bucket\",\n\n # endpoint URI of GCS service,\n # default is `https://storage.googleapis.com`\n # \"endpoint\" => \"https://storage.googleapis.com\",\n\n # Scope for gcs.\n # \"scope\" => \"...\",\n # --- Credentials ---\n # Service Account for gcs.\n # \"service_account\" => \"...\",\n\n # Credentials string for GCS service OAuth2 authentication.\n # \"credential\" => \"...\",\n\n # Local path to credentials file for GCS service OAuth2 authentication.\n # \"credential_path\" => \"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # \"skip_signature\" => \"true\",\n\n # Disable attempting to load credentials from the GCE metadata server when\n # running within Google Cloud.\n # \"disable_vm_metadata\" => \"true\",\n\n # Disable loading configuration from the environment.\n # \"disable_config_load\" => \"true\",\n\n # A Google Cloud OAuth2 token.\n #\n # Takes precedence over `credential` and `credential_path`.\n # \"token\" => \"...\",\n # --- Behavior ---\n # The predefined acl for GCS.\n # \"predefined_acl\" => \"...\",\n\n # The default storage class used by gcs.\n # \"default_storage_class\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/gcs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gcs.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"my-bucket\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/gcs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gcs.Scheme, opendal.OperatorOptions{\n\t// --- General ---\n\t// root URI, all operations happens under `root`\n\t// \"root\": \"/\",\n\n\t// bucket name\n\t\"bucket\": \"my-bucket\",\n\n\t// endpoint URI of GCS service,\n\t// default is `https://storage.googleapis.com`\n\t// \"endpoint\": \"https://storage.googleapis.com\",\n\n\t// Scope for gcs.\n\t// \"scope\": \"...\",\n\t// --- Credentials ---\n\t// Service Account for gcs.\n\t// \"service_account\": \"...\",\n\n\t// Credentials string for GCS service OAuth2 authentication.\n\t// \"credential\": \"...\",\n\n\t// Local path to credentials file for GCS service OAuth2 authentication.\n\t// \"credential_path\": \"...\",\n\n\t// Skip signature will skip loading credentials and signing requests.\n\t// \"skip_signature\": \"true\",\n\n\t// Disable attempting to load credentials from the GCE metadata server when\n\t// running within Google Cloud.\n\t// \"disable_vm_metadata\": \"true\",\n\n\t// Disable loading configuration from the environment.\n\t// \"disable_config_load\": \"true\",\n\n\t// A Google Cloud OAuth2 token.\n\t//\n\t// Takes precedence over `credential` and `credential_path`.\n\t// \"token\": \"...\",\n\t// --- Behavior ---\n\t// The predefined acl for GCS.\n\t// \"predefined_acl\": \"...\",\n\n\t// The default storage class used by gcs.\n\t// \"default_storage_class\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"bucket\", \"my-bucket\");\nopendal_result_operator_new result = opendal_operator_new(\"gcs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// --- General ---\n// root URI, all operations happens under `root`\n// opendal_operator_options_set(options, \"root\", \"/\");\n\n// bucket name\nopendal_operator_options_set(options, \"bucket\", \"my-bucket\");\n\n// endpoint URI of GCS service,\n// default is `https://storage.googleapis.com`\n// opendal_operator_options_set(options, \"endpoint\", \"https://storage.googleapis.com\");\n\n// Scope for gcs.\n// opendal_operator_options_set(options, \"scope\", \"...\");\n// --- Credentials ---\n// Service Account for gcs.\n// opendal_operator_options_set(options, \"service_account\", \"...\");\n\n// Credentials string for GCS service OAuth2 authentication.\n// opendal_operator_options_set(options, \"credential\", \"...\");\n\n// Local path to credentials file for GCS service OAuth2 authentication.\n// opendal_operator_options_set(options, \"credential_path\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// opendal_operator_options_set(options, \"skip_signature\", \"true\");\n\n// Disable attempting to load credentials from the GCE metadata server when\n// running within Google Cloud.\n// opendal_operator_options_set(options, \"disable_vm_metadata\", \"true\");\n\n// Disable loading configuration from the environment.\n// opendal_operator_options_set(options, \"disable_config_load\", \"true\");\n\n// A Google Cloud OAuth2 token.\n//\n// Takes precedence over `credential` and `credential_path`.\n// opendal_operator_options_set(options, \"token\", \"...\");\n// --- Behavior ---\n// The predefined acl for GCS.\n// opendal_operator_options_set(options, \"predefined_acl\", \"...\");\n\n// The default storage class used by gcs.\n// opendal_operator_options_set(options, \"default_storage_class\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"gcs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"bucket\", \"my-bucket\"},\n};\nopendal::Operator operator(\"gcs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // --- General ---\n // root URI, all operations happens under `root`\n // {\"root\", \"/\"},\n\n // bucket name\n {\"bucket\", \"my-bucket\"},\n\n // endpoint URI of GCS service,\n // default is `https://storage.googleapis.com`\n // {\"endpoint\", \"https://storage.googleapis.com\"},\n\n // Scope for gcs.\n // {\"scope\", \"...\"},\n // --- Credentials ---\n // Service Account for gcs.\n // {\"service_account\", \"...\"},\n\n // Credentials string for GCS service OAuth2 authentication.\n // {\"credential\", \"...\"},\n\n // Local path to credentials file for GCS service OAuth2 authentication.\n // {\"credential_path\", \"...\"},\n\n // Skip signature will skip loading credentials and signing requests.\n // {\"skip_signature\", \"true\"},\n\n // Disable attempting to load credentials from the GCE metadata server when\n // running within Google Cloud.\n // {\"disable_vm_metadata\", \"true\"},\n\n // Disable loading configuration from the environment.\n // {\"disable_config_load\", \"true\"},\n\n // A Google Cloud OAuth2 token.\n //\n // Takes precedence over `credential` and `credential_path`.\n // {\"token\", \"...\"},\n // --- Behavior ---\n // The predefined acl for GCS.\n // {\"predefined_acl\", \"...\"},\n\n // The default storage class used by gcs.\n // {\"default_storage_class\", \"...\"},\n};\nopendal::Operator operator(\"gcs\", config);" } ] }, @@ -1484,26 +1900,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"gdrive\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"gdrive\", [\n // The root for gdrive\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Access token for gdrive.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // Refresh token for gdrive.\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // Client id for gdrive.\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // Client secret for gdrive.\n // (\"client_secret\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gdrive\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gdrive\", [\n // The root for gdrive\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Access token for gdrive.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // Refresh token for gdrive.\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // Client id for gdrive.\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // Client secret for gdrive.\n // (\"client_secret\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"gdrive\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// The root for gdrive\n// config.put(\"root\", \"...\");\n\n// Access token for gdrive.\n// config.put(\"access_token\", \"...\");\n\n// Refresh token for gdrive.\n// config.put(\"refresh_token\", \"...\");\n\n// Client id for gdrive.\n// config.put(\"client_id\", \"...\");\n\n// Client secret for gdrive.\n// config.put(\"client_secret\", \"...\");\nOperator operator = Operator.of(\"gdrive\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"gdrive\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"gdrive\",\n # The root for gdrive\n # root=\"...\",\n\n # Access token for gdrive.\n # access_token=\"...\",\n\n # Refresh token for gdrive.\n # refresh_token=\"...\",\n\n # Client id for gdrive.\n # client_id=\"...\",\n\n # Client secret for gdrive.\n # client_secret=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"gdrive\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"gdrive\",\n # The root for gdrive\n # root=\"...\",\n\n # Access token for gdrive.\n # access_token=\"...\",\n\n # Refresh token for gdrive.\n # refresh_token=\"...\",\n\n # Client id for gdrive.\n # client_id=\"...\",\n\n # Client secret for gdrive.\n # client_secret=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"gdrive\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"gdrive\", {\n // The root for gdrive\n // root: \"...\",\n\n // Access token for gdrive.\n // access_token: \"...\",\n\n // Refresh token for gdrive.\n // refresh_token: \"...\",\n\n // Client id for gdrive.\n // client_id: \"...\",\n\n // Client secret for gdrive.\n // client_secret: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gdrive\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gdrive\", {\n // The root for gdrive\n // root: \"...\",\n\n // Access token for gdrive.\n // access_token: \"...\",\n\n // Refresh token for gdrive.\n // refresh_token: \"...\",\n\n // Client id for gdrive.\n // client_id: \"...\",\n\n // Client secret for gdrive.\n // client_secret: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"gdrive\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// The root for gdrive\n// conf.put(\"root\", \"...\");\n\n// Access token for gdrive.\n// conf.put(\"access_token\", \"...\");\n\n// Refresh token for gdrive.\n// conf.put(\"refresh_token\", \"...\");\n\n// Client id for gdrive.\n// conf.put(\"client_id\", \"...\");\n\n// Client secret for gdrive.\n// conf.put(\"client_secret\", \"...\");\n\nOperator op = Operator.of(\"gdrive\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/gdrive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gdrive.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/gdrive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gdrive.Scheme, opendal.OperatorOptions{\n\t// The root for gdrive\n\t// \"root\": \"...\",\n\n\t// Access token for gdrive.\n\t// \"access_token\": \"...\",\n\n\t// Refresh token for gdrive.\n\t// \"refresh_token\": \"...\",\n\n\t// Client id for gdrive.\n\t// \"client_id\": \"...\",\n\n\t// Client secret for gdrive.\n\t// \"client_secret\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"gdrive\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The root for gdrive\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Access token for gdrive.\n// opendal_operator_options_set(options, \"access_token\", \"...\");\n\n// Refresh token for gdrive.\n// opendal_operator_options_set(options, \"refresh_token\", \"...\");\n\n// Client id for gdrive.\n// opendal_operator_options_set(options, \"client_id\", \"...\");\n\n// Client secret for gdrive.\n// opendal_operator_options_set(options, \"client_secret\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"gdrive\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"gdrive\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The root for gdrive\n // {\"root\", \"...\"},\n\n // Access token for gdrive.\n // {\"access_token\", \"...\"},\n\n // Refresh token for gdrive.\n // {\"refresh_token\", \"...\"},\n\n // Client id for gdrive.\n // {\"client_id\", \"...\"},\n\n // Client secret for gdrive.\n // {\"client_secret\", \"...\"},\n};\nopendal::Operator operator(\"gdrive\", config);" } ] }, @@ -1547,26 +1981,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"ghac\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"ghac\", [\n // The root path for ghac.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The version that used by cache.\n // (\"version\".to_string(), \"...\".to_string()),\n\n // The endpoint for ghac service.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The runtime token for ghac service.\n // (\"runtime_token\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ghac\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ghac\", [\n // The root path for ghac.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The version that used by cache.\n // (\"version\".to_string(), \"...\".to_string()),\n\n // The endpoint for ghac service.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The runtime token for ghac service.\n // (\"runtime_token\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"ghac\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// The root path for ghac.\n// config.put(\"root\", \"...\");\n\n// The version that used by cache.\n// config.put(\"version\", \"...\");\n\n// The endpoint for ghac service.\n// config.put(\"endpoint\", \"...\");\n\n// The runtime token for ghac service.\n// config.put(\"runtime_token\", \"...\");\nOperator operator = Operator.of(\"ghac\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"ghac\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"ghac\",\n # The root path for ghac.\n # root=\"...\",\n\n # The version that used by cache.\n # version=\"...\",\n\n # The endpoint for ghac service.\n # endpoint=\"...\",\n\n # The runtime token for ghac service.\n # runtime_token=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"ghac\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"ghac\",\n # The root path for ghac.\n # root=\"...\",\n\n # The version that used by cache.\n # version=\"...\",\n\n # The endpoint for ghac service.\n # endpoint=\"...\",\n\n # The runtime token for ghac service.\n # runtime_token=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"ghac\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"ghac\", {\n // The root path for ghac.\n // root: \"...\",\n\n // The version that used by cache.\n // version: \"...\",\n\n // The endpoint for ghac service.\n // endpoint: \"...\",\n\n // The runtime token for ghac service.\n // runtime_token: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ghac\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ghac\", {\n // The root path for ghac.\n // root: \"...\",\n\n // The version that used by cache.\n // version: \"...\",\n\n // The endpoint for ghac service.\n // endpoint: \"...\",\n\n // The runtime token for ghac service.\n // runtime_token: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"ghac\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// The root path for ghac.\n// conf.put(\"root\", \"...\");\n\n// The version that used by cache.\n// conf.put(\"version\", \"...\");\n\n// The endpoint for ghac service.\n// conf.put(\"endpoint\", \"...\");\n\n// The runtime token for ghac service.\n// conf.put(\"runtime_token\", \"...\");\n\nOperator op = Operator.of(\"ghac\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"ghac\", {\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"ghac\", {\n # The root path for ghac.\n # \"root\" => \"...\",\n\n # The version that used by cache.\n # \"version\" => \"...\",\n\n # The endpoint for ghac service.\n # \"endpoint\" => \"...\",\n\n # The runtime token for ghac service.\n # \"runtime_token\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/ghac\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ghac.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/ghac\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ghac.Scheme, opendal.OperatorOptions{\n\t// The root path for ghac.\n\t// \"root\": \"...\",\n\n\t// The version that used by cache.\n\t// \"version\": \"...\",\n\n\t// The endpoint for ghac service.\n\t// \"endpoint\": \"...\",\n\n\t// The runtime token for ghac service.\n\t// \"runtime_token\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"ghac\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The root path for ghac.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// The version that used by cache.\n// opendal_operator_options_set(options, \"version\", \"...\");\n\n// The endpoint for ghac service.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// The runtime token for ghac service.\n// opendal_operator_options_set(options, \"runtime_token\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"ghac\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"ghac\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The root path for ghac.\n // {\"root\", \"...\"},\n\n // The version that used by cache.\n // {\"version\", \"...\"},\n\n // The endpoint for ghac service.\n // {\"endpoint\", \"...\"},\n\n // The runtime token for ghac service.\n // {\"runtime_token\", \"...\"},\n};\nopendal::Operator operator(\"ghac\", config);" } ] }, @@ -1610,14 +2068,32 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"github\", [\n (\"owner\".to_string(), \"...\".to_string()),\n (\"repo\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"github\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // GitHub access_token.\n //\n // optional.\n // If not provided, the backend will only support read operations for public repositories.\n // And rate limit will be limited to 60 requests per hour.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // GitHub repo owner.\n //\n // required.\n (\"owner\".to_string(), \"...\".to_string()),\n\n // GitHub repo name.\n //\n // required.\n (\"repo\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"github\", [\n (\"owner\".to_string(), \"...\".to_string()),\n (\"repo\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"github\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // GitHub access_token.\n //\n // optional.\n // If not provided, the backend will only support read operations for public repositories.\n // And rate limit will be limited to 60 requests per hour.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // GitHub repo owner.\n //\n // required.\n (\"owner\".to_string(), \"...\".to_string()),\n\n // GitHub repo name.\n //\n // required.\n (\"repo\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"github\",\n owner=\"...\",\n repo=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"github\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # GitHub access_token.\n #\n # optional.\n # If not provided, the backend will only support read operations for public repositories.\n # And rate limit will be limited to 60 requests per hour.\n # token=\"...\",\n\n # GitHub repo owner.\n #\n # required.\n owner=\"...\",\n\n # GitHub repo name.\n #\n # required.\n repo=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"github\",\n owner=\"...\",\n repo=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"github\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # GitHub access_token.\n #\n # optional.\n # If not provided, the backend will only support read operations for public repositories.\n # And rate limit will be limited to 60 requests per hour.\n # token=\"...\",\n\n # GitHub repo owner.\n #\n # required.\n owner=\"...\",\n\n # GitHub repo name.\n #\n # required.\n repo=\"...\",\n)" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/github\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(github.Scheme, opendal.OperatorOptions{\n\t\"owner\": \"...\",\n\t\"repo\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/github\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(github.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// GitHub access_token.\n\t//\n\t// optional.\n\t// If not provided, the backend will only support read operations for public repositories.\n\t// And rate limit will be limited to 60 requests per hour.\n\t// \"token\": \"...\",\n\n\t// GitHub repo owner.\n\t//\n\t// required.\n\t\"owner\": \"...\",\n\n\t// GitHub repo name.\n\t//\n\t// required.\n\t\"repo\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"owner\", \"...\");\nopendal_operator_options_set(options, \"repo\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"github\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of this backend.\n//\n// All operations will happen under this root.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// GitHub access_token.\n//\n// optional.\n// If not provided, the backend will only support read operations for public repositories.\n// And rate limit will be limited to 60 requests per hour.\n// opendal_operator_options_set(options, \"token\", \"...\");\n\n// GitHub repo owner.\n//\n// required.\nopendal_operator_options_set(options, \"owner\", \"...\");\n\n// GitHub repo name.\n//\n// required.\nopendal_operator_options_set(options, \"repo\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"github\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"owner\", \"...\"},\n {\"repo\", \"...\"},\n};\nopendal::Operator operator(\"github\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of this backend.\n //\n // All operations will happen under this root.\n // {\"root\", \"...\"},\n\n // GitHub access_token.\n //\n // optional.\n // If not provided, the backend will only support read operations for public repositories.\n // And rate limit will be limited to 60 requests per hour.\n // {\"token\", \"...\"},\n\n // GitHub repo owner.\n //\n // required.\n {\"owner\", \"...\"},\n\n // GitHub repo name.\n //\n // required.\n {\"repo\", \"...\"},\n};\nopendal::Operator operator(\"github\", config);" } ] }, @@ -1682,26 +2158,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"goosefs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"goosefs\", [\n // Root path of this backend.\n //\n // All operations will happen under this root.\n // Default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Master address(es) in `host:port` format.\n //\n // For single master: `\"10.0.0.1:9200\"`\n // For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n //\n // When multiple addresses are provided, the client uses\n // `PollingMasterInquireClient` to discover the Primary Master automatically.\n //\n // Resolution precedence at `build()` time (highest → lowest), following\n // `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n // 1. This field (when set on the builder / OpenDAL config map)\n // 2. `GOOSEFS_MASTER_ADDR` environment variable\n // 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n // `goosefs-site.properties`\n //\n // `build()` fails with `ConfigInvalid` only when **none** of the above\n // supplies a master address.\n // (\"master_addr\".to_string(), \"...\".to_string()),\n\n // Block size in bytes for new files (default: 64 MiB).\n // (\"block_size\".to_string(), \"1000\".to_string()),\n\n // Chunk size in bytes for streaming RPCs (default: 1 MiB).\n // (\"chunk_size\".to_string(), \"1000\".to_string()),\n\n // Default write type for new files.\n //\n // Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n // Default: `\"must_cache\"`.\n // (\"write_type\".to_string(), \"...\".to_string()),\n\n // Authentication type.\n //\n // Supported values: `\"nosasl\"`, `\"simple\"`.\n // Default: `\"simple\"` — PLAIN SASL with username.\n // `\"nosasl\"` — skip authentication entirely.\n // (\"auth_type\".to_string(), \"...\".to_string()),\n\n // Authentication username.\n //\n // Used in SIMPLE mode as the login identity.\n // Default: current OS user (`$USER` / `$USERNAME`).\n // (\"auth_username\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"goosefs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"goosefs\", [\n // Root path of this backend.\n //\n // All operations will happen under this root.\n // Default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Master address(es) in `host:port` format.\n //\n // For single master: `\"10.0.0.1:9200\"`\n // For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n //\n // When multiple addresses are provided, the client uses\n // `PollingMasterInquireClient` to discover the Primary Master automatically.\n //\n // Resolution precedence at `build()` time (highest → lowest), following\n // `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n // 1. This field (when set on the builder / OpenDAL config map)\n // 2. `GOOSEFS_MASTER_ADDR` environment variable\n // 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n // `goosefs-site.properties`\n //\n // `build()` fails with `ConfigInvalid` only when **none** of the above\n // supplies a master address.\n // (\"master_addr\".to_string(), \"...\".to_string()),\n\n // Block size in bytes for new files (default: 64 MiB).\n // (\"block_size\".to_string(), \"1000\".to_string()),\n\n // Chunk size in bytes for streaming RPCs (default: 1 MiB).\n // (\"chunk_size\".to_string(), \"1000\".to_string()),\n\n // Default write type for new files.\n //\n // Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n // Default: `\"must_cache\"`.\n // (\"write_type\".to_string(), \"...\".to_string()),\n\n // Authentication type.\n //\n // Supported values: `\"nosasl\"`, `\"simple\"`.\n // Default: `\"simple\"` — PLAIN SASL with username.\n // `\"nosasl\"` — skip authentication entirely.\n // (\"auth_type\".to_string(), \"...\".to_string()),\n\n // Authentication username.\n //\n // Used in SIMPLE mode as the login identity.\n // Default: current OS user (`$USER` / `$USERNAME`).\n // (\"auth_username\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"goosefs\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Root path of this backend.\n//\n// All operations will happen under this root.\n// Default to `/` if not set.\n// config.put(\"root\", \"...\");\n\n// Master address(es) in `host:port` format.\n//\n// For single master: `\"10.0.0.1:9200\"`\n// For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n//\n// When multiple addresses are provided, the client uses\n// `PollingMasterInquireClient` to discover the Primary Master automatically.\n//\n// Resolution precedence at `build()` time (highest → lowest), following\n// `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n// 1. This field (when set on the builder / OpenDAL config map)\n// 2. `GOOSEFS_MASTER_ADDR` environment variable\n// 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n// `goosefs-site.properties`\n//\n// `build()` fails with `ConfigInvalid` only when **none** of the above\n// supplies a master address.\n// config.put(\"master_addr\", \"...\");\n\n// Block size in bytes for new files (default: 64 MiB).\n// config.put(\"block_size\", \"1000\");\n\n// Chunk size in bytes for streaming RPCs (default: 1 MiB).\n// config.put(\"chunk_size\", \"1000\");\n\n// Default write type for new files.\n//\n// Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n// Default: `\"must_cache\"`.\n// config.put(\"write_type\", \"...\");\n\n// Authentication type.\n//\n// Supported values: `\"nosasl\"`, `\"simple\"`.\n// Default: `\"simple\"` — PLAIN SASL with username.\n// `\"nosasl\"` — skip authentication entirely.\n// config.put(\"auth_type\", \"...\");\n\n// Authentication username.\n//\n// Used in SIMPLE mode as the login identity.\n// Default: current OS user (`$USER` / `$USERNAME`).\n// config.put(\"auth_username\", \"...\");\nOperator operator = Operator.of(\"goosefs\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"goosefs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"goosefs\",\n # Root path of this backend.\n #\n # All operations will happen under this root.\n # Default to `/` if not set.\n # root=\"...\",\n\n # Master address(es) in `host:port` format.\n #\n # For single master: `\"10.0.0.1:9200\"`\n # For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n #\n # When multiple addresses are provided, the client uses\n # `PollingMasterInquireClient` to discover the Primary Master automatically.\n #\n # Resolution precedence at `build()` time (highest → lowest), following\n # `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n # 1. This field (when set on the builder / OpenDAL config map)\n # 2. `GOOSEFS_MASTER_ADDR` environment variable\n # 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n # `goosefs-site.properties`\n #\n # `build()` fails with `ConfigInvalid` only when **none** of the above\n # supplies a master address.\n # master_addr=\"...\",\n\n # Block size in bytes for new files (default: 64 MiB).\n # block_size=\"1000\",\n\n # Chunk size in bytes for streaming RPCs (default: 1 MiB).\n # chunk_size=\"1000\",\n\n # Default write type for new files.\n #\n # Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n # Default: `\"must_cache\"`.\n # write_type=\"...\",\n\n # Authentication type.\n #\n # Supported values: `\"nosasl\"`, `\"simple\"`.\n # Default: `\"simple\"` — PLAIN SASL with username.\n # `\"nosasl\"` — skip authentication entirely.\n # auth_type=\"...\",\n\n # Authentication username.\n #\n # Used in SIMPLE mode as the login identity.\n # Default: current OS user (`$USER` / `$USERNAME`).\n # auth_username=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"goosefs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"goosefs\",\n # Root path of this backend.\n #\n # All operations will happen under this root.\n # Default to `/` if not set.\n # root=\"...\",\n\n # Master address(es) in `host:port` format.\n #\n # For single master: `\"10.0.0.1:9200\"`\n # For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n #\n # When multiple addresses are provided, the client uses\n # `PollingMasterInquireClient` to discover the Primary Master automatically.\n #\n # Resolution precedence at `build()` time (highest → lowest), following\n # `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n # 1. This field (when set on the builder / OpenDAL config map)\n # 2. `GOOSEFS_MASTER_ADDR` environment variable\n # 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n # `goosefs-site.properties`\n #\n # `build()` fails with `ConfigInvalid` only when **none** of the above\n # supplies a master address.\n # master_addr=\"...\",\n\n # Block size in bytes for new files (default: 64 MiB).\n # block_size=\"1000\",\n\n # Chunk size in bytes for streaming RPCs (default: 1 MiB).\n # chunk_size=\"1000\",\n\n # Default write type for new files.\n #\n # Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n # Default: `\"must_cache\"`.\n # write_type=\"...\",\n\n # Authentication type.\n #\n # Supported values: `\"nosasl\"`, `\"simple\"`.\n # Default: `\"simple\"` — PLAIN SASL with username.\n # `\"nosasl\"` — skip authentication entirely.\n # auth_type=\"...\",\n\n # Authentication username.\n #\n # Used in SIMPLE mode as the login identity.\n # Default: current OS user (`$USER` / `$USERNAME`).\n # auth_username=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"goosefs\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"goosefs\", {\n // Root path of this backend.\n //\n // All operations will happen under this root.\n // Default to `/` if not set.\n // root: \"...\",\n\n // Master address(es) in `host:port` format.\n //\n // For single master: `\"10.0.0.1:9200\"`\n // For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n //\n // When multiple addresses are provided, the client uses\n // `PollingMasterInquireClient` to discover the Primary Master automatically.\n //\n // Resolution precedence at `build()` time (highest → lowest), following\n // `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n // 1. This field (when set on the builder / OpenDAL config map)\n // 2. `GOOSEFS_MASTER_ADDR` environment variable\n // 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n // `goosefs-site.properties`\n //\n // `build()` fails with `ConfigInvalid` only when **none** of the above\n // supplies a master address.\n // master_addr: \"...\",\n\n // Block size in bytes for new files (default: 64 MiB).\n // block_size: \"1000\",\n\n // Chunk size in bytes for streaming RPCs (default: 1 MiB).\n // chunk_size: \"1000\",\n\n // Default write type for new files.\n //\n // Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n // Default: `\"must_cache\"`.\n // write_type: \"...\",\n\n // Authentication type.\n //\n // Supported values: `\"nosasl\"`, `\"simple\"`.\n // Default: `\"simple\"` — PLAIN SASL with username.\n // `\"nosasl\"` — skip authentication entirely.\n // auth_type: \"...\",\n\n // Authentication username.\n //\n // Used in SIMPLE mode as the login identity.\n // Default: current OS user (`$USER` / `$USERNAME`).\n // auth_username: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"goosefs\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"goosefs\", {\n // Root path of this backend.\n //\n // All operations will happen under this root.\n // Default to `/` if not set.\n // root: \"...\",\n\n // Master address(es) in `host:port` format.\n //\n // For single master: `\"10.0.0.1:9200\"`\n // For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n //\n // When multiple addresses are provided, the client uses\n // `PollingMasterInquireClient` to discover the Primary Master automatically.\n //\n // Resolution precedence at `build()` time (highest → lowest), following\n // `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n // 1. This field (when set on the builder / OpenDAL config map)\n // 2. `GOOSEFS_MASTER_ADDR` environment variable\n // 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n // `goosefs-site.properties`\n //\n // `build()` fails with `ConfigInvalid` only when **none** of the above\n // supplies a master address.\n // master_addr: \"...\",\n\n // Block size in bytes for new files (default: 64 MiB).\n // block_size: \"1000\",\n\n // Chunk size in bytes for streaming RPCs (default: 1 MiB).\n // chunk_size: \"1000\",\n\n // Default write type for new files.\n //\n // Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n // Default: `\"must_cache\"`.\n // write_type: \"...\",\n\n // Authentication type.\n //\n // Supported values: `\"nosasl\"`, `\"simple\"`.\n // Default: `\"simple\"` — PLAIN SASL with username.\n // `\"nosasl\"` — skip authentication entirely.\n // auth_type: \"...\",\n\n // Authentication username.\n //\n // Used in SIMPLE mode as the login identity.\n // Default: current OS user (`$USER` / `$USERNAME`).\n // auth_username: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"goosefs\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Root path of this backend.\n//\n// All operations will happen under this root.\n// Default to `/` if not set.\n// conf.put(\"root\", \"...\");\n\n// Master address(es) in `host:port` format.\n//\n// For single master: `\"10.0.0.1:9200\"`\n// For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n//\n// When multiple addresses are provided, the client uses\n// `PollingMasterInquireClient` to discover the Primary Master automatically.\n//\n// Resolution precedence at `build()` time (highest → lowest), following\n// `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n// 1. This field (when set on the builder / OpenDAL config map)\n// 2. `GOOSEFS_MASTER_ADDR` environment variable\n// 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n// `goosefs-site.properties`\n//\n// `build()` fails with `ConfigInvalid` only when **none** of the above\n// supplies a master address.\n// conf.put(\"master_addr\", \"...\");\n\n// Block size in bytes for new files (default: 64 MiB).\n// conf.put(\"block_size\", \"1000\");\n\n// Chunk size in bytes for streaming RPCs (default: 1 MiB).\n// conf.put(\"chunk_size\", \"1000\");\n\n// Default write type for new files.\n//\n// Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n// Default: `\"must_cache\"`.\n// conf.put(\"write_type\", \"...\");\n\n// Authentication type.\n//\n// Supported values: `\"nosasl\"`, `\"simple\"`.\n// Default: `\"simple\"` — PLAIN SASL with username.\n// `\"nosasl\"` — skip authentication entirely.\n// conf.put(\"auth_type\", \"...\");\n\n// Authentication username.\n//\n// Used in SIMPLE mode as the login identity.\n// Default: current OS user (`$USER` / `$USERNAME`).\n// conf.put(\"auth_username\", \"...\");\n\nOperator op = Operator.of(\"goosefs\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/goosefs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(goosefs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/goosefs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(goosefs.Scheme, opendal.OperatorOptions{\n\t// Root path of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// Default to `/` if not set.\n\t// \"root\": \"...\",\n\n\t// Master address(es) in `host:port` format.\n\t//\n\t// For single master: `\"10.0.0.1:9200\"`\n\t// For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n\t//\n\t// When multiple addresses are provided, the client uses\n\t// `PollingMasterInquireClient` to discover the Primary Master automatically.\n\t//\n\t// Resolution precedence at `build()` time (highest → lowest), following\n\t// `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n\t// 1. This field (when set on the builder / OpenDAL config map)\n\t// 2. `GOOSEFS_MASTER_ADDR` environment variable\n\t// 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n\t// `goosefs-site.properties`\n\t//\n\t// `build()` fails with `ConfigInvalid` only when **none** of the above\n\t// supplies a master address.\n\t// \"master_addr\": \"...\",\n\n\t// Block size in bytes for new files (default: 64 MiB).\n\t// \"block_size\": \"1000\",\n\n\t// Chunk size in bytes for streaming RPCs (default: 1 MiB).\n\t// \"chunk_size\": \"1000\",\n\n\t// Default write type for new files.\n\t//\n\t// Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n\t// Default: `\"must_cache\"`.\n\t// \"write_type\": \"...\",\n\n\t// Authentication type.\n\t//\n\t// Supported values: `\"nosasl\"`, `\"simple\"`.\n\t// Default: `\"simple\"` — PLAIN SASL with username.\n\t// `\"nosasl\"` — skip authentication entirely.\n\t// \"auth_type\": \"...\",\n\n\t// Authentication username.\n\t//\n\t// Used in SIMPLE mode as the login identity.\n\t// Default: current OS user (`$USER` / `$USERNAME`).\n\t// \"auth_username\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"goosefs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Root path of this backend.\n//\n// All operations will happen under this root.\n// Default to `/` if not set.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Master address(es) in `host:port` format.\n//\n// For single master: `\"10.0.0.1:9200\"`\n// For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n//\n// When multiple addresses are provided, the client uses\n// `PollingMasterInquireClient` to discover the Primary Master automatically.\n//\n// Resolution precedence at `build()` time (highest → lowest), following\n// `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n// 1. This field (when set on the builder / OpenDAL config map)\n// 2. `GOOSEFS_MASTER_ADDR` environment variable\n// 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n// `goosefs-site.properties`\n//\n// `build()` fails with `ConfigInvalid` only when **none** of the above\n// supplies a master address.\n// opendal_operator_options_set(options, \"master_addr\", \"...\");\n\n// Block size in bytes for new files (default: 64 MiB).\n// opendal_operator_options_set(options, \"block_size\", \"1000\");\n\n// Chunk size in bytes for streaming RPCs (default: 1 MiB).\n// opendal_operator_options_set(options, \"chunk_size\", \"1000\");\n\n// Default write type for new files.\n//\n// Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n// Default: `\"must_cache\"`.\n// opendal_operator_options_set(options, \"write_type\", \"...\");\n\n// Authentication type.\n//\n// Supported values: `\"nosasl\"`, `\"simple\"`.\n// Default: `\"simple\"` — PLAIN SASL with username.\n// `\"nosasl\"` — skip authentication entirely.\n// opendal_operator_options_set(options, \"auth_type\", \"...\");\n\n// Authentication username.\n//\n// Used in SIMPLE mode as the login identity.\n// Default: current OS user (`$USER` / `$USERNAME`).\n// opendal_operator_options_set(options, \"auth_username\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"goosefs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"goosefs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Root path of this backend.\n //\n // All operations will happen under this root.\n // Default to `/` if not set.\n // {\"root\", \"...\"},\n\n // Master address(es) in `host:port` format.\n //\n // For single master: `\"10.0.0.1:9200\"`\n // For HA (comma-separated): `\"10.0.0.1:9200,10.0.0.2:9200,10.0.0.3:9200\"`\n //\n // When multiple addresses are provided, the client uses\n // `PollingMasterInquireClient` to discover the Primary Master automatically.\n //\n // Resolution precedence at `build()` time (highest → lowest), following\n // `goosefs-sdk` `docs/CLIENT_CONFIGURATION.md` §1:\n // 1. This field (when set on the builder / OpenDAL config map)\n // 2. `GOOSEFS_MASTER_ADDR` environment variable\n // 3. `goosefs.master.rpc.addresses` / `goosefs.master.hostname` in\n // `goosefs-site.properties`\n //\n // `build()` fails with `ConfigInvalid` only when **none** of the above\n // supplies a master address.\n // {\"master_addr\", \"...\"},\n\n // Block size in bytes for new files (default: 64 MiB).\n // {\"block_size\", \"1000\"},\n\n // Chunk size in bytes for streaming RPCs (default: 1 MiB).\n // {\"chunk_size\", \"1000\"},\n\n // Default write type for new files.\n //\n // Supported values: `\"must_cache\"`, `\"cache_through\"`, `\"through\"`, `\"async_through\"`.\n // Default: `\"must_cache\"`.\n // {\"write_type\", \"...\"},\n\n // Authentication type.\n //\n // Supported values: `\"nosasl\"`, `\"simple\"`.\n // Default: `\"simple\"` — PLAIN SASL with username.\n // `\"nosasl\"` — skip authentication entirely.\n // {\"auth_type\", \"...\"},\n\n // Authentication username.\n //\n // Used in SIMPLE mode as the login identity.\n // Default: current OS user (`$USER` / `$USERNAME`).\n // {\"auth_username\", \"...\"},\n};\nopendal::Operator operator(\"goosefs\", config);" } ] }, @@ -1752,26 +2246,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"gridfs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"gridfs\", [\n // The connection string of the MongoDB service.\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // The database name of the MongoDB GridFs service to read/write.\n // (\"database\".to_string(), \"...\".to_string()),\n\n // The bucket name of the MongoDB GridFs service to read/write.\n // (\"bucket\".to_string(), \"...\".to_string()),\n\n // The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n // (\"chunk_size\".to_string(), \"1000\".to_string()),\n\n // The working directory, all operations will be performed under it.\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gridfs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"gridfs\", [\n // The connection string of the MongoDB service.\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // The database name of the MongoDB GridFs service to read/write.\n // (\"database\".to_string(), \"...\".to_string()),\n\n // The bucket name of the MongoDB GridFs service to read/write.\n // (\"bucket\".to_string(), \"...\".to_string()),\n\n // The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n // (\"chunk_size\".to_string(), \"1000\".to_string()),\n\n // The working directory, all operations will be performed under it.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"gridfs\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// The connection string of the MongoDB service.\n// config.put(\"connection_string\", \"...\");\n\n// The database name of the MongoDB GridFs service to read/write.\n// config.put(\"database\", \"...\");\n\n// The bucket name of the MongoDB GridFs service to read/write.\n// config.put(\"bucket\", \"...\");\n\n// The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n// config.put(\"chunk_size\", \"1000\");\n\n// The working directory, all operations will be performed under it.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"gridfs\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"gridfs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"gridfs\",\n # The connection string of the MongoDB service.\n # connection_string=\"...\",\n\n # The database name of the MongoDB GridFs service to read/write.\n # database=\"...\",\n\n # The bucket name of the MongoDB GridFs service to read/write.\n # bucket=\"...\",\n\n # The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n # chunk_size=\"1000\",\n\n # The working directory, all operations will be performed under it.\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"gridfs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"gridfs\",\n # The connection string of the MongoDB service.\n # connection_string=\"...\",\n\n # The database name of the MongoDB GridFs service to read/write.\n # database=\"...\",\n\n # The bucket name of the MongoDB GridFs service to read/write.\n # bucket=\"...\",\n\n # The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n # chunk_size=\"1000\",\n\n # The working directory, all operations will be performed under it.\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"gridfs\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"gridfs\", {\n // The connection string of the MongoDB service.\n // connection_string: \"...\",\n\n // The database name of the MongoDB GridFs service to read/write.\n // database: \"...\",\n\n // The bucket name of the MongoDB GridFs service to read/write.\n // bucket: \"...\",\n\n // The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n // chunk_size: \"1000\",\n\n // The working directory, all operations will be performed under it.\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gridfs\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"gridfs\", {\n // The connection string of the MongoDB service.\n // connection_string: \"...\",\n\n // The database name of the MongoDB GridFs service to read/write.\n // database: \"...\",\n\n // The bucket name of the MongoDB GridFs service to read/write.\n // bucket: \"...\",\n\n // The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n // chunk_size: \"1000\",\n\n // The working directory, all operations will be performed under it.\n // root: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"gridfs\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// The connection string of the MongoDB service.\n// conf.put(\"connection_string\", \"...\");\n\n// The database name of the MongoDB GridFs service to read/write.\n// conf.put(\"database\", \"...\");\n\n// The bucket name of the MongoDB GridFs service to read/write.\n// conf.put(\"bucket\", \"...\");\n\n// The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n// conf.put(\"chunk_size\", \"1000\");\n\n// The working directory, all operations will be performed under it.\n// conf.put(\"root\", \"...\");\n\nOperator op = Operator.of(\"gridfs\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/gridfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gridfs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/gridfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(gridfs.Scheme, opendal.OperatorOptions{\n\t// The connection string of the MongoDB service.\n\t// \"connection_string\": \"...\",\n\n\t// The database name of the MongoDB GridFs service to read/write.\n\t// \"database\": \"...\",\n\n\t// The bucket name of the MongoDB GridFs service to read/write.\n\t// \"bucket\": \"...\",\n\n\t// The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n\t// \"chunk_size\": \"1000\",\n\n\t// The working directory, all operations will be performed under it.\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"gridfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The connection string of the MongoDB service.\n// opendal_operator_options_set(options, \"connection_string\", \"...\");\n\n// The database name of the MongoDB GridFs service to read/write.\n// opendal_operator_options_set(options, \"database\", \"...\");\n\n// The bucket name of the MongoDB GridFs service to read/write.\n// opendal_operator_options_set(options, \"bucket\", \"...\");\n\n// The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n// opendal_operator_options_set(options, \"chunk_size\", \"1000\");\n\n// The working directory, all operations will be performed under it.\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"gridfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"gridfs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The connection string of the MongoDB service.\n // {\"connection_string\", \"...\"},\n\n // The database name of the MongoDB GridFs service to read/write.\n // {\"database\", \"...\"},\n\n // The bucket name of the MongoDB GridFs service to read/write.\n // {\"bucket\", \"...\"},\n\n // The chunk size of the MongoDB GridFs service used to break the user file into chunks.\n // {\"chunk_size\", \"1000\"},\n\n // The working directory, all operations will be performed under it.\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"gridfs\", config);" } ] }, @@ -1833,20 +2345,38 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"hdfs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"hdfs\", [\n // work dir of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // name node of this backend\n // (\"name_node\".to_string(), \"...\".to_string()),\n\n // kerberos_ticket_cache_path of this backend\n // (\"kerberos_ticket_cache_path\".to_string(), \"...\".to_string()),\n\n // user of this backend\n // (\"user\".to_string(), \"...\".to_string()),\n\n // atomic_write_dir of this backend\n // (\"atomic_write_dir\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hdfs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hdfs\", [\n // work dir of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // name node of this backend\n // (\"name_node\".to_string(), \"...\".to_string()),\n\n // kerberos_ticket_cache_path of this backend\n // (\"kerberos_ticket_cache_path\".to_string(), \"...\".to_string()),\n\n // user of this backend\n // (\"user\".to_string(), \"...\".to_string()),\n\n // atomic_write_dir of this backend\n // (\"atomic_write_dir\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"hdfs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"hdfs\",\n # work dir of this backend\n # root=\"...\",\n\n # name node of this backend\n # name_node=\"...\",\n\n # kerberos_ticket_cache_path of this backend\n # kerberos_ticket_cache_path=\"...\",\n\n # user of this backend\n # user=\"...\",\n\n # atomic_write_dir of this backend\n # atomic_write_dir=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"hdfs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"hdfs\",\n # work dir of this backend\n # root=\"...\",\n\n # name node of this backend\n # name_node=\"...\",\n\n # kerberos_ticket_cache_path of this backend\n # kerberos_ticket_cache_path=\"...\",\n\n # user of this backend\n # user=\"...\",\n\n # atomic_write_dir of this backend\n # atomic_write_dir=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"hdfs\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"hdfs\", {\n // work dir of this backend\n // root: \"...\",\n\n // name node of this backend\n // name_node: \"...\",\n\n // kerberos_ticket_cache_path of this backend\n // kerberos_ticket_cache_path: \"...\",\n\n // user of this backend\n // user: \"...\",\n\n // atomic_write_dir of this backend\n // atomic_write_dir: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hdfs\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hdfs\", {\n // work dir of this backend\n // root: \"...\",\n\n // name node of this backend\n // name_node: \"...\",\n\n // kerberos_ticket_cache_path of this backend\n // kerberos_ticket_cache_path: \"...\",\n\n // user of this backend\n // user: \"...\",\n\n // atomic_write_dir of this backend\n // atomic_write_dir: \"...\",\n});" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/hdfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hdfs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/hdfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hdfs.Scheme, opendal.OperatorOptions{\n\t// work dir of this backend\n\t// \"root\": \"...\",\n\n\t// name node of this backend\n\t// \"name_node\": \"...\",\n\n\t// kerberos_ticket_cache_path of this backend\n\t// \"kerberos_ticket_cache_path\": \"...\",\n\n\t// user of this backend\n\t// \"user\": \"...\",\n\n\t// atomic_write_dir of this backend\n\t// \"atomic_write_dir\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"hdfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// work dir of this backend\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// name node of this backend\n// opendal_operator_options_set(options, \"name_node\", \"...\");\n\n// kerberos_ticket_cache_path of this backend\n// opendal_operator_options_set(options, \"kerberos_ticket_cache_path\", \"...\");\n\n// user of this backend\n// opendal_operator_options_set(options, \"user\", \"...\");\n\n// atomic_write_dir of this backend\n// opendal_operator_options_set(options, \"atomic_write_dir\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"hdfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"hdfs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // work dir of this backend\n // {\"root\", \"...\"},\n\n // name node of this backend\n // {\"name_node\", \"...\"},\n\n // kerberos_ticket_cache_path of this backend\n // {\"kerberos_ticket_cache_path\", \"...\"},\n\n // user of this backend\n // {\"user\", \"...\"},\n\n // atomic_write_dir of this backend\n // {\"atomic_write_dir\", \"...\"},\n};\nopendal::Operator operator(\"hdfs\", config);" } ] }, @@ -1894,20 +2424,38 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"hdfs-native\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"hdfs-native\", [\n // work dir of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // name_node of this backend\n // (\"name_node\".to_string(), \"...\".to_string()),\n\n // other options for hdfs client\n // (\"options\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hdfs-native\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hdfs-native\", [\n // work dir of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // name_node of this backend\n // (\"name_node\".to_string(), \"...\".to_string()),\n\n // other options for hdfs client\n // (\"options\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"hdfs-native\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"hdfs-native\",\n # work dir of this backend\n # root=\"...\",\n\n # name_node of this backend\n # name_node=\"...\",\n\n # other options for hdfs client\n # options=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"hdfs-native\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"hdfs-native\",\n # work dir of this backend\n # root=\"...\",\n\n # name_node of this backend\n # name_node=\"...\",\n\n # other options for hdfs client\n # options=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"hdfs-native\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"hdfs-native\", {\n // work dir of this backend\n // root: \"...\",\n\n // name_node of this backend\n // name_node: \"...\",\n\n // other options for hdfs client\n // options: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hdfs-native\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hdfs-native\", {\n // work dir of this backend\n // root: \"...\",\n\n // name_node of this backend\n // name_node: \"...\",\n\n // other options for hdfs client\n // options: \"...\",\n});" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/hdfs-native\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hdfs-native.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/hdfs-native\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hdfs-native.Scheme, opendal.OperatorOptions{\n\t// work dir of this backend\n\t// \"root\": \"...\",\n\n\t// name_node of this backend\n\t// \"name_node\": \"...\",\n\n\t// other options for hdfs client\n\t// \"options\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"hdfs-native\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// work dir of this backend\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// name_node of this backend\n// opendal_operator_options_set(options, \"name_node\", \"...\");\n\n// other options for hdfs client\n// opendal_operator_options_set(options, \"options\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"hdfs-native\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"hdfs-native\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // work dir of this backend\n // {\"root\", \"...\"},\n\n // name_node of this backend\n // {\"name_node\", \"...\"},\n\n // other options for hdfs client\n // {\"options\", \"...\"},\n};\nopendal::Operator operator(\"hdfs-native\", config);" } ] }, @@ -1972,26 +2520,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"hf\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"hf\", [\n // Repo type of this backend. Required.\n // (\"repo_type\".to_string(), \"...\".to_string()),\n\n // Repo id of this backend.\n //\n // This is required.\n // (\"repo_id\".to_string(), \"...\".to_string()),\n\n // Revision of this backend.\n //\n // Default is main.\n // (\"revision\".to_string(), \"...\".to_string()),\n\n // Root of this backend. Can be \"/path/to/dir\".\n //\n // Default is \"/\".\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Token of this backend.\n //\n // This is optional.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // Endpoint of the Hugging Face Hub.\n //\n // Default is \"https://huggingface.co\".\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Download mode. Either `xet` (default) or `http`.\n // (\"download_mode\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hf\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"hf\", [\n // Repo type of this backend. Required.\n // (\"repo_type\".to_string(), \"...\".to_string()),\n\n // Repo id of this backend.\n //\n // This is required.\n // (\"repo_id\".to_string(), \"...\".to_string()),\n\n // Revision of this backend.\n //\n // Default is main.\n // (\"revision\".to_string(), \"...\".to_string()),\n\n // Root of this backend. Can be \"/path/to/dir\".\n //\n // Default is \"/\".\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Token of this backend.\n //\n // This is optional.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // Endpoint of the Hugging Face Hub.\n //\n // Default is \"https://huggingface.co\".\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Download mode. Either `xet` (default) or `http`.\n // (\"download_mode\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"hf\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Repo type of this backend. Required.\n// config.put(\"repo_type\", \"...\");\n\n// Repo id of this backend.\n//\n// This is required.\n// config.put(\"repo_id\", \"...\");\n\n// Revision of this backend.\n//\n// Default is main.\n// config.put(\"revision\", \"...\");\n\n// Root of this backend. Can be \"/path/to/dir\".\n//\n// Default is \"/\".\n// config.put(\"root\", \"...\");\n\n// Token of this backend.\n//\n// This is optional.\n// config.put(\"token\", \"...\");\n\n// Endpoint of the Hugging Face Hub.\n//\n// Default is \"https://huggingface.co\".\n// config.put(\"endpoint\", \"...\");\n\n// Download mode. Either `xet` (default) or `http`.\n// config.put(\"download_mode\", \"...\");\nOperator operator = Operator.of(\"hf\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"hf\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"hf\",\n # Repo type of this backend. Required.\n # repo_type=\"...\",\n\n # Repo id of this backend.\n #\n # This is required.\n # repo_id=\"...\",\n\n # Revision of this backend.\n #\n # Default is main.\n # revision=\"...\",\n\n # Root of this backend. Can be \"/path/to/dir\".\n #\n # Default is \"/\".\n # root=\"...\",\n\n # Token of this backend.\n #\n # This is optional.\n # token=\"...\",\n\n # Endpoint of the Hugging Face Hub.\n #\n # Default is \"https://huggingface.co\".\n # endpoint=\"...\",\n\n # Download mode. Either `xet` (default) or `http`.\n # download_mode=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"hf\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"hf\",\n # Repo type of this backend. Required.\n # repo_type=\"...\",\n\n # Repo id of this backend.\n #\n # This is required.\n # repo_id=\"...\",\n\n # Revision of this backend.\n #\n # Default is main.\n # revision=\"...\",\n\n # Root of this backend. Can be \"/path/to/dir\".\n #\n # Default is \"/\".\n # root=\"...\",\n\n # Token of this backend.\n #\n # This is optional.\n # token=\"...\",\n\n # Endpoint of the Hugging Face Hub.\n #\n # Default is \"https://huggingface.co\".\n # endpoint=\"...\",\n\n # Download mode. Either `xet` (default) or `http`.\n # download_mode=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"hf\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"hf\", {\n // Repo type of this backend. Required.\n // repo_type: \"...\",\n\n // Repo id of this backend.\n //\n // This is required.\n // repo_id: \"...\",\n\n // Revision of this backend.\n //\n // Default is main.\n // revision: \"...\",\n\n // Root of this backend. Can be \"/path/to/dir\".\n //\n // Default is \"/\".\n // root: \"...\",\n\n // Token of this backend.\n //\n // This is optional.\n // token: \"...\",\n\n // Endpoint of the Hugging Face Hub.\n //\n // Default is \"https://huggingface.co\".\n // endpoint: \"...\",\n\n // Download mode. Either `xet` (default) or `http`.\n // download_mode: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hf\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"hf\", {\n // Repo type of this backend. Required.\n // repo_type: \"...\",\n\n // Repo id of this backend.\n //\n // This is required.\n // repo_id: \"...\",\n\n // Revision of this backend.\n //\n // Default is main.\n // revision: \"...\",\n\n // Root of this backend. Can be \"/path/to/dir\".\n //\n // Default is \"/\".\n // root: \"...\",\n\n // Token of this backend.\n //\n // This is optional.\n // token: \"...\",\n\n // Endpoint of the Hugging Face Hub.\n //\n // Default is \"https://huggingface.co\".\n // endpoint: \"...\",\n\n // Download mode. Either `xet` (default) or `http`.\n // download_mode: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"hf\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Repo type of this backend. Required.\n// conf.put(\"repo_type\", \"...\");\n\n// Repo id of this backend.\n//\n// This is required.\n// conf.put(\"repo_id\", \"...\");\n\n// Revision of this backend.\n//\n// Default is main.\n// conf.put(\"revision\", \"...\");\n\n// Root of this backend. Can be \"/path/to/dir\".\n//\n// Default is \"/\".\n// conf.put(\"root\", \"...\");\n\n// Token of this backend.\n//\n// This is optional.\n// conf.put(\"token\", \"...\");\n\n// Endpoint of the Hugging Face Hub.\n//\n// Default is \"https://huggingface.co\".\n// conf.put(\"endpoint\", \"...\");\n\n// Download mode. Either `xet` (default) or `http`.\n// conf.put(\"download_mode\", \"...\");\n\nOperator op = Operator.of(\"hf\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/hf\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hf.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/hf\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(hf.Scheme, opendal.OperatorOptions{\n\t// Repo type of this backend. Required.\n\t// \"repo_type\": \"...\",\n\n\t// Repo id of this backend.\n\t//\n\t// This is required.\n\t// \"repo_id\": \"...\",\n\n\t// Revision of this backend.\n\t//\n\t// Default is main.\n\t// \"revision\": \"...\",\n\n\t// Root of this backend. Can be \"/path/to/dir\".\n\t//\n\t// Default is \"/\".\n\t// \"root\": \"...\",\n\n\t// Token of this backend.\n\t//\n\t// This is optional.\n\t// \"token\": \"...\",\n\n\t// Endpoint of the Hugging Face Hub.\n\t//\n\t// Default is \"https://huggingface.co\".\n\t// \"endpoint\": \"...\",\n\n\t// Download mode. Either `xet` (default) or `http`.\n\t// \"download_mode\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"hf\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Repo type of this backend. Required.\n// opendal_operator_options_set(options, \"repo_type\", \"...\");\n\n// Repo id of this backend.\n//\n// This is required.\n// opendal_operator_options_set(options, \"repo_id\", \"...\");\n\n// Revision of this backend.\n//\n// Default is main.\n// opendal_operator_options_set(options, \"revision\", \"...\");\n\n// Root of this backend. Can be \"/path/to/dir\".\n//\n// Default is \"/\".\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Token of this backend.\n//\n// This is optional.\n// opendal_operator_options_set(options, \"token\", \"...\");\n\n// Endpoint of the Hugging Face Hub.\n//\n// Default is \"https://huggingface.co\".\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// Download mode. Either `xet` (default) or `http`.\n// opendal_operator_options_set(options, \"download_mode\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"hf\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"hf\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Repo type of this backend. Required.\n // {\"repo_type\", \"...\"},\n\n // Repo id of this backend.\n //\n // This is required.\n // {\"repo_id\", \"...\"},\n\n // Revision of this backend.\n //\n // Default is main.\n // {\"revision\", \"...\"},\n\n // Root of this backend. Can be \"/path/to/dir\".\n //\n // Default is \"/\".\n // {\"root\", \"...\"},\n\n // Token of this backend.\n //\n // This is optional.\n // {\"token\", \"...\"},\n\n // Endpoint of the Hugging Face Hub.\n //\n // Default is \"https://huggingface.co\".\n // {\"endpoint\", \"...\"},\n\n // Download mode. Either `xet` (default) or `http`.\n // {\"download_mode\", \"...\"},\n};\nopendal::Operator operator(\"hf\", config);" } ] }, @@ -2042,26 +2608,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"http\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"http\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // username of this backend\n // (\"username\".to_string(), \"...\".to_string()),\n\n // password of this backend\n // (\"password\".to_string(), \"...\".to_string()),\n\n // token of this backend\n // (\"token\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"http\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"http\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // username of this backend\n // (\"username\".to_string(), \"...\".to_string()),\n\n // password of this backend\n // (\"password\".to_string(), \"...\".to_string()),\n\n // token of this backend\n // (\"token\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"http\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// endpoint of this backend\n// config.put(\"endpoint\", \"...\");\n\n// username of this backend\n// config.put(\"username\", \"...\");\n\n// password of this backend\n// config.put(\"password\", \"...\");\n\n// token of this backend\n// config.put(\"token\", \"...\");\n\n// root of this backend\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"http\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"http\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"http\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # username of this backend\n # username=\"...\",\n\n # password of this backend\n # password=\"...\",\n\n # token of this backend\n # token=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"http\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"http\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # username of this backend\n # username=\"...\",\n\n # password of this backend\n # password=\"...\",\n\n # token of this backend\n # token=\"...\",\n\n # root of this backend\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"http\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"http\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // username of this backend\n // username: \"...\",\n\n // password of this backend\n // password: \"...\",\n\n // token of this backend\n // token: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"http\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"http\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // username of this backend\n // username: \"...\",\n\n // password of this backend\n // password: \"...\",\n\n // token of this backend\n // token: \"...\",\n\n // root of this backend\n // root: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"http\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// endpoint of this backend\n// conf.put(\"endpoint\", \"...\");\n\n// username of this backend\n// conf.put(\"username\", \"...\");\n\n// password of this backend\n// conf.put(\"password\", \"...\");\n\n// token of this backend\n// conf.put(\"token\", \"...\");\n\n// root of this backend\n// conf.put(\"root\", \"...\");\n\nOperator op = Operator.of(\"http\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"http\", {\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"http\", {\n # endpoint of this backend\n # \"endpoint\" => \"...\",\n\n # username of this backend\n # \"username\" => \"...\",\n\n # password of this backend\n # \"password\" => \"...\",\n\n # token of this backend\n # \"token\" => \"...\",\n\n # root of this backend\n # \"root\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/http\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(http.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/http\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(http.Scheme, opendal.OperatorOptions{\n\t// endpoint of this backend\n\t// \"endpoint\": \"...\",\n\n\t// username of this backend\n\t// \"username\": \"...\",\n\n\t// password of this backend\n\t// \"password\": \"...\",\n\n\t// token of this backend\n\t// \"token\": \"...\",\n\n\t// root of this backend\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"http\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// endpoint of this backend\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// username of this backend\n// opendal_operator_options_set(options, \"username\", \"...\");\n\n// password of this backend\n// opendal_operator_options_set(options, \"password\", \"...\");\n\n// token of this backend\n// opendal_operator_options_set(options, \"token\", \"...\");\n\n// root of this backend\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"http\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"http\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // endpoint of this backend\n // {\"endpoint\", \"...\"},\n\n // username of this backend\n // {\"username\", \"...\"},\n\n // password of this backend\n // {\"password\", \"...\"},\n\n // token of this backend\n // {\"token\", \"...\"},\n\n // root of this backend\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"http\", config);" } ] }, @@ -2091,26 +2681,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"ipfs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"ipfs\", [\n // IPFS gateway endpoint.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // IPFS root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ipfs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ipfs\", [\n // IPFS gateway endpoint.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // IPFS root.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"ipfs\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// IPFS gateway endpoint.\n// config.put(\"endpoint\", \"...\");\n\n// IPFS root.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"ipfs\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"ipfs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"ipfs\",\n # IPFS gateway endpoint.\n # endpoint=\"...\",\n\n # IPFS root.\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"ipfs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"ipfs\",\n # IPFS gateway endpoint.\n # endpoint=\"...\",\n\n # IPFS root.\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"ipfs\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"ipfs\", {\n // IPFS gateway endpoint.\n // endpoint: \"...\",\n\n // IPFS root.\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ipfs\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ipfs\", {\n // IPFS gateway endpoint.\n // endpoint: \"...\",\n\n // IPFS root.\n // root: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"ipfs\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// IPFS gateway endpoint.\n// conf.put(\"endpoint\", \"...\");\n\n// IPFS root.\n// conf.put(\"root\", \"...\");\n\nOperator op = Operator.of(\"ipfs\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/ipfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ipfs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/ipfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ipfs.Scheme, opendal.OperatorOptions{\n\t// IPFS gateway endpoint.\n\t// \"endpoint\": \"...\",\n\n\t// IPFS root.\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"ipfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// IPFS gateway endpoint.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// IPFS root.\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"ipfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"ipfs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // IPFS gateway endpoint.\n // {\"endpoint\", \"...\"},\n\n // IPFS root.\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"ipfs\", config);" } ] }, @@ -2140,26 +2748,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"ipmfs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"ipmfs\", [\n // Root for ipfs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for ipfs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ipmfs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"ipmfs\", [\n // Root for ipfs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for ipfs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"ipmfs\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Root for ipfs.\n// config.put(\"root\", \"...\");\n\n// Endpoint for ipfs.\n// config.put(\"endpoint\", \"...\");\nOperator operator = Operator.of(\"ipmfs\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"ipmfs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"ipmfs\",\n # Root for ipfs.\n # root=\"...\",\n\n # Endpoint for ipfs.\n # endpoint=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"ipmfs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"ipmfs\",\n # Root for ipfs.\n # root=\"...\",\n\n # Endpoint for ipfs.\n # endpoint=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"ipmfs\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"ipmfs\", {\n // Root for ipfs.\n // root: \"...\",\n\n // Endpoint for ipfs.\n // endpoint: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ipmfs\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"ipmfs\", {\n // Root for ipfs.\n // root: \"...\",\n\n // Endpoint for ipfs.\n // endpoint: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"ipmfs\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Root for ipfs.\n// conf.put(\"root\", \"...\");\n\n// Endpoint for ipfs.\n// conf.put(\"endpoint\", \"...\");\n\nOperator op = Operator.of(\"ipmfs\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"ipmfs\", {\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"ipmfs\", {\n # Root for ipfs.\n # \"root\" => \"...\",\n\n # Endpoint for ipfs.\n # \"endpoint\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/ipmfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ipmfs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/ipmfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(ipmfs.Scheme, opendal.OperatorOptions{\n\t// Root for ipfs.\n\t// \"root\": \"...\",\n\n\t// Endpoint for ipfs.\n\t// \"endpoint\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"ipmfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Root for ipfs.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Endpoint for ipfs.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"ipmfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"ipmfs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Root for ipfs.\n // {\"root\", \"...\"},\n\n // Endpoint for ipfs.\n // {\"endpoint\", \"...\"},\n};\nopendal::Operator operator(\"ipmfs\", config);" } ] }, @@ -2203,26 +2835,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"koofr\", [\n (\"endpoint\".to_string(), \"...\".to_string()),\n (\"email\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"koofr\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Koofr endpoint.\n (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Koofr email.\n (\"email\".to_string(), \"...\".to_string()),\n\n // password of this backend. (Must be the application password)\n // (\"password\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"koofr\", [\n (\"endpoint\".to_string(), \"...\".to_string()),\n (\"email\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"koofr\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Koofr endpoint.\n (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Koofr email.\n (\"email\".to_string(), \"...\".to_string()),\n\n // password of this backend. (Must be the application password)\n // (\"password\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"endpoint\", \"...\");\nconfig.put(\"email\", \"...\");\nOperator operator = Operator.of(\"koofr\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// Koofr endpoint.\nconfig.put(\"endpoint\", \"...\");\n\n// Koofr email.\nconfig.put(\"email\", \"...\");\n\n// password of this backend. (Must be the application password)\n// config.put(\"password\", \"...\");\nOperator operator = Operator.of(\"koofr\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"koofr\",\n endpoint=\"...\",\n email=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"koofr\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # Koofr endpoint.\n endpoint=\"...\",\n\n # Koofr email.\n email=\"...\",\n\n # password of this backend. (Must be the application password)\n # password=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"koofr\",\n endpoint=\"...\",\n email=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"koofr\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # Koofr endpoint.\n endpoint=\"...\",\n\n # Koofr email.\n email=\"...\",\n\n # password of this backend. (Must be the application password)\n # password=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"koofr\", {\n endpoint: \"...\",\n email: \"...\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"koofr\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // Koofr endpoint.\n endpoint: \"...\",\n\n // Koofr email.\n email: \"...\",\n\n // password of this backend. (Must be the application password)\n // password: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"koofr\", {\n endpoint: \"...\",\n email: \"...\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"koofr\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // Koofr endpoint.\n endpoint: \"...\",\n\n // Koofr email.\n email: \"...\",\n\n // password of this backend. (Must be the application password)\n // password: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"endpoint\", \"...\");\nconf.put(\"email\", \"...\");\nOperator op = Operator.of(\"koofr\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// conf.put(\"root\", \"...\");\n\n// Koofr endpoint.\nconf.put(\"endpoint\", \"...\");\n\n// Koofr email.\nconf.put(\"email\", \"...\");\n\n// password of this backend. (Must be the application password)\n// conf.put(\"password\", \"...\");\n\nOperator op = Operator.of(\"koofr\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/koofr\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(koofr.Scheme, opendal.OperatorOptions{\n\t\"endpoint\": \"...\",\n\t\"email\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/koofr\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(koofr.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// Koofr endpoint.\n\t\"endpoint\": \"...\",\n\n\t// Koofr email.\n\t\"email\": \"...\",\n\n\t// password of this backend. (Must be the application password)\n\t// \"password\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"endpoint\", \"...\");\nopendal_operator_options_set(options, \"email\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"koofr\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of this backend.\n//\n// All operations will happen under this root.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Koofr endpoint.\nopendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// Koofr email.\nopendal_operator_options_set(options, \"email\", \"...\");\n\n// password of this backend. (Must be the application password)\n// opendal_operator_options_set(options, \"password\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"koofr\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"endpoint\", \"...\"},\n {\"email\", \"...\"},\n};\nopendal::Operator operator(\"koofr\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of this backend.\n //\n // All operations will happen under this root.\n // {\"root\", \"...\"},\n\n // Koofr endpoint.\n {\"endpoint\", \"...\"},\n\n // Koofr email.\n {\"email\", \"...\"},\n\n // password of this backend. (Must be the application password)\n // {\"password\", \"...\"},\n};\nopendal::Operator operator(\"koofr\", config);" } ] }, @@ -2280,14 +2930,32 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"lakefs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"lakefs\", [\n // Base url.\n //\n // This is required.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Username for Lakefs basic authentication.\n //\n // This is required.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // Password for Lakefs basic authentication.\n //\n // This is required.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // Root of this backend. Can be \"/path/to/dir\".\n //\n // Default is \"/\".\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The repository name\n //\n // This is required.\n // (\"repository\".to_string(), \"...\".to_string()),\n\n // Name of the branch or a commit ID. Default is main.\n //\n // This is optional.\n // (\"branch\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"lakefs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"lakefs\", [\n // Base url.\n //\n // This is required.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Username for Lakefs basic authentication.\n //\n // This is required.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // Password for Lakefs basic authentication.\n //\n // This is required.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // Root of this backend. Can be \"/path/to/dir\".\n //\n // Default is \"/\".\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The repository name\n //\n // This is required.\n // (\"repository\".to_string(), \"...\".to_string()),\n\n // Name of the branch or a commit ID. Default is main.\n //\n // This is optional.\n // (\"branch\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"lakefs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"lakefs\",\n # Base url.\n #\n # This is required.\n # endpoint=\"...\",\n\n # Username for Lakefs basic authentication.\n #\n # This is required.\n # username=\"...\",\n\n # Password for Lakefs basic authentication.\n #\n # This is required.\n # password=\"...\",\n\n # Root of this backend. Can be \"/path/to/dir\".\n #\n # Default is \"/\".\n # root=\"...\",\n\n # The repository name\n #\n # This is required.\n # repository=\"...\",\n\n # Name of the branch or a commit ID. Default is main.\n #\n # This is optional.\n # branch=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"lakefs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"lakefs\",\n # Base url.\n #\n # This is required.\n # endpoint=\"...\",\n\n # Username for Lakefs basic authentication.\n #\n # This is required.\n # username=\"...\",\n\n # Password for Lakefs basic authentication.\n #\n # This is required.\n # password=\"...\",\n\n # Root of this backend. Can be \"/path/to/dir\".\n #\n # Default is \"/\".\n # root=\"...\",\n\n # The repository name\n #\n # This is required.\n # repository=\"...\",\n\n # Name of the branch or a commit ID. Default is main.\n #\n # This is optional.\n # branch=\"...\",\n)" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/lakefs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(lakefs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/lakefs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(lakefs.Scheme, opendal.OperatorOptions{\n\t// Base url.\n\t//\n\t// This is required.\n\t// \"endpoint\": \"...\",\n\n\t// Username for Lakefs basic authentication.\n\t//\n\t// This is required.\n\t// \"username\": \"...\",\n\n\t// Password for Lakefs basic authentication.\n\t//\n\t// This is required.\n\t// \"password\": \"...\",\n\n\t// Root of this backend. Can be \"/path/to/dir\".\n\t//\n\t// Default is \"/\".\n\t// \"root\": \"...\",\n\n\t// The repository name\n\t//\n\t// This is required.\n\t// \"repository\": \"...\",\n\n\t// Name of the branch or a commit ID. Default is main.\n\t//\n\t// This is optional.\n\t// \"branch\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"lakefs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Base url.\n//\n// This is required.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// Username for Lakefs basic authentication.\n//\n// This is required.\n// opendal_operator_options_set(options, \"username\", \"...\");\n\n// Password for Lakefs basic authentication.\n//\n// This is required.\n// opendal_operator_options_set(options, \"password\", \"...\");\n\n// Root of this backend. Can be \"/path/to/dir\".\n//\n// Default is \"/\".\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// The repository name\n//\n// This is required.\n// opendal_operator_options_set(options, \"repository\", \"...\");\n\n// Name of the branch or a commit ID. Default is main.\n//\n// This is optional.\n// opendal_operator_options_set(options, \"branch\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"lakefs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"lakefs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Base url.\n //\n // This is required.\n // {\"endpoint\", \"...\"},\n\n // Username for Lakefs basic authentication.\n //\n // This is required.\n // {\"username\", \"...\"},\n\n // Password for Lakefs basic authentication.\n //\n // This is required.\n // {\"password\", \"...\"},\n\n // Root of this backend. Can be \"/path/to/dir\".\n //\n // Default is \"/\".\n // {\"root\", \"...\"},\n\n // The repository name\n //\n // This is required.\n // {\"repository\", \"...\"},\n\n // Name of the branch or a commit ID. Default is main.\n //\n // This is optional.\n // {\"branch\", \"...\"},\n};\nopendal::Operator operator(\"lakefs\", config);" } ] }, @@ -2345,26 +3013,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"memcached\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"memcached\", [\n // network address of the memcached service.\n //\n // For example: \"tcp://localhost:11211\"\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Memcached username, optional.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // Memcached password, optional.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // The default ttl for put operations.\n // (\"default_ttl\".to_string(), \"10s\".to_string()),\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // (\"connection_pool_max_size\".to_string(), \"1000\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"memcached\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"memcached\", [\n // network address of the memcached service.\n //\n // For example: \"tcp://localhost:11211\"\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Memcached username, optional.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // Memcached password, optional.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // The default ttl for put operations.\n // (\"default_ttl\".to_string(), \"10s\".to_string()),\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // (\"connection_pool_max_size\".to_string(), \"1000\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"memcached\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// network address of the memcached service.\n//\n// For example: \"tcp://localhost:11211\"\n// config.put(\"endpoint\", \"...\");\n\n// the working directory of the service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// config.put(\"root\", \"...\");\n\n// Memcached username, optional.\n// config.put(\"username\", \"...\");\n\n// Memcached password, optional.\n// config.put(\"password\", \"...\");\n\n// The default ttl for put operations.\n// config.put(\"default_ttl\", \"10s\");\n\n// The maximum number of connections allowed.\n//\n// default is 10\n// config.put(\"connection_pool_max_size\", \"1000\");\nOperator operator = Operator.of(\"memcached\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"memcached\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"memcached\",\n # network address of the memcached service.\n #\n # For example: \"tcp://localhost:11211\"\n # endpoint=\"...\",\n\n # the working directory of the service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n\n # Memcached username, optional.\n # username=\"...\",\n\n # Memcached password, optional.\n # password=\"...\",\n\n # The default ttl for put operations.\n # default_ttl=\"10s\",\n\n # The maximum number of connections allowed.\n #\n # default is 10\n # connection_pool_max_size=\"1000\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"memcached\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"memcached\",\n # network address of the memcached service.\n #\n # For example: \"tcp://localhost:11211\"\n # endpoint=\"...\",\n\n # the working directory of the service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n\n # Memcached username, optional.\n # username=\"...\",\n\n # Memcached password, optional.\n # password=\"...\",\n\n # The default ttl for put operations.\n # default_ttl=\"10s\",\n\n # The maximum number of connections allowed.\n #\n # default is 10\n # connection_pool_max_size=\"1000\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"memcached\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"memcached\", {\n // network address of the memcached service.\n //\n // For example: \"tcp://localhost:11211\"\n // endpoint: \"...\",\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n\n // Memcached username, optional.\n // username: \"...\",\n\n // Memcached password, optional.\n // password: \"...\",\n\n // The default ttl for put operations.\n // default_ttl: \"10s\",\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // connection_pool_max_size: \"1000\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"memcached\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"memcached\", {\n // network address of the memcached service.\n //\n // For example: \"tcp://localhost:11211\"\n // endpoint: \"...\",\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n\n // Memcached username, optional.\n // username: \"...\",\n\n // Memcached password, optional.\n // password: \"...\",\n\n // The default ttl for put operations.\n // default_ttl: \"10s\",\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // connection_pool_max_size: \"1000\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"memcached\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// network address of the memcached service.\n//\n// For example: \"tcp://localhost:11211\"\n// conf.put(\"endpoint\", \"...\");\n\n// the working directory of the service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// conf.put(\"root\", \"...\");\n\n// Memcached username, optional.\n// conf.put(\"username\", \"...\");\n\n// Memcached password, optional.\n// conf.put(\"password\", \"...\");\n\n// The default ttl for put operations.\n// conf.put(\"default_ttl\", \"10s\");\n\n// The maximum number of connections allowed.\n//\n// default is 10\n// conf.put(\"connection_pool_max_size\", \"1000\");\n\nOperator op = Operator.of(\"memcached\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/memcached\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(memcached.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/memcached\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(memcached.Scheme, opendal.OperatorOptions{\n\t// network address of the memcached service.\n\t//\n\t// For example: \"tcp://localhost:11211\"\n\t// \"endpoint\": \"...\",\n\n\t// the working directory of the service. Can be \"/path/to/dir\"\n\t//\n\t// default is \"/\"\n\t// \"root\": \"...\",\n\n\t// Memcached username, optional.\n\t// \"username\": \"...\",\n\n\t// Memcached password, optional.\n\t// \"password\": \"...\",\n\n\t// The default ttl for put operations.\n\t// \"default_ttl\": \"10s\",\n\n\t// The maximum number of connections allowed.\n\t//\n\t// default is 10\n\t// \"connection_pool_max_size\": \"1000\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"memcached\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// network address of the memcached service.\n//\n// For example: \"tcp://localhost:11211\"\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// the working directory of the service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Memcached username, optional.\n// opendal_operator_options_set(options, \"username\", \"...\");\n\n// Memcached password, optional.\n// opendal_operator_options_set(options, \"password\", \"...\");\n\n// The default ttl for put operations.\n// opendal_operator_options_set(options, \"default_ttl\", \"10s\");\n\n// The maximum number of connections allowed.\n//\n// default is 10\n// opendal_operator_options_set(options, \"connection_pool_max_size\", \"1000\");\nopendal_result_operator_new result = opendal_operator_new(\"memcached\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"memcached\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // network address of the memcached service.\n //\n // For example: \"tcp://localhost:11211\"\n // {\"endpoint\", \"...\"},\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // {\"root\", \"...\"},\n\n // Memcached username, optional.\n // {\"username\", \"...\"},\n\n // Memcached password, optional.\n // {\"password\", \"...\"},\n\n // The default ttl for put operations.\n // {\"default_ttl\", \"10s\"},\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // {\"connection_pool_max_size\", \"1000\"},\n};\nopendal::Operator operator(\"memcached\", config);" } ] }, @@ -2387,26 +3073,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"memory\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"memory\", [\n // root of the backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"memory\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"memory\", [\n // root of the backend.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"memory\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// root of the backend.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"memory\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"memory\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"memory\",\n # root of the backend.\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"memory\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"memory\",\n # root of the backend.\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"memory\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"memory\", {\n // root of the backend.\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"memory\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"memory\", {\n // root of the backend.\n // root: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"memory\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// root of the backend.\n// conf.put(\"root\", \"...\");\n\nOperator op = Operator.of(\"memory\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"memory\", {\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"memory\", {\n # root of the backend.\n # \"root\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/memory\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(memory.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/memory\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(memory.Scheme, opendal.OperatorOptions{\n\t// root of the backend.\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"memory\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of the backend.\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"memory\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"memory\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of the backend.\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"memory\", config);" } ] }, @@ -2450,26 +3160,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"mini-moka\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"mini-moka\", [\n // Sets the max capacity of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n // (\"max_capacity\".to_string(), \"1000\".to_string()),\n\n // Sets the time to live of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n // (\"time_to_live\".to_string(), \"...\".to_string()),\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n // (\"time_to_idle\".to_string(), \"...\".to_string()),\n\n // root path of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mini-moka\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mini-moka\", [\n // Sets the max capacity of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n // (\"max_capacity\".to_string(), \"1000\".to_string()),\n\n // Sets the time to live of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n // (\"time_to_live\".to_string(), \"...\".to_string()),\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n // (\"time_to_idle\".to_string(), \"...\".to_string()),\n\n // root path of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"mini-moka\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Sets the max capacity of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n// config.put(\"max_capacity\", \"1000\");\n\n// Sets the time to live of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n// config.put(\"time_to_live\", \"...\");\n\n// Sets the time to idle of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n// config.put(\"time_to_idle\", \"...\");\n\n// root path of this backend\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"mini-moka\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"mini-moka\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"mini-moka\",\n # Sets the max capacity of the cache.\n #\n # Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n # max_capacity=\"1000\",\n\n # Sets the time to live of the cache.\n #\n # Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n # time_to_live=\"...\",\n\n # Sets the time to idle of the cache.\n #\n # Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n # time_to_idle=\"...\",\n\n # root path of this backend\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"mini-moka\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"mini-moka\",\n # Sets the max capacity of the cache.\n #\n # Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n # max_capacity=\"1000\",\n\n # Sets the time to live of the cache.\n #\n # Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n # time_to_live=\"...\",\n\n # Sets the time to idle of the cache.\n #\n # Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n # time_to_idle=\"...\",\n\n # root path of this backend\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"mini-moka\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"mini-moka\", {\n // Sets the max capacity of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n // max_capacity: \"1000\",\n\n // Sets the time to live of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n // time_to_live: \"...\",\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n // time_to_idle: \"...\",\n\n // root path of this backend\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mini-moka\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mini-moka\", {\n // Sets the max capacity of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n // max_capacity: \"1000\",\n\n // Sets the time to live of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n // time_to_live: \"...\",\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n // time_to_idle: \"...\",\n\n // root path of this backend\n // root: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"mini-moka\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Sets the max capacity of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n// conf.put(\"max_capacity\", \"1000\");\n\n// Sets the time to live of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n// conf.put(\"time_to_live\", \"...\");\n\n// Sets the time to idle of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n// conf.put(\"time_to_idle\", \"...\");\n\n// root path of this backend\n// conf.put(\"root\", \"...\");\n\nOperator op = Operator.of(\"mini-moka\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/mini-moka\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mini-moka.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/mini-moka\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mini-moka.Scheme, opendal.OperatorOptions{\n\t// Sets the max capacity of the cache.\n\t//\n\t// Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n\t// \"max_capacity\": \"1000\",\n\n\t// Sets the time to live of the cache.\n\t//\n\t// Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n\t// \"time_to_live\": \"...\",\n\n\t// Sets the time to idle of the cache.\n\t//\n\t// Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n\t// \"time_to_idle\": \"...\",\n\n\t// root path of this backend\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"mini-moka\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Sets the max capacity of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n// opendal_operator_options_set(options, \"max_capacity\", \"1000\");\n\n// Sets the time to live of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n// opendal_operator_options_set(options, \"time_to_live\", \"...\");\n\n// Sets the time to idle of the cache.\n//\n// Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n// opendal_operator_options_set(options, \"time_to_idle\", \"...\");\n\n// root path of this backend\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"mini-moka\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"mini-moka\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Sets the max capacity of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::max_capacity`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.max_capacity)\n // {\"max_capacity\", \"1000\"},\n\n // Sets the time to live of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_live`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_live)\n // {\"time_to_live\", \"...\"},\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`mini-moka::sync::CacheBuilder::time_to_idle`](https://docs.rs/mini-moka/latest/mini_moka/sync/struct.CacheBuilder.html#method.time_to_idle)\n // {\"time_to_idle\", \"...\"},\n\n // root path of this backend\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"mini-moka\", config);" } ] }, @@ -2520,26 +3248,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"moka\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"moka\", [\n // Name for this cache instance.\n // (\"name\".to_string(), \"...\".to_string()),\n\n // Sets the max capacity of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n // (\"max_capacity\".to_string(), \"1000\".to_string()),\n\n // Sets the time to live of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n // (\"time_to_live\".to_string(), \"...\".to_string()),\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n // (\"time_to_idle\".to_string(), \"...\".to_string()),\n\n // root path of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"moka\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"moka\", [\n // Name for this cache instance.\n // (\"name\".to_string(), \"...\".to_string()),\n\n // Sets the max capacity of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n // (\"max_capacity\".to_string(), \"1000\".to_string()),\n\n // Sets the time to live of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n // (\"time_to_live\".to_string(), \"...\".to_string()),\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n // (\"time_to_idle\".to_string(), \"...\".to_string()),\n\n // root path of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"moka\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Name for this cache instance.\n// config.put(\"name\", \"...\");\n\n// Sets the max capacity of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n// config.put(\"max_capacity\", \"1000\");\n\n// Sets the time to live of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n// config.put(\"time_to_live\", \"...\");\n\n// Sets the time to idle of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n// config.put(\"time_to_idle\", \"...\");\n\n// root path of this backend\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"moka\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"moka\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"moka\",\n # Name for this cache instance.\n # name=\"...\",\n\n # Sets the max capacity of the cache.\n #\n # Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n # max_capacity=\"1000\",\n\n # Sets the time to live of the cache.\n #\n # Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n # time_to_live=\"...\",\n\n # Sets the time to idle of the cache.\n #\n # Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n # time_to_idle=\"...\",\n\n # root path of this backend\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"moka\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"moka\",\n # Name for this cache instance.\n # name=\"...\",\n\n # Sets the max capacity of the cache.\n #\n # Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n # max_capacity=\"1000\",\n\n # Sets the time to live of the cache.\n #\n # Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n # time_to_live=\"...\",\n\n # Sets the time to idle of the cache.\n #\n # Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n # time_to_idle=\"...\",\n\n # root path of this backend\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"moka\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"moka\", {\n // Name for this cache instance.\n // name: \"...\",\n\n // Sets the max capacity of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n // max_capacity: \"1000\",\n\n // Sets the time to live of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n // time_to_live: \"...\",\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n // time_to_idle: \"...\",\n\n // root path of this backend\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"moka\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"moka\", {\n // Name for this cache instance.\n // name: \"...\",\n\n // Sets the max capacity of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n // max_capacity: \"1000\",\n\n // Sets the time to live of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n // time_to_live: \"...\",\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n // time_to_idle: \"...\",\n\n // root path of this backend\n // root: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"moka\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Name for this cache instance.\n// conf.put(\"name\", \"...\");\n\n// Sets the max capacity of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n// conf.put(\"max_capacity\", \"1000\");\n\n// Sets the time to live of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n// conf.put(\"time_to_live\", \"...\");\n\n// Sets the time to idle of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n// conf.put(\"time_to_idle\", \"...\");\n\n// root path of this backend\n// conf.put(\"root\", \"...\");\n\nOperator op = Operator.of(\"moka\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/moka\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(moka.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/moka\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(moka.Scheme, opendal.OperatorOptions{\n\t// Name for this cache instance.\n\t// \"name\": \"...\",\n\n\t// Sets the max capacity of the cache.\n\t//\n\t// Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n\t// \"max_capacity\": \"1000\",\n\n\t// Sets the time to live of the cache.\n\t//\n\t// Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n\t// \"time_to_live\": \"...\",\n\n\t// Sets the time to idle of the cache.\n\t//\n\t// Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n\t// \"time_to_idle\": \"...\",\n\n\t// root path of this backend\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"moka\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Name for this cache instance.\n// opendal_operator_options_set(options, \"name\", \"...\");\n\n// Sets the max capacity of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n// opendal_operator_options_set(options, \"max_capacity\", \"1000\");\n\n// Sets the time to live of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n// opendal_operator_options_set(options, \"time_to_live\", \"...\");\n\n// Sets the time to idle of the cache.\n//\n// Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n// opendal_operator_options_set(options, \"time_to_idle\", \"...\");\n\n// root path of this backend\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"moka\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"moka\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Name for this cache instance.\n // {\"name\", \"...\"},\n\n // Sets the max capacity of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::max_capacity`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.max_capacity)\n // {\"max_capacity\", \"1000\"},\n\n // Sets the time to live of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_live`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_live)\n // {\"time_to_live\", \"...\"},\n\n // Sets the time to idle of the cache.\n //\n // Refer to [`moka::future::CacheBuilder::time_to_idle`](https://docs.rs/moka/latest/moka/future/struct.CacheBuilder.html#method.time_to_idle)\n // {\"time_to_idle\", \"...\"},\n\n // root path of this backend\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"moka\", config);" } ] }, @@ -2597,26 +3343,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"mongodb\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"mongodb\", [\n // connection string of this backend\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // database of this backend\n // (\"database\".to_string(), \"...\".to_string()),\n\n // collection of this backend\n // (\"collection\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // key field of this backend\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // value field of this backend\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mongodb\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mongodb\", [\n // connection string of this backend\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // database of this backend\n // (\"database\".to_string(), \"...\".to_string()),\n\n // collection of this backend\n // (\"collection\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // key field of this backend\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // value field of this backend\n // (\"value_field\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"mongodb\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// connection string of this backend\n// config.put(\"connection_string\", \"...\");\n\n// database of this backend\n// config.put(\"database\", \"...\");\n\n// collection of this backend\n// config.put(\"collection\", \"...\");\n\n// root of this backend\n// config.put(\"root\", \"...\");\n\n// key field of this backend\n// config.put(\"key_field\", \"...\");\n\n// value field of this backend\n// config.put(\"value_field\", \"...\");\nOperator operator = Operator.of(\"mongodb\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"mongodb\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"mongodb\",\n # connection string of this backend\n # connection_string=\"...\",\n\n # database of this backend\n # database=\"...\",\n\n # collection of this backend\n # collection=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # key field of this backend\n # key_field=\"...\",\n\n # value field of this backend\n # value_field=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"mongodb\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"mongodb\",\n # connection string of this backend\n # connection_string=\"...\",\n\n # database of this backend\n # database=\"...\",\n\n # collection of this backend\n # collection=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # key field of this backend\n # key_field=\"...\",\n\n # value field of this backend\n # value_field=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"mongodb\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"mongodb\", {\n // connection string of this backend\n // connection_string: \"...\",\n\n // database of this backend\n // database: \"...\",\n\n // collection of this backend\n // collection: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // key field of this backend\n // key_field: \"...\",\n\n // value field of this backend\n // value_field: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mongodb\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mongodb\", {\n // connection string of this backend\n // connection_string: \"...\",\n\n // database of this backend\n // database: \"...\",\n\n // collection of this backend\n // collection: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // key field of this backend\n // key_field: \"...\",\n\n // value field of this backend\n // value_field: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"mongodb\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// connection string of this backend\n// conf.put(\"connection_string\", \"...\");\n\n// database of this backend\n// conf.put(\"database\", \"...\");\n\n// collection of this backend\n// conf.put(\"collection\", \"...\");\n\n// root of this backend\n// conf.put(\"root\", \"...\");\n\n// key field of this backend\n// conf.put(\"key_field\", \"...\");\n\n// value field of this backend\n// conf.put(\"value_field\", \"...\");\n\nOperator op = Operator.of(\"mongodb\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/mongodb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mongodb.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/mongodb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mongodb.Scheme, opendal.OperatorOptions{\n\t// connection string of this backend\n\t// \"connection_string\": \"...\",\n\n\t// database of this backend\n\t// \"database\": \"...\",\n\n\t// collection of this backend\n\t// \"collection\": \"...\",\n\n\t// root of this backend\n\t// \"root\": \"...\",\n\n\t// key field of this backend\n\t// \"key_field\": \"...\",\n\n\t// value field of this backend\n\t// \"value_field\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"mongodb\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// connection string of this backend\n// opendal_operator_options_set(options, \"connection_string\", \"...\");\n\n// database of this backend\n// opendal_operator_options_set(options, \"database\", \"...\");\n\n// collection of this backend\n// opendal_operator_options_set(options, \"collection\", \"...\");\n\n// root of this backend\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// key field of this backend\n// opendal_operator_options_set(options, \"key_field\", \"...\");\n\n// value field of this backend\n// opendal_operator_options_set(options, \"value_field\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"mongodb\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"mongodb\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // connection string of this backend\n // {\"connection_string\", \"...\"},\n\n // database of this backend\n // {\"database\", \"...\"},\n\n // collection of this backend\n // {\"collection\", \"...\"},\n\n // root of this backend\n // {\"root\", \"...\"},\n\n // key field of this backend\n // {\"key_field\", \"...\"},\n\n // value field of this backend\n // {\"value_field\", \"...\"},\n};\nopendal::Operator operator(\"mongodb\", config);" } ] }, @@ -2639,20 +3403,38 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"monoiofs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"monoiofs\", [\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Builder::build will return error if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"monoiofs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"monoiofs\", [\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Builder::build will return error if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"monoiofs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"monoiofs\",\n # The Root of this backend.\n #\n # All operations will happen under this root.\n #\n # Builder::build will return error if not set.\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"monoiofs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"monoiofs\",\n # The Root of this backend.\n #\n # All operations will happen under this root.\n #\n # Builder::build will return error if not set.\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"monoiofs\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"monoiofs\", {\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Builder::build will return error if not set.\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"monoiofs\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"monoiofs\", {\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Builder::build will return error if not set.\n // root: \"...\",\n});" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/monoiofs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(monoiofs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/monoiofs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(monoiofs.Scheme, opendal.OperatorOptions{\n\t// The Root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// Builder::build will return error if not set.\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"monoiofs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The Root of this backend.\n//\n// All operations will happen under this root.\n//\n// Builder::build will return error if not set.\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"monoiofs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"monoiofs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Builder::build will return error if not set.\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"monoiofs\", config);" } ] }, @@ -2703,26 +3485,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"mysql\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"mysql\", [\n // This connection string is used to connect to the mysql service. There are url based formats.\n //\n // The format of connect string resembles the url format of the mysql client.\n // The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n //\n // - `mysql://user@localhost`\n // - `mysql://user:password@localhost`\n // - `mysql://user:password@localhost:3306`\n // - `mysql://user:password@localhost:3306/db`\n //\n // For more information, please refer to .\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // The table name for mysql.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // The key field name for mysql.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // The value field name for mysql.\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n // The root for mysql.\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mysql\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"mysql\", [\n // This connection string is used to connect to the mysql service. There are url based formats.\n //\n // The format of connect string resembles the url format of the mysql client.\n // The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n //\n // - `mysql://user@localhost`\n // - `mysql://user:password@localhost`\n // - `mysql://user:password@localhost:3306`\n // - `mysql://user:password@localhost:3306/db`\n //\n // For more information, please refer to .\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // The table name for mysql.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // The key field name for mysql.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // The value field name for mysql.\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n // The root for mysql.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"mysql\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// This connection string is used to connect to the mysql service. There are url based formats.\n//\n// The format of connect string resembles the url format of the mysql client.\n// The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n//\n// - `mysql://user@localhost`\n// - `mysql://user:password@localhost`\n// - `mysql://user:password@localhost:3306`\n// - `mysql://user:password@localhost:3306/db`\n//\n// For more information, please refer to .\n// config.put(\"connection_string\", \"...\");\n\n// The table name for mysql.\n// config.put(\"table\", \"...\");\n\n// The key field name for mysql.\n// config.put(\"key_field\", \"...\");\n\n// The value field name for mysql.\n// config.put(\"value_field\", \"...\");\n\n// The root for mysql.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"mysql\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"mysql\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"mysql\",\n # This connection string is used to connect to the mysql service. There are url based formats.\n #\n # The format of connect string resembles the url format of the mysql client.\n # The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n #\n # - `mysql://user@localhost`\n # - `mysql://user:password@localhost`\n # - `mysql://user:password@localhost:3306`\n # - `mysql://user:password@localhost:3306/db`\n #\n # For more information, please refer to .\n # connection_string=\"...\",\n\n # The table name for mysql.\n # table=\"...\",\n\n # The key field name for mysql.\n # key_field=\"...\",\n\n # The value field name for mysql.\n # value_field=\"...\",\n\n # The root for mysql.\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"mysql\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"mysql\",\n # This connection string is used to connect to the mysql service. There are url based formats.\n #\n # The format of connect string resembles the url format of the mysql client.\n # The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n #\n # - `mysql://user@localhost`\n # - `mysql://user:password@localhost`\n # - `mysql://user:password@localhost:3306`\n # - `mysql://user:password@localhost:3306/db`\n #\n # For more information, please refer to .\n # connection_string=\"...\",\n\n # The table name for mysql.\n # table=\"...\",\n\n # The key field name for mysql.\n # key_field=\"...\",\n\n # The value field name for mysql.\n # value_field=\"...\",\n\n # The root for mysql.\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"mysql\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"mysql\", {\n // This connection string is used to connect to the mysql service. There are url based formats.\n //\n // The format of connect string resembles the url format of the mysql client.\n // The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n //\n // - `mysql://user@localhost`\n // - `mysql://user:password@localhost`\n // - `mysql://user:password@localhost:3306`\n // - `mysql://user:password@localhost:3306/db`\n //\n // For more information, please refer to .\n // connection_string: \"...\",\n\n // The table name for mysql.\n // table: \"...\",\n\n // The key field name for mysql.\n // key_field: \"...\",\n\n // The value field name for mysql.\n // value_field: \"...\",\n\n // The root for mysql.\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mysql\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"mysql\", {\n // This connection string is used to connect to the mysql service. There are url based formats.\n //\n // The format of connect string resembles the url format of the mysql client.\n // The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n //\n // - `mysql://user@localhost`\n // - `mysql://user:password@localhost`\n // - `mysql://user:password@localhost:3306`\n // - `mysql://user:password@localhost:3306/db`\n //\n // For more information, please refer to .\n // connection_string: \"...\",\n\n // The table name for mysql.\n // table: \"...\",\n\n // The key field name for mysql.\n // key_field: \"...\",\n\n // The value field name for mysql.\n // value_field: \"...\",\n\n // The root for mysql.\n // root: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"mysql\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// This connection string is used to connect to the mysql service. There are url based formats.\n//\n// The format of connect string resembles the url format of the mysql client.\n// The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n//\n// - `mysql://user@localhost`\n// - `mysql://user:password@localhost`\n// - `mysql://user:password@localhost:3306`\n// - `mysql://user:password@localhost:3306/db`\n//\n// For more information, please refer to .\n// conf.put(\"connection_string\", \"...\");\n\n// The table name for mysql.\n// conf.put(\"table\", \"...\");\n\n// The key field name for mysql.\n// conf.put(\"key_field\", \"...\");\n\n// The value field name for mysql.\n// conf.put(\"value_field\", \"...\");\n\n// The root for mysql.\n// conf.put(\"root\", \"...\");\n\nOperator op = Operator.of(\"mysql\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/mysql\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mysql.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/mysql\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(mysql.Scheme, opendal.OperatorOptions{\n\t// This connection string is used to connect to the mysql service. There are url based formats.\n\t//\n\t// The format of connect string resembles the url format of the mysql client.\n\t// The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n\t//\n\t// - `mysql://user@localhost`\n\t// - `mysql://user:password@localhost`\n\t// - `mysql://user:password@localhost:3306`\n\t// - `mysql://user:password@localhost:3306/db`\n\t//\n\t// For more information, please refer to .\n\t// \"connection_string\": \"...\",\n\n\t// The table name for mysql.\n\t// \"table\": \"...\",\n\n\t// The key field name for mysql.\n\t// \"key_field\": \"...\",\n\n\t// The value field name for mysql.\n\t// \"value_field\": \"...\",\n\n\t// The root for mysql.\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"mysql\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// This connection string is used to connect to the mysql service. There are url based formats.\n//\n// The format of connect string resembles the url format of the mysql client.\n// The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n//\n// - `mysql://user@localhost`\n// - `mysql://user:password@localhost`\n// - `mysql://user:password@localhost:3306`\n// - `mysql://user:password@localhost:3306/db`\n//\n// For more information, please refer to .\n// opendal_operator_options_set(options, \"connection_string\", \"...\");\n\n// The table name for mysql.\n// opendal_operator_options_set(options, \"table\", \"...\");\n\n// The key field name for mysql.\n// opendal_operator_options_set(options, \"key_field\", \"...\");\n\n// The value field name for mysql.\n// opendal_operator_options_set(options, \"value_field\", \"...\");\n\n// The root for mysql.\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"mysql\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"mysql\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // This connection string is used to connect to the mysql service. There are url based formats.\n //\n // The format of connect string resembles the url format of the mysql client.\n // The format is: `[scheme://][user[:[password]]@]host[:port][/schema][?attribute1=value1&attribute2=value2...`\n //\n // - `mysql://user@localhost`\n // - `mysql://user:password@localhost`\n // - `mysql://user:password@localhost:3306`\n // - `mysql://user:password@localhost:3306/db`\n //\n // For more information, please refer to .\n // {\"connection_string\", \"...\"},\n\n // The table name for mysql.\n // {\"table\", \"...\"},\n\n // The key field name for mysql.\n // {\"key_field\", \"...\"},\n\n // The value field name for mysql.\n // {\"value_field\", \"...\"},\n\n // The root for mysql.\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"mysql\", config);" } ] }, @@ -2784,26 +3584,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"obs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"obs\", [\n // Root for obs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for obs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Access key id for obs.\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // Secret access key for obs.\n // (\"secret_access_key\".to_string(), \"...\".to_string()),\n\n // Bucket for obs.\n // (\"bucket\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"obs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"obs\", [\n // Root for obs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for obs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Access key id for obs.\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // Secret access key for obs.\n // (\"secret_access_key\".to_string(), \"...\".to_string()),\n\n // Bucket for obs.\n // (\"bucket\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"obs\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Root for obs.\n// config.put(\"root\", \"...\");\n\n// Endpoint for obs.\n// config.put(\"endpoint\", \"...\");\n\n// Access key id for obs.\n// config.put(\"access_key_id\", \"...\");\n\n// Secret access key for obs.\n// config.put(\"secret_access_key\", \"...\");\n\n// Bucket for obs.\n// config.put(\"bucket\", \"...\");\nOperator operator = Operator.of(\"obs\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"obs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"obs\",\n # Root for obs.\n # root=\"...\",\n\n # Endpoint for obs.\n # endpoint=\"...\",\n\n # Access key id for obs.\n # access_key_id=\"...\",\n\n # Secret access key for obs.\n # secret_access_key=\"...\",\n\n # Bucket for obs.\n # bucket=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"obs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"obs\",\n # Root for obs.\n # root=\"...\",\n\n # Endpoint for obs.\n # endpoint=\"...\",\n\n # Access key id for obs.\n # access_key_id=\"...\",\n\n # Secret access key for obs.\n # secret_access_key=\"...\",\n\n # Bucket for obs.\n # bucket=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"obs\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"obs\", {\n // Root for obs.\n // root: \"...\",\n\n // Endpoint for obs.\n // endpoint: \"...\",\n\n // Access key id for obs.\n // access_key_id: \"...\",\n\n // Secret access key for obs.\n // secret_access_key: \"...\",\n\n // Bucket for obs.\n // bucket: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"obs\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"obs\", {\n // Root for obs.\n // root: \"...\",\n\n // Endpoint for obs.\n // endpoint: \"...\",\n\n // Access key id for obs.\n // access_key_id: \"...\",\n\n // Secret access key for obs.\n // secret_access_key: \"...\",\n\n // Bucket for obs.\n // bucket: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"obs\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Root for obs.\n// conf.put(\"root\", \"...\");\n\n// Endpoint for obs.\n// conf.put(\"endpoint\", \"...\");\n\n// Access key id for obs.\n// conf.put(\"access_key_id\", \"...\");\n\n// Secret access key for obs.\n// conf.put(\"secret_access_key\", \"...\");\n\n// Bucket for obs.\n// conf.put(\"bucket\", \"...\");\n\nOperator op = Operator.of(\"obs\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"obs\", {\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"obs\", {\n # Root for obs.\n # \"root\" => \"...\",\n\n # Endpoint for obs.\n # \"endpoint\" => \"...\",\n\n # Access key id for obs.\n # \"access_key_id\" => \"...\",\n\n # Secret access key for obs.\n # \"secret_access_key\" => \"...\",\n\n # Bucket for obs.\n # \"bucket\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/obs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(obs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/obs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(obs.Scheme, opendal.OperatorOptions{\n\t// Root for obs.\n\t// \"root\": \"...\",\n\n\t// Endpoint for obs.\n\t// \"endpoint\": \"...\",\n\n\t// Access key id for obs.\n\t// \"access_key_id\": \"...\",\n\n\t// Secret access key for obs.\n\t// \"secret_access_key\": \"...\",\n\n\t// Bucket for obs.\n\t// \"bucket\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"obs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Root for obs.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Endpoint for obs.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// Access key id for obs.\n// opendal_operator_options_set(options, \"access_key_id\", \"...\");\n\n// Secret access key for obs.\n// opendal_operator_options_set(options, \"secret_access_key\", \"...\");\n\n// Bucket for obs.\n// opendal_operator_options_set(options, \"bucket\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"obs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"obs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Root for obs.\n // {\"root\", \"...\"},\n\n // Endpoint for obs.\n // {\"endpoint\", \"...\"},\n\n // Access key id for obs.\n // {\"access_key_id\", \"...\"},\n\n // Secret access key for obs.\n // {\"secret_access_key\", \"...\"},\n\n // Bucket for obs.\n // {\"bucket\", \"...\"},\n};\nopendal::Operator operator(\"obs\", config);" } ] }, @@ -2865,26 +3689,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"onedrive\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"onedrive\", [\n // The root path for the OneDrive service for the file access\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API (also OneDrive API) access token\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API (also OneDrive API) refresh token\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API Application client secret that is in the Azure's app registration portal\n // (\"client_secret\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"onedrive\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"onedrive\", [\n // The root path for the OneDrive service for the file access\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API (also OneDrive API) access token\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API (also OneDrive API) refresh token\n // (\"refresh_token\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n // (\"client_id\".to_string(), \"...\".to_string()),\n\n // Microsoft Graph API Application client secret that is in the Azure's app registration portal\n // (\"client_secret\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"onedrive\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// The root path for the OneDrive service for the file access\n// config.put(\"root\", \"...\");\n\n// Microsoft Graph API (also OneDrive API) access token\n// config.put(\"access_token\", \"...\");\n\n// Microsoft Graph API (also OneDrive API) refresh token\n// config.put(\"refresh_token\", \"...\");\n\n// Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n// config.put(\"client_id\", \"...\");\n\n// Microsoft Graph API Application client secret that is in the Azure's app registration portal\n// config.put(\"client_secret\", \"...\");\nOperator operator = Operator.of(\"onedrive\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"onedrive\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"onedrive\",\n # The root path for the OneDrive service for the file access\n # root=\"...\",\n\n # Microsoft Graph API (also OneDrive API) access token\n # access_token=\"...\",\n\n # Microsoft Graph API (also OneDrive API) refresh token\n # refresh_token=\"...\",\n\n # Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n # client_id=\"...\",\n\n # Microsoft Graph API Application client secret that is in the Azure's app registration portal\n # client_secret=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"onedrive\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"onedrive\",\n # The root path for the OneDrive service for the file access\n # root=\"...\",\n\n # Microsoft Graph API (also OneDrive API) access token\n # access_token=\"...\",\n\n # Microsoft Graph API (also OneDrive API) refresh token\n # refresh_token=\"...\",\n\n # Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n # client_id=\"...\",\n\n # Microsoft Graph API Application client secret that is in the Azure's app registration portal\n # client_secret=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"onedrive\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"onedrive\", {\n // The root path for the OneDrive service for the file access\n // root: \"...\",\n\n // Microsoft Graph API (also OneDrive API) access token\n // access_token: \"...\",\n\n // Microsoft Graph API (also OneDrive API) refresh token\n // refresh_token: \"...\",\n\n // Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n // client_id: \"...\",\n\n // Microsoft Graph API Application client secret that is in the Azure's app registration portal\n // client_secret: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"onedrive\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"onedrive\", {\n // The root path for the OneDrive service for the file access\n // root: \"...\",\n\n // Microsoft Graph API (also OneDrive API) access token\n // access_token: \"...\",\n\n // Microsoft Graph API (also OneDrive API) refresh token\n // refresh_token: \"...\",\n\n // Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n // client_id: \"...\",\n\n // Microsoft Graph API Application client secret that is in the Azure's app registration portal\n // client_secret: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"onedrive\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// The root path for the OneDrive service for the file access\n// conf.put(\"root\", \"...\");\n\n// Microsoft Graph API (also OneDrive API) access token\n// conf.put(\"access_token\", \"...\");\n\n// Microsoft Graph API (also OneDrive API) refresh token\n// conf.put(\"refresh_token\", \"...\");\n\n// Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n// conf.put(\"client_id\", \"...\");\n\n// Microsoft Graph API Application client secret that is in the Azure's app registration portal\n// conf.put(\"client_secret\", \"...\");\n\nOperator op = Operator.of(\"onedrive\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/onedrive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(onedrive.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/onedrive\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(onedrive.Scheme, opendal.OperatorOptions{\n\t// The root path for the OneDrive service for the file access\n\t// \"root\": \"...\",\n\n\t// Microsoft Graph API (also OneDrive API) access token\n\t// \"access_token\": \"...\",\n\n\t// Microsoft Graph API (also OneDrive API) refresh token\n\t// \"refresh_token\": \"...\",\n\n\t// Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n\t// \"client_id\": \"...\",\n\n\t// Microsoft Graph API Application client secret that is in the Azure's app registration portal\n\t// \"client_secret\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"onedrive\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The root path for the OneDrive service for the file access\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Microsoft Graph API (also OneDrive API) access token\n// opendal_operator_options_set(options, \"access_token\", \"...\");\n\n// Microsoft Graph API (also OneDrive API) refresh token\n// opendal_operator_options_set(options, \"refresh_token\", \"...\");\n\n// Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n// opendal_operator_options_set(options, \"client_id\", \"...\");\n\n// Microsoft Graph API Application client secret that is in the Azure's app registration portal\n// opendal_operator_options_set(options, \"client_secret\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"onedrive\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"onedrive\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The root path for the OneDrive service for the file access\n // {\"root\", \"...\"},\n\n // Microsoft Graph API (also OneDrive API) access token\n // {\"access_token\", \"...\"},\n\n // Microsoft Graph API (also OneDrive API) refresh token\n // {\"refresh_token\", \"...\"},\n\n // Microsoft Graph API Application (client) ID that is in the Azure's app registration portal\n // {\"client_id\", \"...\"},\n\n // Microsoft Graph API Application client secret that is in the Azure's app registration portal\n // {\"client_secret\", \"...\"},\n};\nopendal::Operator operator(\"onedrive\", config);" } ] }, @@ -2907,14 +3749,32 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"opfs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"opfs\", [\n // Root directory for this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"opfs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"opfs\", [\n // Root directory for this backend.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"opfs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"opfs\",\n # Root directory for this backend.\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"opfs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"opfs\",\n # Root directory for this backend.\n # root=\"...\",\n)" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/opfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(opfs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/opfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(opfs.Scheme, opendal.OperatorOptions{\n\t// Root directory for this backend.\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"opfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Root directory for this backend.\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"opfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"opfs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Root directory for this backend.\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"opfs\", config);" } ] }, @@ -3100,26 +3960,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"oss\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"oss\", [\n // Root for oss.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for oss.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Presign endpoint for oss.\n // (\"presign_endpoint\".to_string(), \"...\".to_string()),\n\n // Bucket for oss.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // Addressing style for oss.\n // (\"addressing_style\".to_string(), \"...\".to_string()),\n\n // Pre sign addressing style for oss.\n // (\"presign_addressing_style\".to_string(), \"...\".to_string()),\n\n // Server side encryption for oss.\n // (\"server_side_encryption\".to_string(), \"...\".to_string()),\n\n // Server side encryption key id for oss.\n // (\"server_side_encryption_key_id\".to_string(), \"...\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n\n // Access key id for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // Access key secret for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n // (\"access_key_secret\".to_string(), \"...\".to_string()),\n\n // `security_token` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n // (\"security_token\".to_string(), \"...\".to_string()),\n\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ROLE_ARN`\n // (\"role_arn\".to_string(), \"...\".to_string()),\n\n // role_session_name for this backend.\n // (\"role_session_name\".to_string(), \"...\".to_string()),\n\n // `oidc_provider_arn` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n // (\"oidc_provider_arn\".to_string(), \"...\".to_string()),\n\n // `oidc_token_file` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n // (\"oidc_token_file\".to_string(), \"...\".to_string()),\n\n // `sts_endpoint` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n // (\"sts_endpoint\".to_string(), \"...\".to_string()),\n\n // external_id for this backend.\n // (\"external_id\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"oss\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"oss\", [\n // Root for oss.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for oss.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Presign endpoint for oss.\n // (\"presign_endpoint\".to_string(), \"...\".to_string()),\n\n // Bucket for oss.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // Addressing style for oss.\n // (\"addressing_style\".to_string(), \"...\".to_string()),\n\n // Pre sign addressing style for oss.\n // (\"presign_addressing_style\".to_string(), \"...\".to_string()),\n\n // Server side encryption for oss.\n // (\"server_side_encryption\".to_string(), \"...\".to_string()),\n\n // Server side encryption key id for oss.\n // (\"server_side_encryption_key_id\".to_string(), \"...\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n\n // Access key id for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // Access key secret for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n // (\"access_key_secret\".to_string(), \"...\".to_string()),\n\n // `security_token` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n // (\"security_token\".to_string(), \"...\".to_string()),\n\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ROLE_ARN`\n // (\"role_arn\".to_string(), \"...\".to_string()),\n\n // role_session_name for this backend.\n // (\"role_session_name\".to_string(), \"...\".to_string()),\n\n // `oidc_provider_arn` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n // (\"oidc_provider_arn\".to_string(), \"...\".to_string()),\n\n // `oidc_token_file` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n // (\"oidc_token_file\".to_string(), \"...\".to_string()),\n\n // `sts_endpoint` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n // (\"sts_endpoint\".to_string(), \"...\".to_string()),\n\n // external_id for this backend.\n // (\"external_id\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"bucket\", \"...\");\nOperator operator = Operator.of(\"oss\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Root for oss.\n// config.put(\"root\", \"...\");\n\n// Endpoint for oss.\n// config.put(\"endpoint\", \"...\");\n\n// Presign endpoint for oss.\n// config.put(\"presign_endpoint\", \"...\");\n\n// Bucket for oss.\nconfig.put(\"bucket\", \"...\");\n\n// Addressing style for oss.\n// config.put(\"addressing_style\", \"...\");\n\n// Pre sign addressing style for oss.\n// config.put(\"presign_addressing_style\", \"...\");\n\n// Server side encryption for oss.\n// config.put(\"server_side_encryption\", \"...\");\n\n// Server side encryption key id for oss.\n// config.put(\"server_side_encryption_key_id\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// config.put(\"skip_signature\", \"true\");\n\n// Access key id for oss.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n// config.put(\"access_key_id\", \"...\");\n\n// Access key secret for oss.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n// config.put(\"access_key_secret\", \"...\");\n\n// `security_token` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n// config.put(\"security_token\", \"...\");\n\n// If `role_arn` is set, we will use already known config as source\n// credential to assume role with `role_arn`.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ROLE_ARN`\n// config.put(\"role_arn\", \"...\");\n\n// role_session_name for this backend.\n// config.put(\"role_session_name\", \"...\");\n\n// `oidc_provider_arn` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n// config.put(\"oidc_provider_arn\", \"...\");\n\n// `oidc_token_file` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n// config.put(\"oidc_token_file\", \"...\");\n\n// `sts_endpoint` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n// config.put(\"sts_endpoint\", \"...\");\n\n// external_id for this backend.\n// config.put(\"external_id\", \"...\");\nOperator operator = Operator.of(\"oss\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"oss\",\n bucket=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"oss\",\n # Root for oss.\n # root=\"...\",\n\n # Endpoint for oss.\n # endpoint=\"...\",\n\n # Presign endpoint for oss.\n # presign_endpoint=\"...\",\n\n # Bucket for oss.\n bucket=\"...\",\n\n # Addressing style for oss.\n # addressing_style=\"...\",\n\n # Pre sign addressing style for oss.\n # presign_addressing_style=\"...\",\n\n # Server side encryption for oss.\n # server_side_encryption=\"...\",\n\n # Server side encryption key id for oss.\n # server_side_encryption_key_id=\"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n\n # Access key id for oss.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n # access_key_id=\"...\",\n\n # Access key secret for oss.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n # access_key_secret=\"...\",\n\n # `security_token` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n # security_token=\"...\",\n\n # If `role_arn` is set, we will use already known config as source\n # credential to assume role with `role_arn`.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ROLE_ARN`\n # role_arn=\"...\",\n\n # role_session_name for this backend.\n # role_session_name=\"...\",\n\n # `oidc_provider_arn` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n # oidc_provider_arn=\"...\",\n\n # `oidc_token_file` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n # oidc_token_file=\"...\",\n\n # `sts_endpoint` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n # sts_endpoint=\"...\",\n\n # external_id for this backend.\n # external_id=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"oss\",\n bucket=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"oss\",\n # Root for oss.\n # root=\"...\",\n\n # Endpoint for oss.\n # endpoint=\"...\",\n\n # Presign endpoint for oss.\n # presign_endpoint=\"...\",\n\n # Bucket for oss.\n bucket=\"...\",\n\n # Addressing style for oss.\n # addressing_style=\"...\",\n\n # Pre sign addressing style for oss.\n # presign_addressing_style=\"...\",\n\n # Server side encryption for oss.\n # server_side_encryption=\"...\",\n\n # Server side encryption key id for oss.\n # server_side_encryption_key_id=\"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n\n # Access key id for oss.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n # access_key_id=\"...\",\n\n # Access key secret for oss.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n # access_key_secret=\"...\",\n\n # `security_token` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n # security_token=\"...\",\n\n # If `role_arn` is set, we will use already known config as source\n # credential to assume role with `role_arn`.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ROLE_ARN`\n # role_arn=\"...\",\n\n # role_session_name for this backend.\n # role_session_name=\"...\",\n\n # `oidc_provider_arn` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n # oidc_provider_arn=\"...\",\n\n # `oidc_token_file` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n # oidc_token_file=\"...\",\n\n # `sts_endpoint` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n # sts_endpoint=\"...\",\n\n # external_id for this backend.\n # external_id=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"oss\", {\n bucket: \"...\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"oss\", {\n // Root for oss.\n // root: \"...\",\n\n // Endpoint for oss.\n // endpoint: \"...\",\n\n // Presign endpoint for oss.\n // presign_endpoint: \"...\",\n\n // Bucket for oss.\n bucket: \"...\",\n\n // Addressing style for oss.\n // addressing_style: \"...\",\n\n // Pre sign addressing style for oss.\n // presign_addressing_style: \"...\",\n\n // Server side encryption for oss.\n // server_side_encryption: \"...\",\n\n // Server side encryption key id for oss.\n // server_side_encryption_key_id: \"...\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n\n // Access key id for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n // access_key_id: \"...\",\n\n // Access key secret for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n // access_key_secret: \"...\",\n\n // `security_token` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n // security_token: \"...\",\n\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ROLE_ARN`\n // role_arn: \"...\",\n\n // role_session_name for this backend.\n // role_session_name: \"...\",\n\n // `oidc_provider_arn` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n // oidc_provider_arn: \"...\",\n\n // `oidc_token_file` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n // oidc_token_file: \"...\",\n\n // `sts_endpoint` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n // sts_endpoint: \"...\",\n\n // external_id for this backend.\n // external_id: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"oss\", {\n bucket: \"...\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"oss\", {\n // Root for oss.\n // root: \"...\",\n\n // Endpoint for oss.\n // endpoint: \"...\",\n\n // Presign endpoint for oss.\n // presign_endpoint: \"...\",\n\n // Bucket for oss.\n bucket: \"...\",\n\n // Addressing style for oss.\n // addressing_style: \"...\",\n\n // Pre sign addressing style for oss.\n // presign_addressing_style: \"...\",\n\n // Server side encryption for oss.\n // server_side_encryption: \"...\",\n\n // Server side encryption key id for oss.\n // server_side_encryption_key_id: \"...\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n\n // Access key id for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n // access_key_id: \"...\",\n\n // Access key secret for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n // access_key_secret: \"...\",\n\n // `security_token` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n // security_token: \"...\",\n\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ROLE_ARN`\n // role_arn: \"...\",\n\n // role_session_name for this backend.\n // role_session_name: \"...\",\n\n // `oidc_provider_arn` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n // oidc_provider_arn: \"...\",\n\n // `oidc_token_file` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n // oidc_token_file: \"...\",\n\n // `sts_endpoint` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n // sts_endpoint: \"...\",\n\n // external_id for this backend.\n // external_id: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"bucket\", \"...\");\nOperator op = Operator.of(\"oss\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Root for oss.\n// conf.put(\"root\", \"...\");\n\n// Endpoint for oss.\n// conf.put(\"endpoint\", \"...\");\n\n// Presign endpoint for oss.\n// conf.put(\"presign_endpoint\", \"...\");\n\n// Bucket for oss.\nconf.put(\"bucket\", \"...\");\n\n// Addressing style for oss.\n// conf.put(\"addressing_style\", \"...\");\n\n// Pre sign addressing style for oss.\n// conf.put(\"presign_addressing_style\", \"...\");\n\n// Server side encryption for oss.\n// conf.put(\"server_side_encryption\", \"...\");\n\n// Server side encryption key id for oss.\n// conf.put(\"server_side_encryption_key_id\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// conf.put(\"skip_signature\", \"true\");\n\n// Access key id for oss.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n// conf.put(\"access_key_id\", \"...\");\n\n// Access key secret for oss.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n// conf.put(\"access_key_secret\", \"...\");\n\n// `security_token` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n// conf.put(\"security_token\", \"...\");\n\n// If `role_arn` is set, we will use already known config as source\n// credential to assume role with `role_arn`.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ROLE_ARN`\n// conf.put(\"role_arn\", \"...\");\n\n// role_session_name for this backend.\n// conf.put(\"role_session_name\", \"...\");\n\n// `oidc_provider_arn` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n// conf.put(\"oidc_provider_arn\", \"...\");\n\n// `oidc_token_file` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n// conf.put(\"oidc_token_file\", \"...\");\n\n// `sts_endpoint` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n// conf.put(\"sts_endpoint\", \"...\");\n\n// external_id for this backend.\n// conf.put(\"external_id\", \"...\");\n\nOperator op = Operator.of(\"oss\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"oss\", {\n \"bucket\" => \"...\",\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"oss\", {\n # Root for oss.\n # \"root\" => \"...\",\n\n # Endpoint for oss.\n # \"endpoint\" => \"...\",\n\n # Presign endpoint for oss.\n # \"presign_endpoint\" => \"...\",\n\n # Bucket for oss.\n \"bucket\" => \"...\",\n\n # Addressing style for oss.\n # \"addressing_style\" => \"...\",\n\n # Pre sign addressing style for oss.\n # \"presign_addressing_style\" => \"...\",\n\n # Server side encryption for oss.\n # \"server_side_encryption\" => \"...\",\n\n # Server side encryption key id for oss.\n # \"server_side_encryption_key_id\" => \"...\",\n\n # Skip signature will skip loading credentials and signing requests.\n # \"skip_signature\" => \"true\",\n\n # Access key id for oss.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n # \"access_key_id\" => \"...\",\n\n # Access key secret for oss.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n # \"access_key_secret\" => \"...\",\n\n # `security_token` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n # \"security_token\" => \"...\",\n\n # If `role_arn` is set, we will use already known config as source\n # credential to assume role with `role_arn`.\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_ROLE_ARN`\n # \"role_arn\" => \"...\",\n\n # role_session_name for this backend.\n # \"role_session_name\" => \"...\",\n\n # `oidc_provider_arn` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n # \"oidc_provider_arn\" => \"...\",\n\n # `oidc_token_file` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n # \"oidc_token_file\" => \"...\",\n\n # `sts_endpoint` will be loaded from\n #\n # - this field if it's `is_some`\n # - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n # \"sts_endpoint\" => \"...\",\n\n # external_id for this backend.\n # \"external_id\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/oss\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(oss.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/oss\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(oss.Scheme, opendal.OperatorOptions{\n\t// Root for oss.\n\t// \"root\": \"...\",\n\n\t// Endpoint for oss.\n\t// \"endpoint\": \"...\",\n\n\t// Presign endpoint for oss.\n\t// \"presign_endpoint\": \"...\",\n\n\t// Bucket for oss.\n\t\"bucket\": \"...\",\n\n\t// Addressing style for oss.\n\t// \"addressing_style\": \"...\",\n\n\t// Pre sign addressing style for oss.\n\t// \"presign_addressing_style\": \"...\",\n\n\t// Server side encryption for oss.\n\t// \"server_side_encryption\": \"...\",\n\n\t// Server side encryption key id for oss.\n\t// \"server_side_encryption_key_id\": \"...\",\n\n\t// Skip signature will skip loading credentials and signing requests.\n\t// \"skip_signature\": \"true\",\n\n\t// Access key id for oss.\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n\t// \"access_key_id\": \"...\",\n\n\t// Access key secret for oss.\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n\t// \"access_key_secret\": \"...\",\n\n\t// `security_token` will be loaded from\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n\t// \"security_token\": \"...\",\n\n\t// If `role_arn` is set, we will use already known config as source\n\t// credential to assume role with `role_arn`.\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_ROLE_ARN`\n\t// \"role_arn\": \"...\",\n\n\t// role_session_name for this backend.\n\t// \"role_session_name\": \"...\",\n\n\t// `oidc_provider_arn` will be loaded from\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n\t// \"oidc_provider_arn\": \"...\",\n\n\t// `oidc_token_file` will be loaded from\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n\t// \"oidc_token_file\": \"...\",\n\n\t// `sts_endpoint` will be loaded from\n\t//\n\t// - this field if it's `is_some`\n\t// - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n\t// \"sts_endpoint\": \"...\",\n\n\t// external_id for this backend.\n\t// \"external_id\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"bucket\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"oss\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Root for oss.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Endpoint for oss.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// Presign endpoint for oss.\n// opendal_operator_options_set(options, \"presign_endpoint\", \"...\");\n\n// Bucket for oss.\nopendal_operator_options_set(options, \"bucket\", \"...\");\n\n// Addressing style for oss.\n// opendal_operator_options_set(options, \"addressing_style\", \"...\");\n\n// Pre sign addressing style for oss.\n// opendal_operator_options_set(options, \"presign_addressing_style\", \"...\");\n\n// Server side encryption for oss.\n// opendal_operator_options_set(options, \"server_side_encryption\", \"...\");\n\n// Server side encryption key id for oss.\n// opendal_operator_options_set(options, \"server_side_encryption_key_id\", \"...\");\n\n// Skip signature will skip loading credentials and signing requests.\n// opendal_operator_options_set(options, \"skip_signature\", \"true\");\n\n// Access key id for oss.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n// opendal_operator_options_set(options, \"access_key_id\", \"...\");\n\n// Access key secret for oss.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n// opendal_operator_options_set(options, \"access_key_secret\", \"...\");\n\n// `security_token` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n// opendal_operator_options_set(options, \"security_token\", \"...\");\n\n// If `role_arn` is set, we will use already known config as source\n// credential to assume role with `role_arn`.\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_ROLE_ARN`\n// opendal_operator_options_set(options, \"role_arn\", \"...\");\n\n// role_session_name for this backend.\n// opendal_operator_options_set(options, \"role_session_name\", \"...\");\n\n// `oidc_provider_arn` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n// opendal_operator_options_set(options, \"oidc_provider_arn\", \"...\");\n\n// `oidc_token_file` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n// opendal_operator_options_set(options, \"oidc_token_file\", \"...\");\n\n// `sts_endpoint` will be loaded from\n//\n// - this field if it's `is_some`\n// - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n// opendal_operator_options_set(options, \"sts_endpoint\", \"...\");\n\n// external_id for this backend.\n// opendal_operator_options_set(options, \"external_id\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"oss\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"bucket\", \"...\"},\n};\nopendal::Operator operator(\"oss\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Root for oss.\n // {\"root\", \"...\"},\n\n // Endpoint for oss.\n // {\"endpoint\", \"...\"},\n\n // Presign endpoint for oss.\n // {\"presign_endpoint\", \"...\"},\n\n // Bucket for oss.\n {\"bucket\", \"...\"},\n\n // Addressing style for oss.\n // {\"addressing_style\", \"...\"},\n\n // Pre sign addressing style for oss.\n // {\"presign_addressing_style\", \"...\"},\n\n // Server side encryption for oss.\n // {\"server_side_encryption\", \"...\"},\n\n // Server side encryption key id for oss.\n // {\"server_side_encryption_key_id\", \"...\"},\n\n // Skip signature will skip loading credentials and signing requests.\n // {\"skip_signature\", \"true\"},\n\n // Access key id for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_ID`\n // {\"access_key_id\", \"...\"},\n\n // Access key secret for oss.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`\n // {\"access_key_secret\", \"...\"},\n\n // `security_token` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_SECURITY_TOKEN`\n // {\"security_token\", \"...\"},\n\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_ROLE_ARN`\n // {\"role_arn\", \"...\"},\n\n // role_session_name for this backend.\n // {\"role_session_name\", \"...\"},\n\n // `oidc_provider_arn` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_PROVIDER_ARN`\n // {\"oidc_provider_arn\", \"...\"},\n\n // `oidc_token_file` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_OIDC_TOKEN_FILE`\n // {\"oidc_token_file\", \"...\"},\n\n // `sts_endpoint` will be loaded from\n //\n // - this field if it's `is_some`\n // - env value: `ALIBABA_CLOUD_STS_ENDPOINT`\n // {\"sts_endpoint\", \"...\"},\n\n // external_id for this backend.\n // {\"external_id\", \"...\"},\n};\nopendal::Operator operator(\"oss\", config);" } ] }, @@ -3163,14 +4047,32 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"pcloud\", [\n (\"endpoint\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"pcloud\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // pCloud endpoint address.\n (\"endpoint\".to_string(), \"...\".to_string()),\n\n // pCloud username.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // pCloud password.\n // (\"password\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"pcloud\", [\n (\"endpoint\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"pcloud\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // pCloud endpoint address.\n (\"endpoint\".to_string(), \"...\".to_string()),\n\n // pCloud username.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // pCloud password.\n // (\"password\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"pcloud\",\n endpoint=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"pcloud\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # pCloud endpoint address.\n endpoint=\"...\",\n\n # pCloud username.\n # username=\"...\",\n\n # pCloud password.\n # password=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"pcloud\",\n endpoint=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"pcloud\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # pCloud endpoint address.\n endpoint=\"...\",\n\n # pCloud username.\n # username=\"...\",\n\n # pCloud password.\n # password=\"...\",\n)" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/pcloud\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(pcloud.Scheme, opendal.OperatorOptions{\n\t\"endpoint\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/pcloud\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(pcloud.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// pCloud endpoint address.\n\t\"endpoint\": \"...\",\n\n\t// pCloud username.\n\t// \"username\": \"...\",\n\n\t// pCloud password.\n\t// \"password\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"endpoint\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"pcloud\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of this backend.\n//\n// All operations will happen under this root.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// pCloud endpoint address.\nopendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// pCloud username.\n// opendal_operator_options_set(options, \"username\", \"...\");\n\n// pCloud password.\n// opendal_operator_options_set(options, \"password\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"pcloud\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"endpoint\", \"...\"},\n};\nopendal::Operator operator(\"pcloud\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of this backend.\n //\n // All operations will happen under this root.\n // {\"root\", \"...\"},\n\n // pCloud endpoint address.\n {\"endpoint\", \"...\"},\n\n // pCloud username.\n // {\"username\", \"...\"},\n\n // pCloud password.\n // {\"password\", \"...\"},\n};\nopendal::Operator operator(\"pcloud\", config);" } ] }, @@ -3207,26 +4109,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"persy\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"persy\", [\n // That path to the persy data file. The directory in the path must already exist.\n // (\"datafile\".to_string(), \"...\".to_string()),\n\n // That name of the persy segment.\n // (\"segment\".to_string(), \"...\".to_string()),\n\n // That name of the persy index.\n // (\"index\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"persy\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"persy\", [\n // That path to the persy data file. The directory in the path must already exist.\n // (\"datafile\".to_string(), \"...\".to_string()),\n\n // That name of the persy segment.\n // (\"segment\".to_string(), \"...\".to_string()),\n\n // That name of the persy index.\n // (\"index\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"persy\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// That path to the persy data file. The directory in the path must already exist.\n// config.put(\"datafile\", \"...\");\n\n// That name of the persy segment.\n// config.put(\"segment\", \"...\");\n\n// That name of the persy index.\n// config.put(\"index\", \"...\");\nOperator operator = Operator.of(\"persy\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"persy\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"persy\",\n # That path to the persy data file. The directory in the path must already exist.\n # datafile=\"...\",\n\n # That name of the persy segment.\n # segment=\"...\",\n\n # That name of the persy index.\n # index=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"persy\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"persy\",\n # That path to the persy data file. The directory in the path must already exist.\n # datafile=\"...\",\n\n # That name of the persy segment.\n # segment=\"...\",\n\n # That name of the persy index.\n # index=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"persy\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"persy\", {\n // That path to the persy data file. The directory in the path must already exist.\n // datafile: \"...\",\n\n // That name of the persy segment.\n // segment: \"...\",\n\n // That name of the persy index.\n // index: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"persy\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"persy\", {\n // That path to the persy data file. The directory in the path must already exist.\n // datafile: \"...\",\n\n // That name of the persy segment.\n // segment: \"...\",\n\n // That name of the persy index.\n // index: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"persy\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// That path to the persy data file. The directory in the path must already exist.\n// conf.put(\"datafile\", \"...\");\n\n// That name of the persy segment.\n// conf.put(\"segment\", \"...\");\n\n// That name of the persy index.\n// conf.put(\"index\", \"...\");\n\nOperator op = Operator.of(\"persy\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/persy\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(persy.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/persy\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(persy.Scheme, opendal.OperatorOptions{\n\t// That path to the persy data file. The directory in the path must already exist.\n\t// \"datafile\": \"...\",\n\n\t// That name of the persy segment.\n\t// \"segment\": \"...\",\n\n\t// That name of the persy index.\n\t// \"index\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"persy\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// That path to the persy data file. The directory in the path must already exist.\n// opendal_operator_options_set(options, \"datafile\", \"...\");\n\n// That name of the persy segment.\n// opendal_operator_options_set(options, \"segment\", \"...\");\n\n// That name of the persy index.\n// opendal_operator_options_set(options, \"index\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"persy\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"persy\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // That path to the persy data file. The directory in the path must already exist.\n // {\"datafile\", \"...\"},\n\n // That name of the persy segment.\n // {\"segment\", \"...\"},\n\n // That name of the persy index.\n // {\"index\", \"...\"},\n};\nopendal::Operator operator(\"persy\", config);" } ] }, @@ -3277,26 +4197,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"postgresql\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"postgresql\", [\n // Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The URL should be with a scheme of either `postgres://` or `postgresql://`.\n //\n // - `postgresql://user@localhost`\n // - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n // - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n // - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n //\n // For more information, please visit .\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // the table of postgresql\n // (\"table\".to_string(), \"...\".to_string()),\n\n // the key field of postgresql\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // the value field of postgresql\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"postgresql\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"postgresql\", [\n // Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The URL should be with a scheme of either `postgres://` or `postgresql://`.\n //\n // - `postgresql://user@localhost`\n // - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n // - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n // - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n //\n // For more information, please visit .\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // the table of postgresql\n // (\"table\".to_string(), \"...\".to_string()),\n\n // the key field of postgresql\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // the value field of postgresql\n // (\"value_field\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"postgresql\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Root of this backend.\n//\n// All operations will happen under this root.\n//\n// Default to `/` if not set.\n// config.put(\"root\", \"...\");\n\n// The URL should be with a scheme of either `postgres://` or `postgresql://`.\n//\n// - `postgresql://user@localhost`\n// - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n// - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n// - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n//\n// For more information, please visit .\n// config.put(\"connection_string\", \"...\");\n\n// the table of postgresql\n// config.put(\"table\", \"...\");\n\n// the key field of postgresql\n// config.put(\"key_field\", \"...\");\n\n// the value field of postgresql\n// config.put(\"value_field\", \"...\");\nOperator operator = Operator.of(\"postgresql\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"postgresql\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"postgresql\",\n # Root of this backend.\n #\n # All operations will happen under this root.\n #\n # Default to `/` if not set.\n # root=\"...\",\n\n # The URL should be with a scheme of either `postgres://` or `postgresql://`.\n #\n # - `postgresql://user@localhost`\n # - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n # - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n # - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n #\n # For more information, please visit .\n # connection_string=\"...\",\n\n # the table of postgresql\n # table=\"...\",\n\n # the key field of postgresql\n # key_field=\"...\",\n\n # the value field of postgresql\n # value_field=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"postgresql\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"postgresql\",\n # Root of this backend.\n #\n # All operations will happen under this root.\n #\n # Default to `/` if not set.\n # root=\"...\",\n\n # The URL should be with a scheme of either `postgres://` or `postgresql://`.\n #\n # - `postgresql://user@localhost`\n # - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n # - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n # - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n #\n # For more information, please visit .\n # connection_string=\"...\",\n\n # the table of postgresql\n # table=\"...\",\n\n # the key field of postgresql\n # key_field=\"...\",\n\n # the value field of postgresql\n # value_field=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"postgresql\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"postgresql\", {\n // Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // root: \"...\",\n\n // The URL should be with a scheme of either `postgres://` or `postgresql://`.\n //\n // - `postgresql://user@localhost`\n // - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n // - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n // - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n //\n // For more information, please visit .\n // connection_string: \"...\",\n\n // the table of postgresql\n // table: \"...\",\n\n // the key field of postgresql\n // key_field: \"...\",\n\n // the value field of postgresql\n // value_field: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"postgresql\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"postgresql\", {\n // Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // root: \"...\",\n\n // The URL should be with a scheme of either `postgres://` or `postgresql://`.\n //\n // - `postgresql://user@localhost`\n // - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n // - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n // - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n //\n // For more information, please visit .\n // connection_string: \"...\",\n\n // the table of postgresql\n // table: \"...\",\n\n // the key field of postgresql\n // key_field: \"...\",\n\n // the value field of postgresql\n // value_field: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"postgresql\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Root of this backend.\n//\n// All operations will happen under this root.\n//\n// Default to `/` if not set.\n// conf.put(\"root\", \"...\");\n\n// The URL should be with a scheme of either `postgres://` or `postgresql://`.\n//\n// - `postgresql://user@localhost`\n// - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n// - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n// - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n//\n// For more information, please visit .\n// conf.put(\"connection_string\", \"...\");\n\n// the table of postgresql\n// conf.put(\"table\", \"...\");\n\n// the key field of postgresql\n// conf.put(\"key_field\", \"...\");\n\n// the value field of postgresql\n// conf.put(\"value_field\", \"...\");\n\nOperator op = Operator.of(\"postgresql\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/postgresql\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(postgresql.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/postgresql\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(postgresql.Scheme, opendal.OperatorOptions{\n\t// Root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// Default to `/` if not set.\n\t// \"root\": \"...\",\n\n\t// The URL should be with a scheme of either `postgres://` or `postgresql://`.\n\t//\n\t// - `postgresql://user@localhost`\n\t// - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n\t// - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n\t// - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n\t//\n\t// For more information, please visit .\n\t// \"connection_string\": \"...\",\n\n\t// the table of postgresql\n\t// \"table\": \"...\",\n\n\t// the key field of postgresql\n\t// \"key_field\": \"...\",\n\n\t// the value field of postgresql\n\t// \"value_field\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"postgresql\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Root of this backend.\n//\n// All operations will happen under this root.\n//\n// Default to `/` if not set.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// The URL should be with a scheme of either `postgres://` or `postgresql://`.\n//\n// - `postgresql://user@localhost`\n// - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n// - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n// - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n//\n// For more information, please visit .\n// opendal_operator_options_set(options, \"connection_string\", \"...\");\n\n// the table of postgresql\n// opendal_operator_options_set(options, \"table\", \"...\");\n\n// the key field of postgresql\n// opendal_operator_options_set(options, \"key_field\", \"...\");\n\n// the value field of postgresql\n// opendal_operator_options_set(options, \"value_field\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"postgresql\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"postgresql\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Root of this backend.\n //\n // All operations will happen under this root.\n //\n // Default to `/` if not set.\n // {\"root\", \"...\"},\n\n // The URL should be with a scheme of either `postgres://` or `postgresql://`.\n //\n // - `postgresql://user@localhost`\n // - `postgresql://user:password@%2Fvar%2Flib%2Fpostgresql/mydb?connect_timeout=10`\n // - `postgresql://user@host1:1234,host2,host3:5678?target_session_attrs=read-write`\n // - `postgresql:///mydb?user=user&host=/var/lib/postgresql`\n //\n // For more information, please visit .\n // {\"connection_string\", \"...\"},\n\n // the table of postgresql\n // {\"table\", \"...\"},\n\n // the key field of postgresql\n // {\"key_field\", \"...\"},\n\n // the value field of postgresql\n // {\"value_field\", \"...\"},\n};\nopendal::Operator operator(\"postgresql\", config);" } ] }, @@ -3333,26 +4271,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"redb\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"redb\", [\n // path to the redb data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n\n // The table name for redb.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // The root for redb.\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"redb\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"redb\", [\n // path to the redb data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n\n // The table name for redb.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // The root for redb.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"redb\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// path to the redb data directory.\n// config.put(\"datadir\", \"...\");\n\n// The table name for redb.\n// config.put(\"table\", \"...\");\n\n// The root for redb.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"redb\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"redb\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"redb\",\n # path to the redb data directory.\n # datadir=\"...\",\n\n # The table name for redb.\n # table=\"...\",\n\n # The root for redb.\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"redb\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"redb\",\n # path to the redb data directory.\n # datadir=\"...\",\n\n # The table name for redb.\n # table=\"...\",\n\n # The root for redb.\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"redb\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"redb\", {\n // path to the redb data directory.\n // datadir: \"...\",\n\n // The table name for redb.\n // table: \"...\",\n\n // The root for redb.\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"redb\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"redb\", {\n // path to the redb data directory.\n // datadir: \"...\",\n\n // The table name for redb.\n // table: \"...\",\n\n // The root for redb.\n // root: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"redb\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// path to the redb data directory.\n// conf.put(\"datadir\", \"...\");\n\n// The table name for redb.\n// conf.put(\"table\", \"...\");\n\n// The root for redb.\n// conf.put(\"root\", \"...\");\n\nOperator op = Operator.of(\"redb\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/redb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(redb.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/redb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(redb.Scheme, opendal.OperatorOptions{\n\t// path to the redb data directory.\n\t// \"datadir\": \"...\",\n\n\t// The table name for redb.\n\t// \"table\": \"...\",\n\n\t// The root for redb.\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"redb\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// path to the redb data directory.\n// opendal_operator_options_set(options, \"datadir\", \"...\");\n\n// The table name for redb.\n// opendal_operator_options_set(options, \"table\", \"...\");\n\n// The root for redb.\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"redb\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"redb\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // path to the redb data directory.\n // {\"datadir\", \"...\"},\n\n // The table name for redb.\n // {\"table\", \"...\"},\n\n // The root for redb.\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"redb\", config);" } ] }, @@ -3424,26 +4380,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"redis\", [\n (\"db\".to_string(), \"1000\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"redis\", [\n // network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n //\n // default is \"tcp://127.0.0.1:6379\"\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n //\n // default is None\n // (\"cluster_endpoints\".to_string(), \"...\".to_string()),\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // (\"connection_pool_max_size\".to_string(), \"1000\".to_string()),\n\n // the username to connect redis service.\n //\n // default is None\n // (\"username\".to_string(), \"...\".to_string()),\n\n // the password for authentication\n //\n // default is None\n // (\"password\".to_string(), \"...\".to_string()),\n\n // the working directory of the Redis service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n\n // the number of DBs redis can take is unlimited\n //\n // default is db 0\n (\"db\".to_string(), \"1000\".to_string()),\n\n // The default ttl for put operations.\n // (\"default_ttl\".to_string(), \"10s\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"redis\", [\n (\"db\".to_string(), \"1000\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"redis\", [\n // network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n //\n // default is \"tcp://127.0.0.1:6379\"\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n //\n // default is None\n // (\"cluster_endpoints\".to_string(), \"...\".to_string()),\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // (\"connection_pool_max_size\".to_string(), \"1000\".to_string()),\n\n // the username to connect redis service.\n //\n // default is None\n // (\"username\".to_string(), \"...\".to_string()),\n\n // the password for authentication\n //\n // default is None\n // (\"password\".to_string(), \"...\".to_string()),\n\n // the working directory of the Redis service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n\n // the number of DBs redis can take is unlimited\n //\n // default is db 0\n (\"db\".to_string(), \"1000\".to_string()),\n\n // The default ttl for put operations.\n // (\"default_ttl\".to_string(), \"10s\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"db\", \"1000\");\nOperator operator = Operator.of(\"redis\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n//\n// default is \"tcp://127.0.0.1:6379\"\n// config.put(\"endpoint\", \"...\");\n\n// network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n//\n// default is None\n// config.put(\"cluster_endpoints\", \"...\");\n\n// The maximum number of connections allowed.\n//\n// default is 10\n// config.put(\"connection_pool_max_size\", \"1000\");\n\n// the username to connect redis service.\n//\n// default is None\n// config.put(\"username\", \"...\");\n\n// the password for authentication\n//\n// default is None\n// config.put(\"password\", \"...\");\n\n// the working directory of the Redis service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// config.put(\"root\", \"...\");\n\n// the number of DBs redis can take is unlimited\n//\n// default is db 0\nconfig.put(\"db\", \"1000\");\n\n// The default ttl for put operations.\n// config.put(\"default_ttl\", \"10s\");\nOperator operator = Operator.of(\"redis\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"redis\",\n db=\"1000\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"redis\",\n # network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n #\n # default is \"tcp://127.0.0.1:6379\"\n # endpoint=\"...\",\n\n # network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n #\n # default is None\n # cluster_endpoints=\"...\",\n\n # The maximum number of connections allowed.\n #\n # default is 10\n # connection_pool_max_size=\"1000\",\n\n # the username to connect redis service.\n #\n # default is None\n # username=\"...\",\n\n # the password for authentication\n #\n # default is None\n # password=\"...\",\n\n # the working directory of the Redis service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n\n # the number of DBs redis can take is unlimited\n #\n # default is db 0\n db=\"1000\",\n\n # The default ttl for put operations.\n # default_ttl=\"10s\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"redis\",\n db=\"1000\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"redis\",\n # network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n #\n # default is \"tcp://127.0.0.1:6379\"\n # endpoint=\"...\",\n\n # network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n #\n # default is None\n # cluster_endpoints=\"...\",\n\n # The maximum number of connections allowed.\n #\n # default is 10\n # connection_pool_max_size=\"1000\",\n\n # the username to connect redis service.\n #\n # default is None\n # username=\"...\",\n\n # the password for authentication\n #\n # default is None\n # password=\"...\",\n\n # the working directory of the Redis service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n\n # the number of DBs redis can take is unlimited\n #\n # default is db 0\n db=\"1000\",\n\n # The default ttl for put operations.\n # default_ttl=\"10s\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"redis\", {\n db: \"1000\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"redis\", {\n // network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n //\n // default is \"tcp://127.0.0.1:6379\"\n // endpoint: \"...\",\n\n // network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n //\n // default is None\n // cluster_endpoints: \"...\",\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // connection_pool_max_size: \"1000\",\n\n // the username to connect redis service.\n //\n // default is None\n // username: \"...\",\n\n // the password for authentication\n //\n // default is None\n // password: \"...\",\n\n // the working directory of the Redis service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n\n // the number of DBs redis can take is unlimited\n //\n // default is db 0\n db: \"1000\",\n\n // The default ttl for put operations.\n // default_ttl: \"10s\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"redis\", {\n db: \"1000\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"redis\", {\n // network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n //\n // default is \"tcp://127.0.0.1:6379\"\n // endpoint: \"...\",\n\n // network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n //\n // default is None\n // cluster_endpoints: \"...\",\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // connection_pool_max_size: \"1000\",\n\n // the username to connect redis service.\n //\n // default is None\n // username: \"...\",\n\n // the password for authentication\n //\n // default is None\n // password: \"...\",\n\n // the working directory of the Redis service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n\n // the number of DBs redis can take is unlimited\n //\n // default is db 0\n db: \"1000\",\n\n // The default ttl for put operations.\n // default_ttl: \"10s\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"db\", \"1000\");\nOperator op = Operator.of(\"redis\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n//\n// default is \"tcp://127.0.0.1:6379\"\n// conf.put(\"endpoint\", \"...\");\n\n// network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n//\n// default is None\n// conf.put(\"cluster_endpoints\", \"...\");\n\n// The maximum number of connections allowed.\n//\n// default is 10\n// conf.put(\"connection_pool_max_size\", \"1000\");\n\n// the username to connect redis service.\n//\n// default is None\n// conf.put(\"username\", \"...\");\n\n// the password for authentication\n//\n// default is None\n// conf.put(\"password\", \"...\");\n\n// the working directory of the Redis service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// conf.put(\"root\", \"...\");\n\n// the number of DBs redis can take is unlimited\n//\n// default is db 0\nconf.put(\"db\", \"1000\");\n\n// The default ttl for put operations.\n// conf.put(\"default_ttl\", \"10s\");\n\nOperator op = Operator.of(\"redis\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/redis\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(redis.Scheme, opendal.OperatorOptions{\n\t\"db\": \"1000\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/redis\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(redis.Scheme, opendal.OperatorOptions{\n\t// network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n\t//\n\t// default is \"tcp://127.0.0.1:6379\"\n\t// \"endpoint\": \"...\",\n\n\t// network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n\t//\n\t// default is None\n\t// \"cluster_endpoints\": \"...\",\n\n\t// The maximum number of connections allowed.\n\t//\n\t// default is 10\n\t// \"connection_pool_max_size\": \"1000\",\n\n\t// the username to connect redis service.\n\t//\n\t// default is None\n\t// \"username\": \"...\",\n\n\t// the password for authentication\n\t//\n\t// default is None\n\t// \"password\": \"...\",\n\n\t// the working directory of the Redis service. Can be \"/path/to/dir\"\n\t//\n\t// default is \"/\"\n\t// \"root\": \"...\",\n\n\t// the number of DBs redis can take is unlimited\n\t//\n\t// default is db 0\n\t\"db\": \"1000\",\n\n\t// The default ttl for put operations.\n\t// \"default_ttl\": \"10s\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"db\", \"1000\");\nopendal_result_operator_new result = opendal_operator_new(\"redis\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n//\n// default is \"tcp://127.0.0.1:6379\"\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n//\n// default is None\n// opendal_operator_options_set(options, \"cluster_endpoints\", \"...\");\n\n// The maximum number of connections allowed.\n//\n// default is 10\n// opendal_operator_options_set(options, \"connection_pool_max_size\", \"1000\");\n\n// the username to connect redis service.\n//\n// default is None\n// opendal_operator_options_set(options, \"username\", \"...\");\n\n// the password for authentication\n//\n// default is None\n// opendal_operator_options_set(options, \"password\", \"...\");\n\n// the working directory of the Redis service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// the number of DBs redis can take is unlimited\n//\n// default is db 0\nopendal_operator_options_set(options, \"db\", \"1000\");\n\n// The default ttl for put operations.\n// opendal_operator_options_set(options, \"default_ttl\", \"10s\");\nopendal_result_operator_new result = opendal_operator_new(\"redis\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"db\", \"1000\"},\n};\nopendal::Operator operator(\"redis\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // network address of the Redis service. Can be \"tcp://127.0.0.1:6379\", e.g.\n //\n // default is \"tcp://127.0.0.1:6379\"\n // {\"endpoint\", \"...\"},\n\n // network address of the Redis cluster service. Can be \"tcp://127.0.0.1:6379,tcp://127.0.0.1:6380,tcp://127.0.0.1:6381\", e.g.\n //\n // default is None\n // {\"cluster_endpoints\", \"...\"},\n\n // The maximum number of connections allowed.\n //\n // default is 10\n // {\"connection_pool_max_size\", \"1000\"},\n\n // the username to connect redis service.\n //\n // default is None\n // {\"username\", \"...\"},\n\n // the password for authentication\n //\n // default is None\n // {\"password\", \"...\"},\n\n // the working directory of the Redis service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // {\"root\", \"...\"},\n\n // the number of DBs redis can take is unlimited\n //\n // default is db 0\n {\"db\", \"1000\"},\n\n // The default ttl for put operations.\n // {\"default_ttl\", \"10s\"},\n};\nopendal::Operator operator(\"redis\", config);" } ] }, @@ -3473,20 +4447,38 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"rocksdb\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"rocksdb\", [\n // The path to the rocksdb data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"rocksdb\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"rocksdb\", [\n // The path to the rocksdb data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"rocksdb\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"rocksdb\",\n # The path to the rocksdb data directory.\n # datadir=\"...\",\n\n # the working directory of the service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"rocksdb\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"rocksdb\",\n # The path to the rocksdb data directory.\n # datadir=\"...\",\n\n # the working directory of the service. Can be \"/path/to/dir\"\n #\n # default is \"/\"\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"rocksdb\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"rocksdb\", {\n // The path to the rocksdb data directory.\n // datadir: \"...\",\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"rocksdb\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"rocksdb\", {\n // The path to the rocksdb data directory.\n // datadir: \"...\",\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // root: \"...\",\n});" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/rocksdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(rocksdb.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/rocksdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(rocksdb.Scheme, opendal.OperatorOptions{\n\t// The path to the rocksdb data directory.\n\t// \"datadir\": \"...\",\n\n\t// the working directory of the service. Can be \"/path/to/dir\"\n\t//\n\t// default is \"/\"\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"rocksdb\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The path to the rocksdb data directory.\n// opendal_operator_options_set(options, \"datadir\", \"...\");\n\n// the working directory of the service. Can be \"/path/to/dir\"\n//\n// default is \"/\"\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"rocksdb\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"rocksdb\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The path to the rocksdb data directory.\n // {\"datadir\", \"...\"},\n\n // the working directory of the service. Can be \"/path/to/dir\"\n //\n // default is \"/\"\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"rocksdb\", config);" } ] }, @@ -3770,26 +4762,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"s3\", [\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"s3\", [\n // --- General ---\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // (\"root\".to_string(), \"/\".to_string()),\n\n // bucket name of this backend.\n //\n // required.\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n // - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n // - Aliyun OSS: `https://{region}.aliyuncs.com`\n // - Tencent COS: `https://cos.{region}.myqcloud.com`\n // - Minio: `http://127.0.0.1:9000`\n //\n // If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n // will prepend \"https://\" before it.\n //\n // - If endpoint is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `https://s3.amazonaws.com`.\n // (\"endpoint\".to_string(), \"https://s3.amazonaws.com\".to_string()),\n\n // Region represent the signing region of this endpoint. This is required\n // if you are using the default AWS S3 endpoint.\n //\n // If using a custom endpoint,\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"region\".to_string(), \"us-east-1\".to_string()),\n\n // --- Credentials ---\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"secret_access_key\".to_string(), \"...\".to_string()),\n\n // session_token (aka, security token) of this backend.\n //\n // This token will expire after sometime, it's recommended to set session_token\n // by hand.\n // (\"session_token\".to_string(), \"...\".to_string()),\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n //\n // - envs like `AWS_ACCESS_KEY_ID`\n // - files like `~/.aws/config`\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n\n // Disable load credential from ec2 metadata.\n //\n // This option is used to disable the default behavior of opendal\n // to load credential from ec2 metadata, a.k.a., IMDSv2\n // (\"disable_ec2_metadata\".to_string(), \"true\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n\n // --- Assume role ---\n // role_arn for this backend.\n //\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n // (\"role_arn\".to_string(), \"...\".to_string()),\n\n // external_id for this backend.\n // (\"external_id\".to_string(), \"...\".to_string()),\n\n // role_session_name for this backend.\n // (\"role_session_name\".to_string(), \"...\".to_string()),\n\n // assume_role_duration_seconds for this backend.\n // (\"assume_role_duration_seconds\".to_string(), \"1000\".to_string()),\n\n // assume_role_session_tags for this backend.\n // (\"assume_role_session_tags\".to_string(), \"...\".to_string()),\n\n // --- Encryption ---\n // server_side_encryption for this backend.\n //\n // Available values: `AES256`, `aws:kms`.\n // (\"server_side_encryption\".to_string(), \"...\".to_string()),\n\n // server_side_encryption_aws_kms_key_id for this backend\n //\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is not set, S3 will use aws managed kms key to encrypt data.\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is a valid kms key id, S3 will use the provided kms key to encrypt data.\n // - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n // returned.\n // - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n // is a noop.\n // (\"server_side_encryption_aws_kms_key_id\".to_string(), \"...\".to_string()),\n\n // server_side_encryption_customer_algorithm for this backend.\n //\n // Available values: `AES256`.\n // (\"server_side_encryption_customer_algorithm\".to_string(), \"...\".to_string()),\n\n // server_side_encryption_customer_key for this backend.\n //\n // Value: BASE64-encoded key that matches algorithm specified in\n // `server_side_encryption_customer_algorithm`.\n // (\"server_side_encryption_customer_key\".to_string(), \"...\".to_string()),\n\n // Set server_side_encryption_customer_key_md5 for this backend.\n //\n // Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n // (\"server_side_encryption_customer_key_md5\".to_string(), \"...\".to_string()),\n\n // --- Behavior ---\n // default storage_class for this backend.\n //\n // Available values:\n // - `DEEP_ARCHIVE`\n // - `GLACIER`\n // - `GLACIER_IR`\n // - `INTELLIGENT_TIERING`\n // - `ONEZONE_IA`\n // - `EXPRESS_ONEZONE`\n // - `OUTPOSTS`\n // - `REDUCED_REDUNDANCY`\n // - `STANDARD`\n // - `STANDARD_IA`\n //\n // S3 compatible services don't support all of them\n // (\"default_storage_class\".to_string(), \"...\".to_string()),\n\n // Enable virtual host style so that opendal will send API requests\n // in virtual host style instead of path style.\n //\n // - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n // - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n // (\"enable_virtual_host_style\".to_string(), \"true\".to_string()),\n\n // Checksum Algorithm to use when sending checksums in HTTP headers.\n // This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n //\n // Available options:\n // - \"crc32c\"\n // - \"md5\"\n // (\"checksum_algorithm\".to_string(), \"...\".to_string()),\n\n // OpenDAL uses List Objects V2 by default to list objects.\n // However, some legacy services do not yet support V2.\n // This option allows users to switch back to the older List Objects V1.\n // (\"disable_list_objects_v2\".to_string(), \"true\".to_string()),\n\n // Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n // (\"enable_request_payer\".to_string(), \"true\".to_string()),\n\n // Default ACL for new objects.\n // Note that some s3 services like minio do not support this option.\n // (\"default_acl\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"s3\", [\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"s3\", [\n // --- General ---\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // (\"root\".to_string(), \"/\".to_string()),\n\n // bucket name of this backend.\n //\n // required.\n (\"bucket\".to_string(), \"my-bucket\".to_string()),\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n // - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n // - Aliyun OSS: `https://{region}.aliyuncs.com`\n // - Tencent COS: `https://cos.{region}.myqcloud.com`\n // - Minio: `http://127.0.0.1:9000`\n //\n // If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n // will prepend \"https://\" before it.\n //\n // - If endpoint is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `https://s3.amazonaws.com`.\n // (\"endpoint\".to_string(), \"https://s3.amazonaws.com\".to_string()),\n\n // Region represent the signing region of this endpoint. This is required\n // if you are using the default AWS S3 endpoint.\n //\n // If using a custom endpoint,\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"region\".to_string(), \"us-east-1\".to_string()),\n // --- Credentials ---\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"secret_access_key\".to_string(), \"...\".to_string()),\n\n // session_token (aka, security token) of this backend.\n //\n // This token will expire after sometime, it's recommended to set session_token\n // by hand.\n // (\"session_token\".to_string(), \"...\".to_string()),\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n //\n // - envs like `AWS_ACCESS_KEY_ID`\n // - files like `~/.aws/config`\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n\n // Disable load credential from ec2 metadata.\n //\n // This option is used to disable the default behavior of opendal\n // to load credential from ec2 metadata, a.k.a., IMDSv2\n // (\"disable_ec2_metadata\".to_string(), \"true\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n // --- Assume role ---\n // role_arn for this backend.\n //\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n // (\"role_arn\".to_string(), \"...\".to_string()),\n\n // external_id for this backend.\n // (\"external_id\".to_string(), \"...\".to_string()),\n\n // role_session_name for this backend.\n // (\"role_session_name\".to_string(), \"...\".to_string()),\n\n // assume_role_duration_seconds for this backend.\n // (\"assume_role_duration_seconds\".to_string(), \"1000\".to_string()),\n\n // assume_role_session_tags for this backend.\n // (\"assume_role_session_tags\".to_string(), \"...\".to_string()),\n // --- Encryption ---\n // server_side_encryption for this backend.\n //\n // Available values: `AES256`, `aws:kms`.\n // (\"server_side_encryption\".to_string(), \"...\".to_string()),\n\n // server_side_encryption_aws_kms_key_id for this backend\n //\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is not set, S3 will use aws managed kms key to encrypt data.\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is a valid kms key id, S3 will use the provided kms key to encrypt data.\n // - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n // returned.\n // - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n // is a noop.\n // (\"server_side_encryption_aws_kms_key_id\".to_string(), \"...\".to_string()),\n\n // server_side_encryption_customer_algorithm for this backend.\n //\n // Available values: `AES256`.\n // (\"server_side_encryption_customer_algorithm\".to_string(), \"...\".to_string()),\n\n // server_side_encryption_customer_key for this backend.\n //\n // Value: BASE64-encoded key that matches algorithm specified in\n // `server_side_encryption_customer_algorithm`.\n // (\"server_side_encryption_customer_key\".to_string(), \"...\".to_string()),\n\n // Set server_side_encryption_customer_key_md5 for this backend.\n //\n // Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n // (\"server_side_encryption_customer_key_md5\".to_string(), \"...\".to_string()),\n // --- Behavior ---\n // default storage_class for this backend.\n //\n // Available values:\n // - `DEEP_ARCHIVE`\n // - `GLACIER`\n // - `GLACIER_IR`\n // - `INTELLIGENT_TIERING`\n // - `ONEZONE_IA`\n // - `EXPRESS_ONEZONE`\n // - `OUTPOSTS`\n // - `REDUCED_REDUNDANCY`\n // - `STANDARD`\n // - `STANDARD_IA`\n //\n // S3 compatible services don't support all of them\n // (\"default_storage_class\".to_string(), \"...\".to_string()),\n\n // Enable virtual host style so that opendal will send API requests\n // in virtual host style instead of path style.\n //\n // - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n // - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n // (\"enable_virtual_host_style\".to_string(), \"true\".to_string()),\n\n // Checksum Algorithm to use when sending checksums in HTTP headers.\n // This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n //\n // Available options:\n // - \"crc32c\"\n // - \"md5\"\n // (\"checksum_algorithm\".to_string(), \"...\".to_string()),\n\n // OpenDAL uses List Objects V2 by default to list objects.\n // However, some legacy services do not yet support V2.\n // This option allows users to switch back to the older List Objects V1.\n // (\"disable_list_objects_v2\".to_string(), \"true\".to_string()),\n\n // Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n // (\"enable_request_payer\".to_string(), \"true\".to_string()),\n\n // Default ACL for new objects.\n // Note that some s3 services like minio do not support this option.\n // (\"default_acl\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"bucket\", \"my-bucket\");\nOperator operator = Operator.of(\"s3\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// --- General ---\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// config.put(\"root\", \"/\");\n\n// bucket name of this backend.\n//\n// required.\nconfig.put(\"bucket\", \"my-bucket\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, e.g.\n//\n// - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n// - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n// - Aliyun OSS: `https://{region}.aliyuncs.com`\n// - Tencent COS: `https://cos.{region}.myqcloud.com`\n// - Minio: `http://127.0.0.1:9000`\n//\n// If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n// will prepend \"https://\" before it.\n//\n// - If endpoint is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// - If still not set, default to `https://s3.amazonaws.com`.\n// config.put(\"endpoint\", \"https://s3.amazonaws.com\");\n\n// Region represent the signing region of this endpoint. This is required\n// if you are using the default AWS S3 endpoint.\n//\n// If using a custom endpoint,\n// - If region is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"region\", \"us-east-1\");\n// --- Credentials ---\n// access_key_id of this backend.\n//\n// - If access_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"access_key_id\", \"...\");\n\n// secret_access_key of this backend.\n//\n// - If secret_access_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"secret_access_key\", \"...\");\n\n// session_token (aka, security token) of this backend.\n//\n// This token will expire after sometime, it's recommended to set session_token\n// by hand.\n// config.put(\"session_token\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// environment.\n//\n// For examples:\n//\n// - envs like `AWS_ACCESS_KEY_ID`\n// - files like `~/.aws/config`\n// config.put(\"disable_config_load\", \"true\");\n\n// Disable load credential from ec2 metadata.\n//\n// This option is used to disable the default behavior of opendal\n// to load credential from ec2 metadata, a.k.a., IMDSv2\n// config.put(\"disable_ec2_metadata\", \"true\");\n\n// Skip signature will skip loading credentials and signing requests.\n// config.put(\"skip_signature\", \"true\");\n// --- Assume role ---\n// role_arn for this backend.\n//\n// If `role_arn` is set, we will use already known config as source\n// credential to assume role with `role_arn`.\n// config.put(\"role_arn\", \"...\");\n\n// external_id for this backend.\n// config.put(\"external_id\", \"...\");\n\n// role_session_name for this backend.\n// config.put(\"role_session_name\", \"...\");\n\n// assume_role_duration_seconds for this backend.\n// config.put(\"assume_role_duration_seconds\", \"1000\");\n\n// assume_role_session_tags for this backend.\n// config.put(\"assume_role_session_tags\", \"...\");\n// --- Encryption ---\n// server_side_encryption for this backend.\n//\n// Available values: `AES256`, `aws:kms`.\n// config.put(\"server_side_encryption\", \"...\");\n\n// server_side_encryption_aws_kms_key_id for this backend\n//\n// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n// is not set, S3 will use aws managed kms key to encrypt data.\n// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n// is a valid kms key id, S3 will use the provided kms key to encrypt data.\n// - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n// returned.\n// - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n// is a noop.\n// config.put(\"server_side_encryption_aws_kms_key_id\", \"...\");\n\n// server_side_encryption_customer_algorithm for this backend.\n//\n// Available values: `AES256`.\n// config.put(\"server_side_encryption_customer_algorithm\", \"...\");\n\n// server_side_encryption_customer_key for this backend.\n//\n// Value: BASE64-encoded key that matches algorithm specified in\n// `server_side_encryption_customer_algorithm`.\n// config.put(\"server_side_encryption_customer_key\", \"...\");\n\n// Set server_side_encryption_customer_key_md5 for this backend.\n//\n// Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n// config.put(\"server_side_encryption_customer_key_md5\", \"...\");\n// --- Behavior ---\n// default storage_class for this backend.\n//\n// Available values:\n// - `DEEP_ARCHIVE`\n// - `GLACIER`\n// - `GLACIER_IR`\n// - `INTELLIGENT_TIERING`\n// - `ONEZONE_IA`\n// - `EXPRESS_ONEZONE`\n// - `OUTPOSTS`\n// - `REDUCED_REDUNDANCY`\n// - `STANDARD`\n// - `STANDARD_IA`\n//\n// S3 compatible services don't support all of them\n// config.put(\"default_storage_class\", \"...\");\n\n// Enable virtual host style so that opendal will send API requests\n// in virtual host style instead of path style.\n//\n// - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n// - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n// config.put(\"enable_virtual_host_style\", \"true\");\n\n// Checksum Algorithm to use when sending checksums in HTTP headers.\n// This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n//\n// Available options:\n// - \"crc32c\"\n// - \"md5\"\n// config.put(\"checksum_algorithm\", \"...\");\n\n// OpenDAL uses List Objects V2 by default to list objects.\n// However, some legacy services do not yet support V2.\n// This option allows users to switch back to the older List Objects V1.\n// config.put(\"disable_list_objects_v2\", \"true\");\n\n// Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n// config.put(\"enable_request_payer\", \"true\");\n\n// Default ACL for new objects.\n// Note that some s3 services like minio do not support this option.\n// config.put(\"default_acl\", \"...\");\nOperator operator = Operator.of(\"s3\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"s3\",\n bucket=\"my-bucket\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"s3\",\n # --- General ---\n # root of this backend.\n #\n # All operations will happen under this root.\n #\n # default to `/` if not set.\n # root=\"/\",\n\n # bucket name of this backend.\n #\n # required.\n bucket=\"my-bucket\",\n\n # endpoint of this backend.\n #\n # Endpoint must be full uri, e.g.\n #\n # - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n # - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n # - Aliyun OSS: `https://{region}.aliyuncs.com`\n # - Tencent COS: `https://cos.{region}.myqcloud.com`\n # - Minio: `http://127.0.0.1:9000`\n #\n # If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n # will prepend \"https://\" before it.\n #\n # - If endpoint is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # - If still not set, default to `https://s3.amazonaws.com`.\n # endpoint=\"https://s3.amazonaws.com\",\n\n # Region represent the signing region of this endpoint. This is required\n # if you are using the default AWS S3 endpoint.\n #\n # If using a custom endpoint,\n # - If region is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # region=\"us-east-1\",\n\n # --- Credentials ---\n # access_key_id of this backend.\n #\n # - If access_key_id is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # access_key_id=\"...\",\n\n # secret_access_key of this backend.\n #\n # - If secret_access_key is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # secret_access_key=\"...\",\n\n # session_token (aka, security token) of this backend.\n #\n # This token will expire after sometime, it's recommended to set session_token\n # by hand.\n # session_token=\"...\",\n\n # Disable config load so that opendal will not load config from\n # environment.\n #\n # For examples:\n #\n # - envs like `AWS_ACCESS_KEY_ID`\n # - files like `~/.aws/config`\n # disable_config_load=\"true\",\n\n # Disable load credential from ec2 metadata.\n #\n # This option is used to disable the default behavior of opendal\n # to load credential from ec2 metadata, a.k.a., IMDSv2\n # disable_ec2_metadata=\"true\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n\n # --- Assume role ---\n # role_arn for this backend.\n #\n # If `role_arn` is set, we will use already known config as source\n # credential to assume role with `role_arn`.\n # role_arn=\"...\",\n\n # external_id for this backend.\n # external_id=\"...\",\n\n # role_session_name for this backend.\n # role_session_name=\"...\",\n\n # assume_role_duration_seconds for this backend.\n # assume_role_duration_seconds=\"1000\",\n\n # assume_role_session_tags for this backend.\n # assume_role_session_tags=\"...\",\n\n # --- Encryption ---\n # server_side_encryption for this backend.\n #\n # Available values: `AES256`, `aws:kms`.\n # server_side_encryption=\"...\",\n\n # server_side_encryption_aws_kms_key_id for this backend\n #\n # - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n # is not set, S3 will use aws managed kms key to encrypt data.\n # - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n # is a valid kms key id, S3 will use the provided kms key to encrypt data.\n # - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n # returned.\n # - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n # is a noop.\n # server_side_encryption_aws_kms_key_id=\"...\",\n\n # server_side_encryption_customer_algorithm for this backend.\n #\n # Available values: `AES256`.\n # server_side_encryption_customer_algorithm=\"...\",\n\n # server_side_encryption_customer_key for this backend.\n #\n # Value: BASE64-encoded key that matches algorithm specified in\n # `server_side_encryption_customer_algorithm`.\n # server_side_encryption_customer_key=\"...\",\n\n # Set server_side_encryption_customer_key_md5 for this backend.\n #\n # Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n # server_side_encryption_customer_key_md5=\"...\",\n\n # --- Behavior ---\n # default storage_class for this backend.\n #\n # Available values:\n # - `DEEP_ARCHIVE`\n # - `GLACIER`\n # - `GLACIER_IR`\n # - `INTELLIGENT_TIERING`\n # - `ONEZONE_IA`\n # - `EXPRESS_ONEZONE`\n # - `OUTPOSTS`\n # - `REDUCED_REDUNDANCY`\n # - `STANDARD`\n # - `STANDARD_IA`\n #\n # S3 compatible services don't support all of them\n # default_storage_class=\"...\",\n\n # Enable virtual host style so that opendal will send API requests\n # in virtual host style instead of path style.\n #\n # - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n # - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n # enable_virtual_host_style=\"true\",\n\n # Checksum Algorithm to use when sending checksums in HTTP headers.\n # This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n #\n # Available options:\n # - \"crc32c\"\n # - \"md5\"\n # checksum_algorithm=\"...\",\n\n # OpenDAL uses List Objects V2 by default to list objects.\n # However, some legacy services do not yet support V2.\n # This option allows users to switch back to the older List Objects V1.\n # disable_list_objects_v2=\"true\",\n\n # Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n # enable_request_payer=\"true\",\n\n # Default ACL for new objects.\n # Note that some s3 services like minio do not support this option.\n # default_acl=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"s3\",\n bucket=\"my-bucket\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"s3\",\n # --- General ---\n # root of this backend.\n #\n # All operations will happen under this root.\n #\n # default to `/` if not set.\n # root=\"/\",\n\n # bucket name of this backend.\n #\n # required.\n bucket=\"my-bucket\",\n\n # endpoint of this backend.\n #\n # Endpoint must be full uri, e.g.\n #\n # - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n # - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n # - Aliyun OSS: `https://{region}.aliyuncs.com`\n # - Tencent COS: `https://cos.{region}.myqcloud.com`\n # - Minio: `http://127.0.0.1:9000`\n #\n # If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n # will prepend \"https://\" before it.\n #\n # - If endpoint is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # - If still not set, default to `https://s3.amazonaws.com`.\n # endpoint=\"https://s3.amazonaws.com\",\n\n # Region represent the signing region of this endpoint. This is required\n # if you are using the default AWS S3 endpoint.\n #\n # If using a custom endpoint,\n # - If region is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # region=\"us-east-1\",\n # --- Credentials ---\n # access_key_id of this backend.\n #\n # - If access_key_id is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # access_key_id=\"...\",\n\n # secret_access_key of this backend.\n #\n # - If secret_access_key is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # secret_access_key=\"...\",\n\n # session_token (aka, security token) of this backend.\n #\n # This token will expire after sometime, it's recommended to set session_token\n # by hand.\n # session_token=\"...\",\n\n # Disable config load so that opendal will not load config from\n # environment.\n #\n # For examples:\n #\n # - envs like `AWS_ACCESS_KEY_ID`\n # - files like `~/.aws/config`\n # disable_config_load=\"true\",\n\n # Disable load credential from ec2 metadata.\n #\n # This option is used to disable the default behavior of opendal\n # to load credential from ec2 metadata, a.k.a., IMDSv2\n # disable_ec2_metadata=\"true\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n # --- Assume role ---\n # role_arn for this backend.\n #\n # If `role_arn` is set, we will use already known config as source\n # credential to assume role with `role_arn`.\n # role_arn=\"...\",\n\n # external_id for this backend.\n # external_id=\"...\",\n\n # role_session_name for this backend.\n # role_session_name=\"...\",\n\n # assume_role_duration_seconds for this backend.\n # assume_role_duration_seconds=\"1000\",\n\n # assume_role_session_tags for this backend.\n # assume_role_session_tags=\"...\",\n # --- Encryption ---\n # server_side_encryption for this backend.\n #\n # Available values: `AES256`, `aws:kms`.\n # server_side_encryption=\"...\",\n\n # server_side_encryption_aws_kms_key_id for this backend\n #\n # - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n # is not set, S3 will use aws managed kms key to encrypt data.\n # - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n # is a valid kms key id, S3 will use the provided kms key to encrypt data.\n # - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n # returned.\n # - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n # is a noop.\n # server_side_encryption_aws_kms_key_id=\"...\",\n\n # server_side_encryption_customer_algorithm for this backend.\n #\n # Available values: `AES256`.\n # server_side_encryption_customer_algorithm=\"...\",\n\n # server_side_encryption_customer_key for this backend.\n #\n # Value: BASE64-encoded key that matches algorithm specified in\n # `server_side_encryption_customer_algorithm`.\n # server_side_encryption_customer_key=\"...\",\n\n # Set server_side_encryption_customer_key_md5 for this backend.\n #\n # Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n # server_side_encryption_customer_key_md5=\"...\",\n # --- Behavior ---\n # default storage_class for this backend.\n #\n # Available values:\n # - `DEEP_ARCHIVE`\n # - `GLACIER`\n # - `GLACIER_IR`\n # - `INTELLIGENT_TIERING`\n # - `ONEZONE_IA`\n # - `EXPRESS_ONEZONE`\n # - `OUTPOSTS`\n # - `REDUCED_REDUNDANCY`\n # - `STANDARD`\n # - `STANDARD_IA`\n #\n # S3 compatible services don't support all of them\n # default_storage_class=\"...\",\n\n # Enable virtual host style so that opendal will send API requests\n # in virtual host style instead of path style.\n #\n # - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n # - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n # enable_virtual_host_style=\"true\",\n\n # Checksum Algorithm to use when sending checksums in HTTP headers.\n # This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n #\n # Available options:\n # - \"crc32c\"\n # - \"md5\"\n # checksum_algorithm=\"...\",\n\n # OpenDAL uses List Objects V2 by default to list objects.\n # However, some legacy services do not yet support V2.\n # This option allows users to switch back to the older List Objects V1.\n # disable_list_objects_v2=\"true\",\n\n # Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n # enable_request_payer=\"true\",\n\n # Default ACL for new objects.\n # Note that some s3 services like minio do not support this option.\n # default_acl=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"s3\", {\n bucket: \"my-bucket\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"s3\", {\n // --- General ---\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // root: \"/\",\n\n // bucket name of this backend.\n //\n // required.\n bucket: \"my-bucket\",\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n // - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n // - Aliyun OSS: `https://{region}.aliyuncs.com`\n // - Tencent COS: `https://cos.{region}.myqcloud.com`\n // - Minio: `http://127.0.0.1:9000`\n //\n // If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n // will prepend \"https://\" before it.\n //\n // - If endpoint is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `https://s3.amazonaws.com`.\n // endpoint: \"https://s3.amazonaws.com\",\n\n // Region represent the signing region of this endpoint. This is required\n // if you are using the default AWS S3 endpoint.\n //\n // If using a custom endpoint,\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // region: \"us-east-1\",\n\n // --- Credentials ---\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // access_key_id: \"...\",\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // secret_access_key: \"...\",\n\n // session_token (aka, security token) of this backend.\n //\n // This token will expire after sometime, it's recommended to set session_token\n // by hand.\n // session_token: \"...\",\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n //\n // - envs like `AWS_ACCESS_KEY_ID`\n // - files like `~/.aws/config`\n // disable_config_load: \"true\",\n\n // Disable load credential from ec2 metadata.\n //\n // This option is used to disable the default behavior of opendal\n // to load credential from ec2 metadata, a.k.a., IMDSv2\n // disable_ec2_metadata: \"true\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n\n // --- Assume role ---\n // role_arn for this backend.\n //\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n // role_arn: \"...\",\n\n // external_id for this backend.\n // external_id: \"...\",\n\n // role_session_name for this backend.\n // role_session_name: \"...\",\n\n // assume_role_duration_seconds for this backend.\n // assume_role_duration_seconds: \"1000\",\n\n // assume_role_session_tags for this backend.\n // assume_role_session_tags: \"...\",\n\n // --- Encryption ---\n // server_side_encryption for this backend.\n //\n // Available values: `AES256`, `aws:kms`.\n // server_side_encryption: \"...\",\n\n // server_side_encryption_aws_kms_key_id for this backend\n //\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is not set, S3 will use aws managed kms key to encrypt data.\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is a valid kms key id, S3 will use the provided kms key to encrypt data.\n // - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n // returned.\n // - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n // is a noop.\n // server_side_encryption_aws_kms_key_id: \"...\",\n\n // server_side_encryption_customer_algorithm for this backend.\n //\n // Available values: `AES256`.\n // server_side_encryption_customer_algorithm: \"...\",\n\n // server_side_encryption_customer_key for this backend.\n //\n // Value: BASE64-encoded key that matches algorithm specified in\n // `server_side_encryption_customer_algorithm`.\n // server_side_encryption_customer_key: \"...\",\n\n // Set server_side_encryption_customer_key_md5 for this backend.\n //\n // Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n // server_side_encryption_customer_key_md5: \"...\",\n\n // --- Behavior ---\n // default storage_class for this backend.\n //\n // Available values:\n // - `DEEP_ARCHIVE`\n // - `GLACIER`\n // - `GLACIER_IR`\n // - `INTELLIGENT_TIERING`\n // - `ONEZONE_IA`\n // - `EXPRESS_ONEZONE`\n // - `OUTPOSTS`\n // - `REDUCED_REDUNDANCY`\n // - `STANDARD`\n // - `STANDARD_IA`\n //\n // S3 compatible services don't support all of them\n // default_storage_class: \"...\",\n\n // Enable virtual host style so that opendal will send API requests\n // in virtual host style instead of path style.\n //\n // - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n // - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n // enable_virtual_host_style: \"true\",\n\n // Checksum Algorithm to use when sending checksums in HTTP headers.\n // This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n //\n // Available options:\n // - \"crc32c\"\n // - \"md5\"\n // checksum_algorithm: \"...\",\n\n // OpenDAL uses List Objects V2 by default to list objects.\n // However, some legacy services do not yet support V2.\n // This option allows users to switch back to the older List Objects V1.\n // disable_list_objects_v2: \"true\",\n\n // Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n // enable_request_payer: \"true\",\n\n // Default ACL for new objects.\n // Note that some s3 services like minio do not support this option.\n // default_acl: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"s3\", {\n bucket: \"my-bucket\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"s3\", {\n // --- General ---\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // root: \"/\",\n\n // bucket name of this backend.\n //\n // required.\n bucket: \"my-bucket\",\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n // - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n // - Aliyun OSS: `https://{region}.aliyuncs.com`\n // - Tencent COS: `https://cos.{region}.myqcloud.com`\n // - Minio: `http://127.0.0.1:9000`\n //\n // If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n // will prepend \"https://\" before it.\n //\n // - If endpoint is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `https://s3.amazonaws.com`.\n // endpoint: \"https://s3.amazonaws.com\",\n\n // Region represent the signing region of this endpoint. This is required\n // if you are using the default AWS S3 endpoint.\n //\n // If using a custom endpoint,\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // region: \"us-east-1\",\n // --- Credentials ---\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // access_key_id: \"...\",\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // secret_access_key: \"...\",\n\n // session_token (aka, security token) of this backend.\n //\n // This token will expire after sometime, it's recommended to set session_token\n // by hand.\n // session_token: \"...\",\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n //\n // - envs like `AWS_ACCESS_KEY_ID`\n // - files like `~/.aws/config`\n // disable_config_load: \"true\",\n\n // Disable load credential from ec2 metadata.\n //\n // This option is used to disable the default behavior of opendal\n // to load credential from ec2 metadata, a.k.a., IMDSv2\n // disable_ec2_metadata: \"true\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n // --- Assume role ---\n // role_arn for this backend.\n //\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n // role_arn: \"...\",\n\n // external_id for this backend.\n // external_id: \"...\",\n\n // role_session_name for this backend.\n // role_session_name: \"...\",\n\n // assume_role_duration_seconds for this backend.\n // assume_role_duration_seconds: \"1000\",\n\n // assume_role_session_tags for this backend.\n // assume_role_session_tags: \"...\",\n // --- Encryption ---\n // server_side_encryption for this backend.\n //\n // Available values: `AES256`, `aws:kms`.\n // server_side_encryption: \"...\",\n\n // server_side_encryption_aws_kms_key_id for this backend\n //\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is not set, S3 will use aws managed kms key to encrypt data.\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is a valid kms key id, S3 will use the provided kms key to encrypt data.\n // - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n // returned.\n // - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n // is a noop.\n // server_side_encryption_aws_kms_key_id: \"...\",\n\n // server_side_encryption_customer_algorithm for this backend.\n //\n // Available values: `AES256`.\n // server_side_encryption_customer_algorithm: \"...\",\n\n // server_side_encryption_customer_key for this backend.\n //\n // Value: BASE64-encoded key that matches algorithm specified in\n // `server_side_encryption_customer_algorithm`.\n // server_side_encryption_customer_key: \"...\",\n\n // Set server_side_encryption_customer_key_md5 for this backend.\n //\n // Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n // server_side_encryption_customer_key_md5: \"...\",\n // --- Behavior ---\n // default storage_class for this backend.\n //\n // Available values:\n // - `DEEP_ARCHIVE`\n // - `GLACIER`\n // - `GLACIER_IR`\n // - `INTELLIGENT_TIERING`\n // - `ONEZONE_IA`\n // - `EXPRESS_ONEZONE`\n // - `OUTPOSTS`\n // - `REDUCED_REDUNDANCY`\n // - `STANDARD`\n // - `STANDARD_IA`\n //\n // S3 compatible services don't support all of them\n // default_storage_class: \"...\",\n\n // Enable virtual host style so that opendal will send API requests\n // in virtual host style instead of path style.\n //\n // - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n // - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n // enable_virtual_host_style: \"true\",\n\n // Checksum Algorithm to use when sending checksums in HTTP headers.\n // This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n //\n // Available options:\n // - \"crc32c\"\n // - \"md5\"\n // checksum_algorithm: \"...\",\n\n // OpenDAL uses List Objects V2 by default to list objects.\n // However, some legacy services do not yet support V2.\n // This option allows users to switch back to the older List Objects V1.\n // disable_list_objects_v2: \"true\",\n\n // Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n // enable_request_payer: \"true\",\n\n // Default ACL for new objects.\n // Note that some s3 services like minio do not support this option.\n // default_acl: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"bucket\", \"my-bucket\");\nOperator op = Operator.of(\"s3\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// --- General ---\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// conf.put(\"root\", \"/\");\n\n// bucket name of this backend.\n//\n// required.\nconf.put(\"bucket\", \"my-bucket\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, e.g.\n//\n// - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n// - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n// - Aliyun OSS: `https://{region}.aliyuncs.com`\n// - Tencent COS: `https://cos.{region}.myqcloud.com`\n// - Minio: `http://127.0.0.1:9000`\n//\n// If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n// will prepend \"https://\" before it.\n//\n// - If endpoint is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// - If still not set, default to `https://s3.amazonaws.com`.\n// conf.put(\"endpoint\", \"https://s3.amazonaws.com\");\n\n// Region represent the signing region of this endpoint. This is required\n// if you are using the default AWS S3 endpoint.\n//\n// If using a custom endpoint,\n// - If region is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// conf.put(\"region\", \"us-east-1\");\n\n// --- Credentials ---\n// access_key_id of this backend.\n//\n// - If access_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// conf.put(\"access_key_id\", \"...\");\n\n// secret_access_key of this backend.\n//\n// - If secret_access_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// conf.put(\"secret_access_key\", \"...\");\n\n// session_token (aka, security token) of this backend.\n//\n// This token will expire after sometime, it's recommended to set session_token\n// by hand.\n// conf.put(\"session_token\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// environment.\n//\n// For examples:\n//\n// - envs like `AWS_ACCESS_KEY_ID`\n// - files like `~/.aws/config`\n// conf.put(\"disable_config_load\", \"true\");\n\n// Disable load credential from ec2 metadata.\n//\n// This option is used to disable the default behavior of opendal\n// to load credential from ec2 metadata, a.k.a., IMDSv2\n// conf.put(\"disable_ec2_metadata\", \"true\");\n\n// Skip signature will skip loading credentials and signing requests.\n// conf.put(\"skip_signature\", \"true\");\n\n// --- Assume role ---\n// role_arn for this backend.\n//\n// If `role_arn` is set, we will use already known config as source\n// credential to assume role with `role_arn`.\n// conf.put(\"role_arn\", \"...\");\n\n// external_id for this backend.\n// conf.put(\"external_id\", \"...\");\n\n// role_session_name for this backend.\n// conf.put(\"role_session_name\", \"...\");\n\n// assume_role_duration_seconds for this backend.\n// conf.put(\"assume_role_duration_seconds\", \"1000\");\n\n// assume_role_session_tags for this backend.\n// conf.put(\"assume_role_session_tags\", \"...\");\n\n// --- Encryption ---\n// server_side_encryption for this backend.\n//\n// Available values: `AES256`, `aws:kms`.\n// conf.put(\"server_side_encryption\", \"...\");\n\n// server_side_encryption_aws_kms_key_id for this backend\n//\n// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n// is not set, S3 will use aws managed kms key to encrypt data.\n// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n// is a valid kms key id, S3 will use the provided kms key to encrypt data.\n// - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n// returned.\n// - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n// is a noop.\n// conf.put(\"server_side_encryption_aws_kms_key_id\", \"...\");\n\n// server_side_encryption_customer_algorithm for this backend.\n//\n// Available values: `AES256`.\n// conf.put(\"server_side_encryption_customer_algorithm\", \"...\");\n\n// server_side_encryption_customer_key for this backend.\n//\n// Value: BASE64-encoded key that matches algorithm specified in\n// `server_side_encryption_customer_algorithm`.\n// conf.put(\"server_side_encryption_customer_key\", \"...\");\n\n// Set server_side_encryption_customer_key_md5 for this backend.\n//\n// Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n// conf.put(\"server_side_encryption_customer_key_md5\", \"...\");\n\n// --- Behavior ---\n// default storage_class for this backend.\n//\n// Available values:\n// - `DEEP_ARCHIVE`\n// - `GLACIER`\n// - `GLACIER_IR`\n// - `INTELLIGENT_TIERING`\n// - `ONEZONE_IA`\n// - `EXPRESS_ONEZONE`\n// - `OUTPOSTS`\n// - `REDUCED_REDUNDANCY`\n// - `STANDARD`\n// - `STANDARD_IA`\n//\n// S3 compatible services don't support all of them\n// conf.put(\"default_storage_class\", \"...\");\n\n// Enable virtual host style so that opendal will send API requests\n// in virtual host style instead of path style.\n//\n// - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n// - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n// conf.put(\"enable_virtual_host_style\", \"true\");\n\n// Checksum Algorithm to use when sending checksums in HTTP headers.\n// This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n//\n// Available options:\n// - \"crc32c\"\n// - \"md5\"\n// conf.put(\"checksum_algorithm\", \"...\");\n\n// OpenDAL uses List Objects V2 by default to list objects.\n// However, some legacy services do not yet support V2.\n// This option allows users to switch back to the older List Objects V1.\n// conf.put(\"disable_list_objects_v2\", \"true\");\n\n// Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n// conf.put(\"enable_request_payer\", \"true\");\n\n// Default ACL for new objects.\n// Note that some s3 services like minio do not support this option.\n// conf.put(\"default_acl\", \"...\");\n\nOperator op = Operator.of(\"s3\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"s3\", {\n \"bucket\" => \"my-bucket\",\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"s3\", {\n # --- General ---\n # root of this backend.\n #\n # All operations will happen under this root.\n #\n # default to `/` if not set.\n # \"root\" => \"/\",\n\n # bucket name of this backend.\n #\n # required.\n \"bucket\" => \"my-bucket\",\n\n # endpoint of this backend.\n #\n # Endpoint must be full uri, e.g.\n #\n # - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n # - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n # - Aliyun OSS: `https://{region}.aliyuncs.com`\n # - Tencent COS: `https://cos.{region}.myqcloud.com`\n # - Minio: `http://127.0.0.1:9000`\n #\n # If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n # will prepend \"https://\" before it.\n #\n # - If endpoint is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # - If still not set, default to `https://s3.amazonaws.com`.\n # \"endpoint\" => \"https://s3.amazonaws.com\",\n\n # Region represent the signing region of this endpoint. This is required\n # if you are using the default AWS S3 endpoint.\n #\n # If using a custom endpoint,\n # - If region is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # \"region\" => \"us-east-1\",\n # --- Credentials ---\n # access_key_id of this backend.\n #\n # - If access_key_id is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # \"access_key_id\" => \"...\",\n\n # secret_access_key of this backend.\n #\n # - If secret_access_key is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # \"secret_access_key\" => \"...\",\n\n # session_token (aka, security token) of this backend.\n #\n # This token will expire after sometime, it's recommended to set session_token\n # by hand.\n # \"session_token\" => \"...\",\n\n # Disable config load so that opendal will not load config from\n # environment.\n #\n # For examples:\n #\n # - envs like `AWS_ACCESS_KEY_ID`\n # - files like `~/.aws/config`\n # \"disable_config_load\" => \"true\",\n\n # Disable load credential from ec2 metadata.\n #\n # This option is used to disable the default behavior of opendal\n # to load credential from ec2 metadata, a.k.a., IMDSv2\n # \"disable_ec2_metadata\" => \"true\",\n\n # Skip signature will skip loading credentials and signing requests.\n # \"skip_signature\" => \"true\",\n # --- Assume role ---\n # role_arn for this backend.\n #\n # If `role_arn` is set, we will use already known config as source\n # credential to assume role with `role_arn`.\n # \"role_arn\" => \"...\",\n\n # external_id for this backend.\n # \"external_id\" => \"...\",\n\n # role_session_name for this backend.\n # \"role_session_name\" => \"...\",\n\n # assume_role_duration_seconds for this backend.\n # \"assume_role_duration_seconds\" => \"1000\",\n\n # assume_role_session_tags for this backend.\n # \"assume_role_session_tags\" => \"...\",\n # --- Encryption ---\n # server_side_encryption for this backend.\n #\n # Available values: `AES256`, `aws:kms`.\n # \"server_side_encryption\" => \"...\",\n\n # server_side_encryption_aws_kms_key_id for this backend\n #\n # - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n # is not set, S3 will use aws managed kms key to encrypt data.\n # - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n # is a valid kms key id, S3 will use the provided kms key to encrypt data.\n # - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n # returned.\n # - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n # is a noop.\n # \"server_side_encryption_aws_kms_key_id\" => \"...\",\n\n # server_side_encryption_customer_algorithm for this backend.\n #\n # Available values: `AES256`.\n # \"server_side_encryption_customer_algorithm\" => \"...\",\n\n # server_side_encryption_customer_key for this backend.\n #\n # Value: BASE64-encoded key that matches algorithm specified in\n # `server_side_encryption_customer_algorithm`.\n # \"server_side_encryption_customer_key\" => \"...\",\n\n # Set server_side_encryption_customer_key_md5 for this backend.\n #\n # Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n # \"server_side_encryption_customer_key_md5\" => \"...\",\n # --- Behavior ---\n # default storage_class for this backend.\n #\n # Available values:\n # - `DEEP_ARCHIVE`\n # - `GLACIER`\n # - `GLACIER_IR`\n # - `INTELLIGENT_TIERING`\n # - `ONEZONE_IA`\n # - `EXPRESS_ONEZONE`\n # - `OUTPOSTS`\n # - `REDUCED_REDUNDANCY`\n # - `STANDARD`\n # - `STANDARD_IA`\n #\n # S3 compatible services don't support all of them\n # \"default_storage_class\" => \"...\",\n\n # Enable virtual host style so that opendal will send API requests\n # in virtual host style instead of path style.\n #\n # - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n # - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n # \"enable_virtual_host_style\" => \"true\",\n\n # Checksum Algorithm to use when sending checksums in HTTP headers.\n # This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n #\n # Available options:\n # - \"crc32c\"\n # - \"md5\"\n # \"checksum_algorithm\" => \"...\",\n\n # OpenDAL uses List Objects V2 by default to list objects.\n # However, some legacy services do not yet support V2.\n # This option allows users to switch back to the older List Objects V1.\n # \"disable_list_objects_v2\" => \"true\",\n\n # Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n # \"enable_request_payer\" => \"true\",\n\n # Default ACL for new objects.\n # Note that some s3 services like minio do not support this option.\n # \"default_acl\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/s3\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(s3.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"my-bucket\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/s3\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(s3.Scheme, opendal.OperatorOptions{\n\t// --- General ---\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// default to `/` if not set.\n\t// \"root\": \"/\",\n\n\t// bucket name of this backend.\n\t//\n\t// required.\n\t\"bucket\": \"my-bucket\",\n\n\t// endpoint of this backend.\n\t//\n\t// Endpoint must be full uri, e.g.\n\t//\n\t// - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n\t// - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n\t// - Aliyun OSS: `https://{region}.aliyuncs.com`\n\t// - Tencent COS: `https://cos.{region}.myqcloud.com`\n\t// - Minio: `http://127.0.0.1:9000`\n\t//\n\t// If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n\t// will prepend \"https://\" before it.\n\t//\n\t// - If endpoint is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// - If still not set, default to `https://s3.amazonaws.com`.\n\t// \"endpoint\": \"https://s3.amazonaws.com\",\n\n\t// Region represent the signing region of this endpoint. This is required\n\t// if you are using the default AWS S3 endpoint.\n\t//\n\t// If using a custom endpoint,\n\t// - If region is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"region\": \"us-east-1\",\n\t// --- Credentials ---\n\t// access_key_id of this backend.\n\t//\n\t// - If access_key_id is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"access_key_id\": \"...\",\n\n\t// secret_access_key of this backend.\n\t//\n\t// - If secret_access_key is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"secret_access_key\": \"...\",\n\n\t// session_token (aka, security token) of this backend.\n\t//\n\t// This token will expire after sometime, it's recommended to set session_token\n\t// by hand.\n\t// \"session_token\": \"...\",\n\n\t// Disable config load so that opendal will not load config from\n\t// environment.\n\t//\n\t// For examples:\n\t//\n\t// - envs like `AWS_ACCESS_KEY_ID`\n\t// - files like `~/.aws/config`\n\t// \"disable_config_load\": \"true\",\n\n\t// Disable load credential from ec2 metadata.\n\t//\n\t// This option is used to disable the default behavior of opendal\n\t// to load credential from ec2 metadata, a.k.a., IMDSv2\n\t// \"disable_ec2_metadata\": \"true\",\n\n\t// Skip signature will skip loading credentials and signing requests.\n\t// \"skip_signature\": \"true\",\n\t// --- Assume role ---\n\t// role_arn for this backend.\n\t//\n\t// If `role_arn` is set, we will use already known config as source\n\t// credential to assume role with `role_arn`.\n\t// \"role_arn\": \"...\",\n\n\t// external_id for this backend.\n\t// \"external_id\": \"...\",\n\n\t// role_session_name for this backend.\n\t// \"role_session_name\": \"...\",\n\n\t// assume_role_duration_seconds for this backend.\n\t// \"assume_role_duration_seconds\": \"1000\",\n\n\t// assume_role_session_tags for this backend.\n\t// \"assume_role_session_tags\": \"...\",\n\t// --- Encryption ---\n\t// server_side_encryption for this backend.\n\t//\n\t// Available values: `AES256`, `aws:kms`.\n\t// \"server_side_encryption\": \"...\",\n\n\t// server_side_encryption_aws_kms_key_id for this backend\n\t//\n\t// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n\t// is not set, S3 will use aws managed kms key to encrypt data.\n\t// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n\t// is a valid kms key id, S3 will use the provided kms key to encrypt data.\n\t// - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n\t// returned.\n\t// - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n\t// is a noop.\n\t// \"server_side_encryption_aws_kms_key_id\": \"...\",\n\n\t// server_side_encryption_customer_algorithm for this backend.\n\t//\n\t// Available values: `AES256`.\n\t// \"server_side_encryption_customer_algorithm\": \"...\",\n\n\t// server_side_encryption_customer_key for this backend.\n\t//\n\t// Value: BASE64-encoded key that matches algorithm specified in\n\t// `server_side_encryption_customer_algorithm`.\n\t// \"server_side_encryption_customer_key\": \"...\",\n\n\t// Set server_side_encryption_customer_key_md5 for this backend.\n\t//\n\t// Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n\t// \"server_side_encryption_customer_key_md5\": \"...\",\n\t// --- Behavior ---\n\t// default storage_class for this backend.\n\t//\n\t// Available values:\n\t// - `DEEP_ARCHIVE`\n\t// - `GLACIER`\n\t// - `GLACIER_IR`\n\t// - `INTELLIGENT_TIERING`\n\t// - `ONEZONE_IA`\n\t// - `EXPRESS_ONEZONE`\n\t// - `OUTPOSTS`\n\t// - `REDUCED_REDUNDANCY`\n\t// - `STANDARD`\n\t// - `STANDARD_IA`\n\t//\n\t// S3 compatible services don't support all of them\n\t// \"default_storage_class\": \"...\",\n\n\t// Enable virtual host style so that opendal will send API requests\n\t// in virtual host style instead of path style.\n\t//\n\t// - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n\t// - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n\t// \"enable_virtual_host_style\": \"true\",\n\n\t// Checksum Algorithm to use when sending checksums in HTTP headers.\n\t// This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n\t//\n\t// Available options:\n\t// - \"crc32c\"\n\t// - \"md5\"\n\t// \"checksum_algorithm\": \"...\",\n\n\t// OpenDAL uses List Objects V2 by default to list objects.\n\t// However, some legacy services do not yet support V2.\n\t// This option allows users to switch back to the older List Objects V1.\n\t// \"disable_list_objects_v2\": \"true\",\n\n\t// Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n\t// \"enable_request_payer\": \"true\",\n\n\t// Default ACL for new objects.\n\t// Note that some s3 services like minio do not support this option.\n\t// \"default_acl\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"bucket\", \"my-bucket\");\nopendal_result_operator_new result = opendal_operator_new(\"s3\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// --- General ---\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// opendal_operator_options_set(options, \"root\", \"/\");\n\n// bucket name of this backend.\n//\n// required.\nopendal_operator_options_set(options, \"bucket\", \"my-bucket\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, e.g.\n//\n// - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n// - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n// - Aliyun OSS: `https://{region}.aliyuncs.com`\n// - Tencent COS: `https://cos.{region}.myqcloud.com`\n// - Minio: `http://127.0.0.1:9000`\n//\n// If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n// will prepend \"https://\" before it.\n//\n// - If endpoint is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// - If still not set, default to `https://s3.amazonaws.com`.\n// opendal_operator_options_set(options, \"endpoint\", \"https://s3.amazonaws.com\");\n\n// Region represent the signing region of this endpoint. This is required\n// if you are using the default AWS S3 endpoint.\n//\n// If using a custom endpoint,\n// - If region is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// opendal_operator_options_set(options, \"region\", \"us-east-1\");\n// --- Credentials ---\n// access_key_id of this backend.\n//\n// - If access_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// opendal_operator_options_set(options, \"access_key_id\", \"...\");\n\n// secret_access_key of this backend.\n//\n// - If secret_access_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// opendal_operator_options_set(options, \"secret_access_key\", \"...\");\n\n// session_token (aka, security token) of this backend.\n//\n// This token will expire after sometime, it's recommended to set session_token\n// by hand.\n// opendal_operator_options_set(options, \"session_token\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// environment.\n//\n// For examples:\n//\n// - envs like `AWS_ACCESS_KEY_ID`\n// - files like `~/.aws/config`\n// opendal_operator_options_set(options, \"disable_config_load\", \"true\");\n\n// Disable load credential from ec2 metadata.\n//\n// This option is used to disable the default behavior of opendal\n// to load credential from ec2 metadata, a.k.a., IMDSv2\n// opendal_operator_options_set(options, \"disable_ec2_metadata\", \"true\");\n\n// Skip signature will skip loading credentials and signing requests.\n// opendal_operator_options_set(options, \"skip_signature\", \"true\");\n// --- Assume role ---\n// role_arn for this backend.\n//\n// If `role_arn` is set, we will use already known config as source\n// credential to assume role with `role_arn`.\n// opendal_operator_options_set(options, \"role_arn\", \"...\");\n\n// external_id for this backend.\n// opendal_operator_options_set(options, \"external_id\", \"...\");\n\n// role_session_name for this backend.\n// opendal_operator_options_set(options, \"role_session_name\", \"...\");\n\n// assume_role_duration_seconds for this backend.\n// opendal_operator_options_set(options, \"assume_role_duration_seconds\", \"1000\");\n\n// assume_role_session_tags for this backend.\n// opendal_operator_options_set(options, \"assume_role_session_tags\", \"...\");\n// --- Encryption ---\n// server_side_encryption for this backend.\n//\n// Available values: `AES256`, `aws:kms`.\n// opendal_operator_options_set(options, \"server_side_encryption\", \"...\");\n\n// server_side_encryption_aws_kms_key_id for this backend\n//\n// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n// is not set, S3 will use aws managed kms key to encrypt data.\n// - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n// is a valid kms key id, S3 will use the provided kms key to encrypt data.\n// - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n// returned.\n// - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n// is a noop.\n// opendal_operator_options_set(options, \"server_side_encryption_aws_kms_key_id\", \"...\");\n\n// server_side_encryption_customer_algorithm for this backend.\n//\n// Available values: `AES256`.\n// opendal_operator_options_set(options, \"server_side_encryption_customer_algorithm\", \"...\");\n\n// server_side_encryption_customer_key for this backend.\n//\n// Value: BASE64-encoded key that matches algorithm specified in\n// `server_side_encryption_customer_algorithm`.\n// opendal_operator_options_set(options, \"server_side_encryption_customer_key\", \"...\");\n\n// Set server_side_encryption_customer_key_md5 for this backend.\n//\n// Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n// opendal_operator_options_set(options, \"server_side_encryption_customer_key_md5\", \"...\");\n// --- Behavior ---\n// default storage_class for this backend.\n//\n// Available values:\n// - `DEEP_ARCHIVE`\n// - `GLACIER`\n// - `GLACIER_IR`\n// - `INTELLIGENT_TIERING`\n// - `ONEZONE_IA`\n// - `EXPRESS_ONEZONE`\n// - `OUTPOSTS`\n// - `REDUCED_REDUNDANCY`\n// - `STANDARD`\n// - `STANDARD_IA`\n//\n// S3 compatible services don't support all of them\n// opendal_operator_options_set(options, \"default_storage_class\", \"...\");\n\n// Enable virtual host style so that opendal will send API requests\n// in virtual host style instead of path style.\n//\n// - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n// - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n// opendal_operator_options_set(options, \"enable_virtual_host_style\", \"true\");\n\n// Checksum Algorithm to use when sending checksums in HTTP headers.\n// This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n//\n// Available options:\n// - \"crc32c\"\n// - \"md5\"\n// opendal_operator_options_set(options, \"checksum_algorithm\", \"...\");\n\n// OpenDAL uses List Objects V2 by default to list objects.\n// However, some legacy services do not yet support V2.\n// This option allows users to switch back to the older List Objects V1.\n// opendal_operator_options_set(options, \"disable_list_objects_v2\", \"true\");\n\n// Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n// opendal_operator_options_set(options, \"enable_request_payer\", \"true\");\n\n// Default ACL for new objects.\n// Note that some s3 services like minio do not support this option.\n// opendal_operator_options_set(options, \"default_acl\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"s3\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"bucket\", \"my-bucket\"},\n};\nopendal::Operator operator(\"s3\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // --- General ---\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // {\"root\", \"/\"},\n\n // bucket name of this backend.\n //\n // required.\n {\"bucket\", \"my-bucket\"},\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n //\n // - AWS S3: `https://s3.amazonaws.com` or `https://s3.{region}.amazonaws.com`\n // - Cloudflare R2: `https://.r2.cloudflarestorage.com`\n // - Aliyun OSS: `https://{region}.aliyuncs.com`\n // - Tencent COS: `https://cos.{region}.myqcloud.com`\n // - Minio: `http://127.0.0.1:9000`\n //\n // If user inputs endpoint without scheme like \"s3.amazonaws.com\", we\n // will prepend \"https://\" before it.\n //\n // - If endpoint is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `https://s3.amazonaws.com`.\n // {\"endpoint\", \"https://s3.amazonaws.com\"},\n\n // Region represent the signing region of this endpoint. This is required\n // if you are using the default AWS S3 endpoint.\n //\n // If using a custom endpoint,\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // {\"region\", \"us-east-1\"},\n // --- Credentials ---\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // {\"access_key_id\", \"...\"},\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // {\"secret_access_key\", \"...\"},\n\n // session_token (aka, security token) of this backend.\n //\n // This token will expire after sometime, it's recommended to set session_token\n // by hand.\n // {\"session_token\", \"...\"},\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n //\n // - envs like `AWS_ACCESS_KEY_ID`\n // - files like `~/.aws/config`\n // {\"disable_config_load\", \"true\"},\n\n // Disable load credential from ec2 metadata.\n //\n // This option is used to disable the default behavior of opendal\n // to load credential from ec2 metadata, a.k.a., IMDSv2\n // {\"disable_ec2_metadata\", \"true\"},\n\n // Skip signature will skip loading credentials and signing requests.\n // {\"skip_signature\", \"true\"},\n // --- Assume role ---\n // role_arn for this backend.\n //\n // If `role_arn` is set, we will use already known config as source\n // credential to assume role with `role_arn`.\n // {\"role_arn\", \"...\"},\n\n // external_id for this backend.\n // {\"external_id\", \"...\"},\n\n // role_session_name for this backend.\n // {\"role_session_name\", \"...\"},\n\n // assume_role_duration_seconds for this backend.\n // {\"assume_role_duration_seconds\", \"1000\"},\n\n // assume_role_session_tags for this backend.\n // {\"assume_role_session_tags\", \"...\"},\n // --- Encryption ---\n // server_side_encryption for this backend.\n //\n // Available values: `AES256`, `aws:kms`.\n // {\"server_side_encryption\", \"...\"},\n\n // server_side_encryption_aws_kms_key_id for this backend\n //\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is not set, S3 will use aws managed kms key to encrypt data.\n // - If `server_side_encryption` set to `aws:kms`, and `server_side_encryption_aws_kms_key_id`\n // is a valid kms key id, S3 will use the provided kms key to encrypt data.\n // - If the `server_side_encryption_aws_kms_key_id` is invalid or not found, an error will be\n // returned.\n // - If `server_side_encryption` is not `aws:kms`, setting `server_side_encryption_aws_kms_key_id`\n // is a noop.\n // {\"server_side_encryption_aws_kms_key_id\", \"...\"},\n\n // server_side_encryption_customer_algorithm for this backend.\n //\n // Available values: `AES256`.\n // {\"server_side_encryption_customer_algorithm\", \"...\"},\n\n // server_side_encryption_customer_key for this backend.\n //\n // Value: BASE64-encoded key that matches algorithm specified in\n // `server_side_encryption_customer_algorithm`.\n // {\"server_side_encryption_customer_key\", \"...\"},\n\n // Set server_side_encryption_customer_key_md5 for this backend.\n //\n // Value: MD5 digest of key specified in `server_side_encryption_customer_key`.\n // {\"server_side_encryption_customer_key_md5\", \"...\"},\n // --- Behavior ---\n // default storage_class for this backend.\n //\n // Available values:\n // - `DEEP_ARCHIVE`\n // - `GLACIER`\n // - `GLACIER_IR`\n // - `INTELLIGENT_TIERING`\n // - `ONEZONE_IA`\n // - `EXPRESS_ONEZONE`\n // - `OUTPOSTS`\n // - `REDUCED_REDUNDANCY`\n // - `STANDARD`\n // - `STANDARD_IA`\n //\n // S3 compatible services don't support all of them\n // {\"default_storage_class\", \"...\"},\n\n // Enable virtual host style so that opendal will send API requests\n // in virtual host style instead of path style.\n //\n // - By default, opendal will send API to `https://s3.us-east-1.amazonaws.com/bucket_name`\n // - Enabled, opendal will send API to `https://bucket_name.s3.us-east-1.amazonaws.com`\n // {\"enable_virtual_host_style\", \"true\"},\n\n // Checksum Algorithm to use when sending checksums in HTTP headers.\n // This is necessary when writing to AWS S3 Buckets with Object Lock enabled for example.\n //\n // Available options:\n // - \"crc32c\"\n // - \"md5\"\n // {\"checksum_algorithm\", \"...\"},\n\n // OpenDAL uses List Objects V2 by default to list objects.\n // However, some legacy services do not yet support V2.\n // This option allows users to switch back to the older List Objects V1.\n // {\"disable_list_objects_v2\", \"true\"},\n\n // Indicates whether the client agrees to pay for the requests made to the S3 bucket.\n // {\"enable_request_payer\", \"true\"},\n\n // Default ACL for new objects.\n // Note that some s3 services like minio do not support this option.\n // {\"default_acl\", \"...\"},\n};\nopendal::Operator operator(\"s3\", config);" } ] }, @@ -3840,26 +4856,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"seafile\", [\n (\"repo_name\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"seafile\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // endpoint address of this backend.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // username of this backend.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // password of this backend.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // repo_name of this backend.\n //\n // required.\n (\"repo_name\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"seafile\", [\n (\"repo_name\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"seafile\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // endpoint address of this backend.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // username of this backend.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // password of this backend.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // repo_name of this backend.\n //\n // required.\n (\"repo_name\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"repo_name\", \"...\");\nOperator operator = Operator.of(\"seafile\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// endpoint address of this backend.\n// config.put(\"endpoint\", \"...\");\n\n// username of this backend.\n// config.put(\"username\", \"...\");\n\n// password of this backend.\n// config.put(\"password\", \"...\");\n\n// repo_name of this backend.\n//\n// required.\nconfig.put(\"repo_name\", \"...\");\nOperator operator = Operator.of(\"seafile\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"seafile\",\n repo_name=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"seafile\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # endpoint address of this backend.\n # endpoint=\"...\",\n\n # username of this backend.\n # username=\"...\",\n\n # password of this backend.\n # password=\"...\",\n\n # repo_name of this backend.\n #\n # required.\n repo_name=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"seafile\",\n repo_name=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"seafile\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # endpoint address of this backend.\n # endpoint=\"...\",\n\n # username of this backend.\n # username=\"...\",\n\n # password of this backend.\n # password=\"...\",\n\n # repo_name of this backend.\n #\n # required.\n repo_name=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"seafile\", {\n repo_name: \"...\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"seafile\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // endpoint address of this backend.\n // endpoint: \"...\",\n\n // username of this backend.\n // username: \"...\",\n\n // password of this backend.\n // password: \"...\",\n\n // repo_name of this backend.\n //\n // required.\n repo_name: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"seafile\", {\n repo_name: \"...\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"seafile\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // endpoint address of this backend.\n // endpoint: \"...\",\n\n // username of this backend.\n // username: \"...\",\n\n // password of this backend.\n // password: \"...\",\n\n // repo_name of this backend.\n //\n // required.\n repo_name: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"repo_name\", \"...\");\nOperator op = Operator.of(\"seafile\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// conf.put(\"root\", \"...\");\n\n// endpoint address of this backend.\n// conf.put(\"endpoint\", \"...\");\n\n// username of this backend.\n// conf.put(\"username\", \"...\");\n\n// password of this backend.\n// conf.put(\"password\", \"...\");\n\n// repo_name of this backend.\n//\n// required.\nconf.put(\"repo_name\", \"...\");\n\nOperator op = Operator.of(\"seafile\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/seafile\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(seafile.Scheme, opendal.OperatorOptions{\n\t\"repo_name\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/seafile\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(seafile.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// endpoint address of this backend.\n\t// \"endpoint\": \"...\",\n\n\t// username of this backend.\n\t// \"username\": \"...\",\n\n\t// password of this backend.\n\t// \"password\": \"...\",\n\n\t// repo_name of this backend.\n\t//\n\t// required.\n\t\"repo_name\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"repo_name\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"seafile\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of this backend.\n//\n// All operations will happen under this root.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// endpoint address of this backend.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// username of this backend.\n// opendal_operator_options_set(options, \"username\", \"...\");\n\n// password of this backend.\n// opendal_operator_options_set(options, \"password\", \"...\");\n\n// repo_name of this backend.\n//\n// required.\nopendal_operator_options_set(options, \"repo_name\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"seafile\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"repo_name\", \"...\"},\n};\nopendal::Operator operator(\"seafile\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of this backend.\n //\n // All operations will happen under this root.\n // {\"root\", \"...\"},\n\n // endpoint address of this backend.\n // {\"endpoint\", \"...\"},\n\n // username of this backend.\n // {\"username\", \"...\"},\n\n // password of this backend.\n // {\"password\", \"...\"},\n\n // repo_name of this backend.\n //\n // required.\n {\"repo_name\", \"...\"},\n};\nopendal::Operator operator(\"seafile\", config);" } ] }, @@ -3921,26 +4955,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"sftp\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"sftp\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // user of this backend\n // (\"user\".to_string(), \"...\".to_string()),\n\n // key of this backend\n // (\"key\".to_string(), \"...\".to_string()),\n\n // known_hosts_strategy of this backend\n // (\"known_hosts_strategy\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sftp\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sftp\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // user of this backend\n // (\"user\".to_string(), \"...\".to_string()),\n\n // key of this backend\n // (\"key\".to_string(), \"...\".to_string()),\n\n // known_hosts_strategy of this backend\n // (\"known_hosts_strategy\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"sftp\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// endpoint of this backend\n// config.put(\"endpoint\", \"...\");\n\n// root of this backend\n// config.put(\"root\", \"...\");\n\n// user of this backend\n// config.put(\"user\", \"...\");\n\n// key of this backend\n// config.put(\"key\", \"...\");\n\n// known_hosts_strategy of this backend\n// config.put(\"known_hosts_strategy\", \"...\");\nOperator operator = Operator.of(\"sftp\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"sftp\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"sftp\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # user of this backend\n # user=\"...\",\n\n # key of this backend\n # key=\"...\",\n\n # known_hosts_strategy of this backend\n # known_hosts_strategy=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"sftp\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"sftp\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # user of this backend\n # user=\"...\",\n\n # key of this backend\n # key=\"...\",\n\n # known_hosts_strategy of this backend\n # known_hosts_strategy=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"sftp\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"sftp\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // user of this backend\n // user: \"...\",\n\n // key of this backend\n // key: \"...\",\n\n // known_hosts_strategy of this backend\n // known_hosts_strategy: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sftp\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sftp\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // user of this backend\n // user: \"...\",\n\n // key of this backend\n // key: \"...\",\n\n // known_hosts_strategy of this backend\n // known_hosts_strategy: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"sftp\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// endpoint of this backend\n// conf.put(\"endpoint\", \"...\");\n\n// root of this backend\n// conf.put(\"root\", \"...\");\n\n// user of this backend\n// conf.put(\"user\", \"...\");\n\n// key of this backend\n// conf.put(\"key\", \"...\");\n\n// known_hosts_strategy of this backend\n// conf.put(\"known_hosts_strategy\", \"...\");\n\nOperator op = Operator.of(\"sftp\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/sftp\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sftp.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/sftp\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sftp.Scheme, opendal.OperatorOptions{\n\t// endpoint of this backend\n\t// \"endpoint\": \"...\",\n\n\t// root of this backend\n\t// \"root\": \"...\",\n\n\t// user of this backend\n\t// \"user\": \"...\",\n\n\t// key of this backend\n\t// \"key\": \"...\",\n\n\t// known_hosts_strategy of this backend\n\t// \"known_hosts_strategy\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"sftp\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// endpoint of this backend\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// root of this backend\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// user of this backend\n// opendal_operator_options_set(options, \"user\", \"...\");\n\n// key of this backend\n// opendal_operator_options_set(options, \"key\", \"...\");\n\n// known_hosts_strategy of this backend\n// opendal_operator_options_set(options, \"known_hosts_strategy\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"sftp\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"sftp\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // endpoint of this backend\n // {\"endpoint\", \"...\"},\n\n // root of this backend\n // {\"root\", \"...\"},\n\n // user of this backend\n // {\"user\", \"...\"},\n\n // key of this backend\n // {\"key\", \"...\"},\n\n // known_hosts_strategy of this backend\n // {\"known_hosts_strategy\", \"...\"},\n};\nopendal::Operator operator(\"sftp\", config);" } ] }, @@ -3977,26 +5029,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"sled\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"sled\", [\n // That path to the sled data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n\n // The tree for sled.\n // (\"tree\".to_string(), \"...\".to_string()),\n\n // The root for sled.\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sled\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sled\", [\n // That path to the sled data directory.\n // (\"datadir\".to_string(), \"...\".to_string()),\n\n // The tree for sled.\n // (\"tree\".to_string(), \"...\".to_string()),\n\n // The root for sled.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"sled\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// That path to the sled data directory.\n// config.put(\"datadir\", \"...\");\n\n// The tree for sled.\n// config.put(\"tree\", \"...\");\n\n// The root for sled.\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"sled\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"sled\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"sled\",\n # That path to the sled data directory.\n # datadir=\"...\",\n\n # The tree for sled.\n # tree=\"...\",\n\n # The root for sled.\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"sled\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"sled\",\n # That path to the sled data directory.\n # datadir=\"...\",\n\n # The tree for sled.\n # tree=\"...\",\n\n # The root for sled.\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"sled\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"sled\", {\n // That path to the sled data directory.\n // datadir: \"...\",\n\n // The tree for sled.\n // tree: \"...\",\n\n // The root for sled.\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sled\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sled\", {\n // That path to the sled data directory.\n // datadir: \"...\",\n\n // The tree for sled.\n // tree: \"...\",\n\n // The root for sled.\n // root: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"sled\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// That path to the sled data directory.\n// conf.put(\"datadir\", \"...\");\n\n// The tree for sled.\n// conf.put(\"tree\", \"...\");\n\n// The root for sled.\n// conf.put(\"root\", \"...\");\n\nOperator op = Operator.of(\"sled\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/sled\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sled.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/sled\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sled.Scheme, opendal.OperatorOptions{\n\t// That path to the sled data directory.\n\t// \"datadir\": \"...\",\n\n\t// The tree for sled.\n\t// \"tree\": \"...\",\n\n\t// The root for sled.\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"sled\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// That path to the sled data directory.\n// opendal_operator_options_set(options, \"datadir\", \"...\");\n\n// The tree for sled.\n// opendal_operator_options_set(options, \"tree\", \"...\");\n\n// The root for sled.\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"sled\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"sled\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // That path to the sled data directory.\n // {\"datadir\", \"...\"},\n\n // The tree for sled.\n // {\"tree\", \"...\"},\n\n // The root for sled.\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"sled\", config);" } ] }, @@ -4047,26 +5117,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"sqlite\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"sqlite\", [\n // Set the connection_string of the sqlite service.\n //\n // This connection string is used to connect to the sqlite service.\n //\n // The format of connect string resembles the url format of the sqlite client:\n //\n // - `sqlite::memory:`\n // - `sqlite:data.db`\n // - `sqlite://data.db`\n //\n // For more information, please visit .\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // Set the table name of the sqlite service to read/write.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // Set the key field name of the sqlite service to read/write.\n //\n // Default to `key` if not specified.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // Set the value field name of the sqlite service to read/write.\n //\n // Default to `value` if not specified.\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n // set the working directory, all operations will be performed under it.\n //\n // default: \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sqlite\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"sqlite\", [\n // Set the connection_string of the sqlite service.\n //\n // This connection string is used to connect to the sqlite service.\n //\n // The format of connect string resembles the url format of the sqlite client:\n //\n // - `sqlite::memory:`\n // - `sqlite:data.db`\n // - `sqlite://data.db`\n //\n // For more information, please visit .\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // Set the table name of the sqlite service to read/write.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // Set the key field name of the sqlite service to read/write.\n //\n // Default to `key` if not specified.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // Set the value field name of the sqlite service to read/write.\n //\n // Default to `value` if not specified.\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n // set the working directory, all operations will be performed under it.\n //\n // default: \"/\"\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"sqlite\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Set the connection_string of the sqlite service.\n//\n// This connection string is used to connect to the sqlite service.\n//\n// The format of connect string resembles the url format of the sqlite client:\n//\n// - `sqlite::memory:`\n// - `sqlite:data.db`\n// - `sqlite://data.db`\n//\n// For more information, please visit .\n// config.put(\"connection_string\", \"...\");\n\n// Set the table name of the sqlite service to read/write.\n// config.put(\"table\", \"...\");\n\n// Set the key field name of the sqlite service to read/write.\n//\n// Default to `key` if not specified.\n// config.put(\"key_field\", \"...\");\n\n// Set the value field name of the sqlite service to read/write.\n//\n// Default to `value` if not specified.\n// config.put(\"value_field\", \"...\");\n\n// set the working directory, all operations will be performed under it.\n//\n// default: \"/\"\n// config.put(\"root\", \"...\");\nOperator operator = Operator.of(\"sqlite\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"sqlite\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"sqlite\",\n # Set the connection_string of the sqlite service.\n #\n # This connection string is used to connect to the sqlite service.\n #\n # The format of connect string resembles the url format of the sqlite client:\n #\n # - `sqlite::memory:`\n # - `sqlite:data.db`\n # - `sqlite://data.db`\n #\n # For more information, please visit .\n # connection_string=\"...\",\n\n # Set the table name of the sqlite service to read/write.\n # table=\"...\",\n\n # Set the key field name of the sqlite service to read/write.\n #\n # Default to `key` if not specified.\n # key_field=\"...\",\n\n # Set the value field name of the sqlite service to read/write.\n #\n # Default to `value` if not specified.\n # value_field=\"...\",\n\n # set the working directory, all operations will be performed under it.\n #\n # default: \"/\"\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"sqlite\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"sqlite\",\n # Set the connection_string of the sqlite service.\n #\n # This connection string is used to connect to the sqlite service.\n #\n # The format of connect string resembles the url format of the sqlite client:\n #\n # - `sqlite::memory:`\n # - `sqlite:data.db`\n # - `sqlite://data.db`\n #\n # For more information, please visit .\n # connection_string=\"...\",\n\n # Set the table name of the sqlite service to read/write.\n # table=\"...\",\n\n # Set the key field name of the sqlite service to read/write.\n #\n # Default to `key` if not specified.\n # key_field=\"...\",\n\n # Set the value field name of the sqlite service to read/write.\n #\n # Default to `value` if not specified.\n # value_field=\"...\",\n\n # set the working directory, all operations will be performed under it.\n #\n # default: \"/\"\n # root=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"sqlite\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"sqlite\", {\n // Set the connection_string of the sqlite service.\n //\n // This connection string is used to connect to the sqlite service.\n //\n // The format of connect string resembles the url format of the sqlite client:\n //\n // - `sqlite::memory:`\n // - `sqlite:data.db`\n // - `sqlite://data.db`\n //\n // For more information, please visit .\n // connection_string: \"...\",\n\n // Set the table name of the sqlite service to read/write.\n // table: \"...\",\n\n // Set the key field name of the sqlite service to read/write.\n //\n // Default to `key` if not specified.\n // key_field: \"...\",\n\n // Set the value field name of the sqlite service to read/write.\n //\n // Default to `value` if not specified.\n // value_field: \"...\",\n\n // set the working directory, all operations will be performed under it.\n //\n // default: \"/\"\n // root: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sqlite\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"sqlite\", {\n // Set the connection_string of the sqlite service.\n //\n // This connection string is used to connect to the sqlite service.\n //\n // The format of connect string resembles the url format of the sqlite client:\n //\n // - `sqlite::memory:`\n // - `sqlite:data.db`\n // - `sqlite://data.db`\n //\n // For more information, please visit .\n // connection_string: \"...\",\n\n // Set the table name of the sqlite service to read/write.\n // table: \"...\",\n\n // Set the key field name of the sqlite service to read/write.\n //\n // Default to `key` if not specified.\n // key_field: \"...\",\n\n // Set the value field name of the sqlite service to read/write.\n //\n // Default to `value` if not specified.\n // value_field: \"...\",\n\n // set the working directory, all operations will be performed under it.\n //\n // default: \"/\"\n // root: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"sqlite\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Set the connection_string of the sqlite service.\n//\n// This connection string is used to connect to the sqlite service.\n//\n// The format of connect string resembles the url format of the sqlite client:\n//\n// - `sqlite::memory:`\n// - `sqlite:data.db`\n// - `sqlite://data.db`\n//\n// For more information, please visit .\n// conf.put(\"connection_string\", \"...\");\n\n// Set the table name of the sqlite service to read/write.\n// conf.put(\"table\", \"...\");\n\n// Set the key field name of the sqlite service to read/write.\n//\n// Default to `key` if not specified.\n// conf.put(\"key_field\", \"...\");\n\n// Set the value field name of the sqlite service to read/write.\n//\n// Default to `value` if not specified.\n// conf.put(\"value_field\", \"...\");\n\n// set the working directory, all operations will be performed under it.\n//\n// default: \"/\"\n// conf.put(\"root\", \"...\");\n\nOperator op = Operator.of(\"sqlite\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/sqlite\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sqlite.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/sqlite\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(sqlite.Scheme, opendal.OperatorOptions{\n\t// Set the connection_string of the sqlite service.\n\t//\n\t// This connection string is used to connect to the sqlite service.\n\t//\n\t// The format of connect string resembles the url format of the sqlite client:\n\t//\n\t// - `sqlite::memory:`\n\t// - `sqlite:data.db`\n\t// - `sqlite://data.db`\n\t//\n\t// For more information, please visit .\n\t// \"connection_string\": \"...\",\n\n\t// Set the table name of the sqlite service to read/write.\n\t// \"table\": \"...\",\n\n\t// Set the key field name of the sqlite service to read/write.\n\t//\n\t// Default to `key` if not specified.\n\t// \"key_field\": \"...\",\n\n\t// Set the value field name of the sqlite service to read/write.\n\t//\n\t// Default to `value` if not specified.\n\t// \"value_field\": \"...\",\n\n\t// set the working directory, all operations will be performed under it.\n\t//\n\t// default: \"/\"\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"sqlite\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Set the connection_string of the sqlite service.\n//\n// This connection string is used to connect to the sqlite service.\n//\n// The format of connect string resembles the url format of the sqlite client:\n//\n// - `sqlite::memory:`\n// - `sqlite:data.db`\n// - `sqlite://data.db`\n//\n// For more information, please visit .\n// opendal_operator_options_set(options, \"connection_string\", \"...\");\n\n// Set the table name of the sqlite service to read/write.\n// opendal_operator_options_set(options, \"table\", \"...\");\n\n// Set the key field name of the sqlite service to read/write.\n//\n// Default to `key` if not specified.\n// opendal_operator_options_set(options, \"key_field\", \"...\");\n\n// Set the value field name of the sqlite service to read/write.\n//\n// Default to `value` if not specified.\n// opendal_operator_options_set(options, \"value_field\", \"...\");\n\n// set the working directory, all operations will be performed under it.\n//\n// default: \"/\"\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"sqlite\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"sqlite\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Set the connection_string of the sqlite service.\n //\n // This connection string is used to connect to the sqlite service.\n //\n // The format of connect string resembles the url format of the sqlite client:\n //\n // - `sqlite::memory:`\n // - `sqlite:data.db`\n // - `sqlite://data.db`\n //\n // For more information, please visit .\n // {\"connection_string\", \"...\"},\n\n // Set the table name of the sqlite service to read/write.\n // {\"table\", \"...\"},\n\n // Set the key field name of the sqlite service to read/write.\n //\n // Default to `key` if not specified.\n // {\"key_field\", \"...\"},\n\n // Set the value field name of the sqlite service to read/write.\n //\n // Default to `value` if not specified.\n // {\"value_field\", \"...\"},\n\n // set the working directory, all operations will be performed under it.\n //\n // default: \"/\"\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"sqlite\", config);" } ] }, @@ -4145,14 +5233,32 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"surrealdb\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"surrealdb\", [\n // The connection string for surrealdb.\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // The username for surrealdb.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // The password for surrealdb.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // The namespace for surrealdb.\n // (\"namespace\".to_string(), \"...\".to_string()),\n\n // The database for surrealdb.\n // (\"database\".to_string(), \"...\".to_string()),\n\n // The table for surrealdb.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // The key field for surrealdb.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // The value field for surrealdb.\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n // The root for surrealdb.\n // (\"root\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"surrealdb\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"surrealdb\", [\n // The connection string for surrealdb.\n // (\"connection_string\".to_string(), \"...\".to_string()),\n\n // The username for surrealdb.\n // (\"username\".to_string(), \"...\".to_string()),\n\n // The password for surrealdb.\n // (\"password\".to_string(), \"...\".to_string()),\n\n // The namespace for surrealdb.\n // (\"namespace\".to_string(), \"...\".to_string()),\n\n // The database for surrealdb.\n // (\"database\".to_string(), \"...\".to_string()),\n\n // The table for surrealdb.\n // (\"table\".to_string(), \"...\".to_string()),\n\n // The key field for surrealdb.\n // (\"key_field\".to_string(), \"...\".to_string()),\n\n // The value field for surrealdb.\n // (\"value_field\".to_string(), \"...\".to_string()),\n\n // The root for surrealdb.\n // (\"root\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"surrealdb\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"surrealdb\",\n # The connection string for surrealdb.\n # connection_string=\"...\",\n\n # The username for surrealdb.\n # username=\"...\",\n\n # The password for surrealdb.\n # password=\"...\",\n\n # The namespace for surrealdb.\n # namespace=\"...\",\n\n # The database for surrealdb.\n # database=\"...\",\n\n # The table for surrealdb.\n # table=\"...\",\n\n # The key field for surrealdb.\n # key_field=\"...\",\n\n # The value field for surrealdb.\n # value_field=\"...\",\n\n # The root for surrealdb.\n # root=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"surrealdb\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"surrealdb\",\n # The connection string for surrealdb.\n # connection_string=\"...\",\n\n # The username for surrealdb.\n # username=\"...\",\n\n # The password for surrealdb.\n # password=\"...\",\n\n # The namespace for surrealdb.\n # namespace=\"...\",\n\n # The database for surrealdb.\n # database=\"...\",\n\n # The table for surrealdb.\n # table=\"...\",\n\n # The key field for surrealdb.\n # key_field=\"...\",\n\n # The value field for surrealdb.\n # value_field=\"...\",\n\n # The root for surrealdb.\n # root=\"...\",\n)" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/surrealdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(surrealdb.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/surrealdb\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(surrealdb.Scheme, opendal.OperatorOptions{\n\t// The connection string for surrealdb.\n\t// \"connection_string\": \"...\",\n\n\t// The username for surrealdb.\n\t// \"username\": \"...\",\n\n\t// The password for surrealdb.\n\t// \"password\": \"...\",\n\n\t// The namespace for surrealdb.\n\t// \"namespace\": \"...\",\n\n\t// The database for surrealdb.\n\t// \"database\": \"...\",\n\n\t// The table for surrealdb.\n\t// \"table\": \"...\",\n\n\t// The key field for surrealdb.\n\t// \"key_field\": \"...\",\n\n\t// The value field for surrealdb.\n\t// \"value_field\": \"...\",\n\n\t// The root for surrealdb.\n\t// \"root\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"surrealdb\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The connection string for surrealdb.\n// opendal_operator_options_set(options, \"connection_string\", \"...\");\n\n// The username for surrealdb.\n// opendal_operator_options_set(options, \"username\", \"...\");\n\n// The password for surrealdb.\n// opendal_operator_options_set(options, \"password\", \"...\");\n\n// The namespace for surrealdb.\n// opendal_operator_options_set(options, \"namespace\", \"...\");\n\n// The database for surrealdb.\n// opendal_operator_options_set(options, \"database\", \"...\");\n\n// The table for surrealdb.\n// opendal_operator_options_set(options, \"table\", \"...\");\n\n// The key field for surrealdb.\n// opendal_operator_options_set(options, \"key_field\", \"...\");\n\n// The value field for surrealdb.\n// opendal_operator_options_set(options, \"value_field\", \"...\");\n\n// The root for surrealdb.\n// opendal_operator_options_set(options, \"root\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"surrealdb\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"surrealdb\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The connection string for surrealdb.\n // {\"connection_string\", \"...\"},\n\n // The username for surrealdb.\n // {\"username\", \"...\"},\n\n // The password for surrealdb.\n // {\"password\", \"...\"},\n\n // The namespace for surrealdb.\n // {\"namespace\", \"...\"},\n\n // The database for surrealdb.\n // {\"database\", \"...\"},\n\n // The table for surrealdb.\n // {\"table\", \"...\"},\n\n // The key field for surrealdb.\n // {\"key_field\", \"...\"},\n\n // The value field for surrealdb.\n // {\"value_field\", \"...\"},\n\n // The root for surrealdb.\n // {\"root\", \"...\"},\n};\nopendal::Operator operator(\"surrealdb\", config);" } ] }, @@ -4210,26 +5316,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"swift\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"swift\", [\n // The endpoint for Swift.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The container for Swift.\n // (\"container\".to_string(), \"...\".to_string()),\n\n // The root for Swift.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The token for Swift.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // The TempURL key for generating presigned URLs.\n //\n // This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n // `X-Container-Meta-Temp-URL-Key` header value configured on the\n // Swift account or container.\n // (\"temp_url_key\".to_string(), \"...\".to_string()),\n\n // The hash algorithm for TempURL signing.\n //\n // Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n // The cluster must have the chosen algorithm in its\n // `tempurl.allowed_digests` (check `GET /info`).\n // (\"temp_url_hash_algorithm\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"swift\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"swift\", [\n // The endpoint for Swift.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The container for Swift.\n // (\"container\".to_string(), \"...\".to_string()),\n\n // The root for Swift.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // The token for Swift.\n // (\"token\".to_string(), \"...\".to_string()),\n\n // The TempURL key for generating presigned URLs.\n //\n // This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n // `X-Container-Meta-Temp-URL-Key` header value configured on the\n // Swift account or container.\n // (\"temp_url_key\".to_string(), \"...\".to_string()),\n\n // The hash algorithm for TempURL signing.\n //\n // Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n // The cluster must have the chosen algorithm in its\n // `tempurl.allowed_digests` (check `GET /info`).\n // (\"temp_url_hash_algorithm\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"swift\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// The endpoint for Swift.\n// config.put(\"endpoint\", \"...\");\n\n// The container for Swift.\n// config.put(\"container\", \"...\");\n\n// The root for Swift.\n// config.put(\"root\", \"...\");\n\n// The token for Swift.\n// config.put(\"token\", \"...\");\n\n// The TempURL key for generating presigned URLs.\n//\n// This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n// `X-Container-Meta-Temp-URL-Key` header value configured on the\n// Swift account or container.\n// config.put(\"temp_url_key\", \"...\");\n\n// The hash algorithm for TempURL signing.\n//\n// Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n// The cluster must have the chosen algorithm in its\n// `tempurl.allowed_digests` (check `GET /info`).\n// config.put(\"temp_url_hash_algorithm\", \"...\");\nOperator operator = Operator.of(\"swift\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"swift\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"swift\",\n # The endpoint for Swift.\n # endpoint=\"...\",\n\n # The container for Swift.\n # container=\"...\",\n\n # The root for Swift.\n # root=\"...\",\n\n # The token for Swift.\n # token=\"...\",\n\n # The TempURL key for generating presigned URLs.\n #\n # This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n # `X-Container-Meta-Temp-URL-Key` header value configured on the\n # Swift account or container.\n # temp_url_key=\"...\",\n\n # The hash algorithm for TempURL signing.\n #\n # Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n # The cluster must have the chosen algorithm in its\n # `tempurl.allowed_digests` (check `GET /info`).\n # temp_url_hash_algorithm=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"swift\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"swift\",\n # The endpoint for Swift.\n # endpoint=\"...\",\n\n # The container for Swift.\n # container=\"...\",\n\n # The root for Swift.\n # root=\"...\",\n\n # The token for Swift.\n # token=\"...\",\n\n # The TempURL key for generating presigned URLs.\n #\n # This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n # `X-Container-Meta-Temp-URL-Key` header value configured on the\n # Swift account or container.\n # temp_url_key=\"...\",\n\n # The hash algorithm for TempURL signing.\n #\n # Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n # The cluster must have the chosen algorithm in its\n # `tempurl.allowed_digests` (check `GET /info`).\n # temp_url_hash_algorithm=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"swift\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"swift\", {\n // The endpoint for Swift.\n // endpoint: \"...\",\n\n // The container for Swift.\n // container: \"...\",\n\n // The root for Swift.\n // root: \"...\",\n\n // The token for Swift.\n // token: \"...\",\n\n // The TempURL key for generating presigned URLs.\n //\n // This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n // `X-Container-Meta-Temp-URL-Key` header value configured on the\n // Swift account or container.\n // temp_url_key: \"...\",\n\n // The hash algorithm for TempURL signing.\n //\n // Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n // The cluster must have the chosen algorithm in its\n // `tempurl.allowed_digests` (check `GET /info`).\n // temp_url_hash_algorithm: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"swift\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"swift\", {\n // The endpoint for Swift.\n // endpoint: \"...\",\n\n // The container for Swift.\n // container: \"...\",\n\n // The root for Swift.\n // root: \"...\",\n\n // The token for Swift.\n // token: \"...\",\n\n // The TempURL key for generating presigned URLs.\n //\n // This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n // `X-Container-Meta-Temp-URL-Key` header value configured on the\n // Swift account or container.\n // temp_url_key: \"...\",\n\n // The hash algorithm for TempURL signing.\n //\n // Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n // The cluster must have the chosen algorithm in its\n // `tempurl.allowed_digests` (check `GET /info`).\n // temp_url_hash_algorithm: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"swift\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// The endpoint for Swift.\n// conf.put(\"endpoint\", \"...\");\n\n// The container for Swift.\n// conf.put(\"container\", \"...\");\n\n// The root for Swift.\n// conf.put(\"root\", \"...\");\n\n// The token for Swift.\n// conf.put(\"token\", \"...\");\n\n// The TempURL key for generating presigned URLs.\n//\n// This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n// `X-Container-Meta-Temp-URL-Key` header value configured on the\n// Swift account or container.\n// conf.put(\"temp_url_key\", \"...\");\n\n// The hash algorithm for TempURL signing.\n//\n// Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n// The cluster must have the chosen algorithm in its\n// `tempurl.allowed_digests` (check `GET /info`).\n// conf.put(\"temp_url_hash_algorithm\", \"...\");\n\nOperator op = Operator.of(\"swift\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/swift\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(swift.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/swift\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(swift.Scheme, opendal.OperatorOptions{\n\t// The endpoint for Swift.\n\t// \"endpoint\": \"...\",\n\n\t// The container for Swift.\n\t// \"container\": \"...\",\n\n\t// The root for Swift.\n\t// \"root\": \"...\",\n\n\t// The token for Swift.\n\t// \"token\": \"...\",\n\n\t// The TempURL key for generating presigned URLs.\n\t//\n\t// This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n\t// `X-Container-Meta-Temp-URL-Key` header value configured on the\n\t// Swift account or container.\n\t// \"temp_url_key\": \"...\",\n\n\t// The hash algorithm for TempURL signing.\n\t//\n\t// Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n\t// The cluster must have the chosen algorithm in its\n\t// `tempurl.allowed_digests` (check `GET /info`).\n\t// \"temp_url_hash_algorithm\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"swift\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The endpoint for Swift.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// The container for Swift.\n// opendal_operator_options_set(options, \"container\", \"...\");\n\n// The root for Swift.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// The token for Swift.\n// opendal_operator_options_set(options, \"token\", \"...\");\n\n// The TempURL key for generating presigned URLs.\n//\n// This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n// `X-Container-Meta-Temp-URL-Key` header value configured on the\n// Swift account or container.\n// opendal_operator_options_set(options, \"temp_url_key\", \"...\");\n\n// The hash algorithm for TempURL signing.\n//\n// Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n// The cluster must have the chosen algorithm in its\n// `tempurl.allowed_digests` (check `GET /info`).\n// opendal_operator_options_set(options, \"temp_url_hash_algorithm\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"swift\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"swift\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The endpoint for Swift.\n // {\"endpoint\", \"...\"},\n\n // The container for Swift.\n // {\"container\", \"...\"},\n\n // The root for Swift.\n // {\"root\", \"...\"},\n\n // The token for Swift.\n // {\"token\", \"...\"},\n\n // The TempURL key for generating presigned URLs.\n //\n // This corresponds to the `X-Account-Meta-Temp-URL-Key` or\n // `X-Container-Meta-Temp-URL-Key` header value configured on the\n // Swift account or container.\n // {\"temp_url_key\", \"...\"},\n\n // The hash algorithm for TempURL signing.\n //\n // Supported values: `sha1`, `sha256`, `sha512`. Defaults to `sha256`.\n // The cluster must have the chosen algorithm in its\n // `tempurl.allowed_digests` (check `GET /info`).\n // {\"temp_url_hash_algorithm\", \"...\"},\n};\nopendal::Operator operator(\"swift\", config);" } ] }, @@ -4280,26 +5404,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"tikv\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"tikv\", [\n // network address of the TiKV service.\n // (\"endpoints\".to_string(), \"value1,value2\".to_string()),\n\n // whether using insecure connection to TiKV\n // (\"insecure\".to_string(), \"true\".to_string()),\n\n // certificate authority file path\n // (\"ca_path\".to_string(), \"...\".to_string()),\n\n // cert path\n // (\"cert_path\".to_string(), \"...\".to_string()),\n\n // key path\n // (\"key_path\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"tikv\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"tikv\", [\n // network address of the TiKV service.\n // (\"endpoints\".to_string(), \"value1,value2\".to_string()),\n\n // whether using insecure connection to TiKV\n // (\"insecure\".to_string(), \"true\".to_string()),\n\n // certificate authority file path\n // (\"ca_path\".to_string(), \"...\".to_string()),\n\n // cert path\n // (\"cert_path\".to_string(), \"...\".to_string()),\n\n // key path\n // (\"key_path\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"tikv\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// network address of the TiKV service.\n// config.put(\"endpoints\", \"value1,value2\");\n\n// whether using insecure connection to TiKV\n// config.put(\"insecure\", \"true\");\n\n// certificate authority file path\n// config.put(\"ca_path\", \"...\");\n\n// cert path\n// config.put(\"cert_path\", \"...\");\n\n// key path\n// config.put(\"key_path\", \"...\");\nOperator operator = Operator.of(\"tikv\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"tikv\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"tikv\",\n # network address of the TiKV service.\n # endpoints=\"value1,value2\",\n\n # whether using insecure connection to TiKV\n # insecure=\"true\",\n\n # certificate authority file path\n # ca_path=\"...\",\n\n # cert path\n # cert_path=\"...\",\n\n # key path\n # key_path=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"tikv\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"tikv\",\n # network address of the TiKV service.\n # endpoints=\"value1,value2\",\n\n # whether using insecure connection to TiKV\n # insecure=\"true\",\n\n # certificate authority file path\n # ca_path=\"...\",\n\n # cert path\n # cert_path=\"...\",\n\n # key path\n # key_path=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"tikv\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"tikv\", {\n // network address of the TiKV service.\n // endpoints: \"value1,value2\",\n\n // whether using insecure connection to TiKV\n // insecure: \"true\",\n\n // certificate authority file path\n // ca_path: \"...\",\n\n // cert path\n // cert_path: \"...\",\n\n // key path\n // key_path: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"tikv\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"tikv\", {\n // network address of the TiKV service.\n // endpoints: \"value1,value2\",\n\n // whether using insecure connection to TiKV\n // insecure: \"true\",\n\n // certificate authority file path\n // ca_path: \"...\",\n\n // cert path\n // cert_path: \"...\",\n\n // key path\n // key_path: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"tikv\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// network address of the TiKV service.\n// conf.put(\"endpoints\", \"value1,value2\");\n\n// whether using insecure connection to TiKV\n// conf.put(\"insecure\", \"true\");\n\n// certificate authority file path\n// conf.put(\"ca_path\", \"...\");\n\n// cert path\n// conf.put(\"cert_path\", \"...\");\n\n// key path\n// conf.put(\"key_path\", \"...\");\n\nOperator op = Operator.of(\"tikv\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/tikv\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(tikv.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/tikv\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(tikv.Scheme, opendal.OperatorOptions{\n\t// network address of the TiKV service.\n\t// \"endpoints\": \"value1,value2\",\n\n\t// whether using insecure connection to TiKV\n\t// \"insecure\": \"true\",\n\n\t// certificate authority file path\n\t// \"ca_path\": \"...\",\n\n\t// cert path\n\t// \"cert_path\": \"...\",\n\n\t// key path\n\t// \"key_path\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"tikv\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// network address of the TiKV service.\n// opendal_operator_options_set(options, \"endpoints\", \"value1,value2\");\n\n// whether using insecure connection to TiKV\n// opendal_operator_options_set(options, \"insecure\", \"true\");\n\n// certificate authority file path\n// opendal_operator_options_set(options, \"ca_path\", \"...\");\n\n// cert path\n// opendal_operator_options_set(options, \"cert_path\", \"...\");\n\n// key path\n// opendal_operator_options_set(options, \"key_path\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"tikv\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"tikv\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // network address of the TiKV service.\n // {\"endpoints\", \"value1,value2\"},\n\n // whether using insecure connection to TiKV\n // {\"insecure\", \"true\"},\n\n // certificate authority file path\n // {\"ca_path\", \"...\"},\n\n // cert path\n // {\"cert_path\", \"...\"},\n\n // key path\n // {\"key_path\", \"...\"},\n};\nopendal::Operator operator(\"tikv\", config);" } ] }, @@ -4378,26 +5520,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"tos\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"tos\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // bucket name of this backend.\n //\n // required.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n // - TOS: `https://tos-cn-beijing.volces.com`\n // - TOS with region: `https://tos-{region}.volces.com`\n //\n // If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n // will prepend \"https://\" before it.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Region represent the signing region of this endpoint.\n //\n // Required if endpoint is not provided.\n //\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `cn-beijing`.\n // (\"region\".to_string(), \"...\".to_string()),\n\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"secret_access_key\".to_string(), \"...\".to_string()),\n\n // security_token of this backend.\n //\n // This token will expire after sometime, it's recommended to set security_token\n // by hand.\n // (\"security_token\".to_string(), \"...\".to_string()),\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n // - envs like `TOS_ACCESS_KEY_ID`\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"tos\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"tos\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // bucket name of this backend.\n //\n // required.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n // - TOS: `https://tos-cn-beijing.volces.com`\n // - TOS with region: `https://tos-{region}.volces.com`\n //\n // If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n // will prepend \"https://\" before it.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Region represent the signing region of this endpoint.\n //\n // Required if endpoint is not provided.\n //\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `cn-beijing`.\n // (\"region\".to_string(), \"...\".to_string()),\n\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"access_key_id\".to_string(), \"...\".to_string()),\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // (\"secret_access_key\".to_string(), \"...\".to_string()),\n\n // security_token of this backend.\n //\n // This token will expire after sometime, it's recommended to set security_token\n // by hand.\n // (\"security_token\".to_string(), \"...\".to_string()),\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n // - envs like `TOS_ACCESS_KEY_ID`\n // (\"disable_config_load\".to_string(), \"true\".to_string()),\n\n // Skip signature will skip loading credentials and signing requests.\n // (\"skip_signature\".to_string(), \"true\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"bucket\", \"...\");\nOperator operator = Operator.of(\"tos\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// config.put(\"root\", \"...\");\n\n// bucket name of this backend.\n//\n// required.\nconfig.put(\"bucket\", \"...\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, e.g.\n// - TOS: `https://tos-cn-beijing.volces.com`\n// - TOS with region: `https://tos-{region}.volces.com`\n//\n// If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n// will prepend \"https://\" before it.\n// config.put(\"endpoint\", \"...\");\n\n// Region represent the signing region of this endpoint.\n//\n// Required if endpoint is not provided.\n//\n// - If region is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// - If still not set, default to `cn-beijing`.\n// config.put(\"region\", \"...\");\n\n// access_key_id of this backend.\n//\n// - If access_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"access_key_id\", \"...\");\n\n// secret_access_key of this backend.\n//\n// - If secret_access_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// config.put(\"secret_access_key\", \"...\");\n\n// security_token of this backend.\n//\n// This token will expire after sometime, it's recommended to set security_token\n// by hand.\n// config.put(\"security_token\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// environment.\n//\n// For examples:\n// - envs like `TOS_ACCESS_KEY_ID`\n// config.put(\"disable_config_load\", \"true\");\n\n// Skip signature will skip loading credentials and signing requests.\n// config.put(\"skip_signature\", \"true\");\nOperator operator = Operator.of(\"tos\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"tos\",\n bucket=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"tos\",\n # root of this backend.\n #\n # All operations will happen under this root.\n #\n # default to `/` if not set.\n # root=\"...\",\n\n # bucket name of this backend.\n #\n # required.\n bucket=\"...\",\n\n # endpoint of this backend.\n #\n # Endpoint must be full uri, e.g.\n # - TOS: `https://tos-cn-beijing.volces.com`\n # - TOS with region: `https://tos-{region}.volces.com`\n #\n # If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n # will prepend \"https://\" before it.\n # endpoint=\"...\",\n\n # Region represent the signing region of this endpoint.\n #\n # Required if endpoint is not provided.\n #\n # - If region is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # - If still not set, default to `cn-beijing`.\n # region=\"...\",\n\n # access_key_id of this backend.\n #\n # - If access_key_id is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # access_key_id=\"...\",\n\n # secret_access_key of this backend.\n #\n # - If secret_access_key is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # secret_access_key=\"...\",\n\n # security_token of this backend.\n #\n # This token will expire after sometime, it's recommended to set security_token\n # by hand.\n # security_token=\"...\",\n\n # Disable config load so that opendal will not load config from\n # environment.\n #\n # For examples:\n # - envs like `TOS_ACCESS_KEY_ID`\n # disable_config_load=\"true\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"tos\",\n bucket=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"tos\",\n # root of this backend.\n #\n # All operations will happen under this root.\n #\n # default to `/` if not set.\n # root=\"...\",\n\n # bucket name of this backend.\n #\n # required.\n bucket=\"...\",\n\n # endpoint of this backend.\n #\n # Endpoint must be full uri, e.g.\n # - TOS: `https://tos-cn-beijing.volces.com`\n # - TOS with region: `https://tos-{region}.volces.com`\n #\n # If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n # will prepend \"https://\" before it.\n # endpoint=\"...\",\n\n # Region represent the signing region of this endpoint.\n #\n # Required if endpoint is not provided.\n #\n # - If region is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # - If still not set, default to `cn-beijing`.\n # region=\"...\",\n\n # access_key_id of this backend.\n #\n # - If access_key_id is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # access_key_id=\"...\",\n\n # secret_access_key of this backend.\n #\n # - If secret_access_key is set, we will take user's input first.\n # - If not, we will try to load it from environment.\n # secret_access_key=\"...\",\n\n # security_token of this backend.\n #\n # This token will expire after sometime, it's recommended to set security_token\n # by hand.\n # security_token=\"...\",\n\n # Disable config load so that opendal will not load config from\n # environment.\n #\n # For examples:\n # - envs like `TOS_ACCESS_KEY_ID`\n # disable_config_load=\"true\",\n\n # Skip signature will skip loading credentials and signing requests.\n # skip_signature=\"true\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"tos\", {\n bucket: \"...\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"tos\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // root: \"...\",\n\n // bucket name of this backend.\n //\n // required.\n bucket: \"...\",\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n // - TOS: `https://tos-cn-beijing.volces.com`\n // - TOS with region: `https://tos-{region}.volces.com`\n //\n // If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n // will prepend \"https://\" before it.\n // endpoint: \"...\",\n\n // Region represent the signing region of this endpoint.\n //\n // Required if endpoint is not provided.\n //\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `cn-beijing`.\n // region: \"...\",\n\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // access_key_id: \"...\",\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // secret_access_key: \"...\",\n\n // security_token of this backend.\n //\n // This token will expire after sometime, it's recommended to set security_token\n // by hand.\n // security_token: \"...\",\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n // - envs like `TOS_ACCESS_KEY_ID`\n // disable_config_load: \"true\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"tos\", {\n bucket: \"...\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"tos\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // root: \"...\",\n\n // bucket name of this backend.\n //\n // required.\n bucket: \"...\",\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n // - TOS: `https://tos-cn-beijing.volces.com`\n // - TOS with region: `https://tos-{region}.volces.com`\n //\n // If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n // will prepend \"https://\" before it.\n // endpoint: \"...\",\n\n // Region represent the signing region of this endpoint.\n //\n // Required if endpoint is not provided.\n //\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `cn-beijing`.\n // region: \"...\",\n\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // access_key_id: \"...\",\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // secret_access_key: \"...\",\n\n // security_token of this backend.\n //\n // This token will expire after sometime, it's recommended to set security_token\n // by hand.\n // security_token: \"...\",\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n // - envs like `TOS_ACCESS_KEY_ID`\n // disable_config_load: \"true\",\n\n // Skip signature will skip loading credentials and signing requests.\n // skip_signature: \"true\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"bucket\", \"...\");\nOperator op = Operator.of(\"tos\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// conf.put(\"root\", \"...\");\n\n// bucket name of this backend.\n//\n// required.\nconf.put(\"bucket\", \"...\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, e.g.\n// - TOS: `https://tos-cn-beijing.volces.com`\n// - TOS with region: `https://tos-{region}.volces.com`\n//\n// If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n// will prepend \"https://\" before it.\n// conf.put(\"endpoint\", \"...\");\n\n// Region represent the signing region of this endpoint.\n//\n// Required if endpoint is not provided.\n//\n// - If region is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// - If still not set, default to `cn-beijing`.\n// conf.put(\"region\", \"...\");\n\n// access_key_id of this backend.\n//\n// - If access_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// conf.put(\"access_key_id\", \"...\");\n\n// secret_access_key of this backend.\n//\n// - If secret_access_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// conf.put(\"secret_access_key\", \"...\");\n\n// security_token of this backend.\n//\n// This token will expire after sometime, it's recommended to set security_token\n// by hand.\n// conf.put(\"security_token\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// environment.\n//\n// For examples:\n// - envs like `TOS_ACCESS_KEY_ID`\n// conf.put(\"disable_config_load\", \"true\");\n\n// Skip signature will skip loading credentials and signing requests.\n// conf.put(\"skip_signature\", \"true\");\n\nOperator op = Operator.of(\"tos\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/tos\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(tos.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/tos\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(tos.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t//\n\t// default to `/` if not set.\n\t// \"root\": \"...\",\n\n\t// bucket name of this backend.\n\t//\n\t// required.\n\t\"bucket\": \"...\",\n\n\t// endpoint of this backend.\n\t//\n\t// Endpoint must be full uri, e.g.\n\t// - TOS: `https://tos-cn-beijing.volces.com`\n\t// - TOS with region: `https://tos-{region}.volces.com`\n\t//\n\t// If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n\t// will prepend \"https://\" before it.\n\t// \"endpoint\": \"...\",\n\n\t// Region represent the signing region of this endpoint.\n\t//\n\t// Required if endpoint is not provided.\n\t//\n\t// - If region is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// - If still not set, default to `cn-beijing`.\n\t// \"region\": \"...\",\n\n\t// access_key_id of this backend.\n\t//\n\t// - If access_key_id is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"access_key_id\": \"...\",\n\n\t// secret_access_key of this backend.\n\t//\n\t// - If secret_access_key is set, we will take user's input first.\n\t// - If not, we will try to load it from environment.\n\t// \"secret_access_key\": \"...\",\n\n\t// security_token of this backend.\n\t//\n\t// This token will expire after sometime, it's recommended to set security_token\n\t// by hand.\n\t// \"security_token\": \"...\",\n\n\t// Disable config load so that opendal will not load config from\n\t// environment.\n\t//\n\t// For examples:\n\t// - envs like `TOS_ACCESS_KEY_ID`\n\t// \"disable_config_load\": \"true\",\n\n\t// Skip signature will skip loading credentials and signing requests.\n\t// \"skip_signature\": \"true\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"bucket\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"tos\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of this backend.\n//\n// All operations will happen under this root.\n//\n// default to `/` if not set.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// bucket name of this backend.\n//\n// required.\nopendal_operator_options_set(options, \"bucket\", \"...\");\n\n// endpoint of this backend.\n//\n// Endpoint must be full uri, e.g.\n// - TOS: `https://tos-cn-beijing.volces.com`\n// - TOS with region: `https://tos-{region}.volces.com`\n//\n// If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n// will prepend \"https://\" before it.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// Region represent the signing region of this endpoint.\n//\n// Required if endpoint is not provided.\n//\n// - If region is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// - If still not set, default to `cn-beijing`.\n// opendal_operator_options_set(options, \"region\", \"...\");\n\n// access_key_id of this backend.\n//\n// - If access_key_id is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// opendal_operator_options_set(options, \"access_key_id\", \"...\");\n\n// secret_access_key of this backend.\n//\n// - If secret_access_key is set, we will take user's input first.\n// - If not, we will try to load it from environment.\n// opendal_operator_options_set(options, \"secret_access_key\", \"...\");\n\n// security_token of this backend.\n//\n// This token will expire after sometime, it's recommended to set security_token\n// by hand.\n// opendal_operator_options_set(options, \"security_token\", \"...\");\n\n// Disable config load so that opendal will not load config from\n// environment.\n//\n// For examples:\n// - envs like `TOS_ACCESS_KEY_ID`\n// opendal_operator_options_set(options, \"disable_config_load\", \"true\");\n\n// Skip signature will skip loading credentials and signing requests.\n// opendal_operator_options_set(options, \"skip_signature\", \"true\");\nopendal_result_operator_new result = opendal_operator_new(\"tos\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"bucket\", \"...\"},\n};\nopendal::Operator operator(\"tos\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of this backend.\n //\n // All operations will happen under this root.\n //\n // default to `/` if not set.\n // {\"root\", \"...\"},\n\n // bucket name of this backend.\n //\n // required.\n {\"bucket\", \"...\"},\n\n // endpoint of this backend.\n //\n // Endpoint must be full uri, e.g.\n // - TOS: `https://tos-cn-beijing.volces.com`\n // - TOS with region: `https://tos-{region}.volces.com`\n //\n // If user inputs endpoint without scheme like \"tos-cn-beijing.volces.com\", we\n // will prepend \"https://\" before it.\n // {\"endpoint\", \"...\"},\n\n // Region represent the signing region of this endpoint.\n //\n // Required if endpoint is not provided.\n //\n // - If region is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // - If still not set, default to `cn-beijing`.\n // {\"region\", \"...\"},\n\n // access_key_id of this backend.\n //\n // - If access_key_id is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // {\"access_key_id\", \"...\"},\n\n // secret_access_key of this backend.\n //\n // - If secret_access_key is set, we will take user's input first.\n // - If not, we will try to load it from environment.\n // {\"secret_access_key\", \"...\"},\n\n // security_token of this backend.\n //\n // This token will expire after sometime, it's recommended to set security_token\n // by hand.\n // {\"security_token\", \"...\"},\n\n // Disable config load so that opendal will not load config from\n // environment.\n //\n // For examples:\n // - envs like `TOS_ACCESS_KEY_ID`\n // {\"disable_config_load\", \"true\"},\n\n // Skip signature will skip loading credentials and signing requests.\n // {\"skip_signature\", \"true\"},\n};\nopendal::Operator operator(\"tos\", config);" } ] }, @@ -4441,26 +5601,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"upyun\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"upyun\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // bucket address of this backend.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // username of this backend.\n // (\"operator\".to_string(), \"...\".to_string()),\n\n // password of this backend.\n // (\"password\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"upyun\", [\n (\"bucket\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"upyun\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // bucket address of this backend.\n (\"bucket\".to_string(), \"...\".to_string()),\n\n // username of this backend.\n // (\"operator\".to_string(), \"...\".to_string()),\n\n // password of this backend.\n // (\"password\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"bucket\", \"...\");\nOperator operator = Operator.of(\"upyun\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// bucket address of this backend.\nconfig.put(\"bucket\", \"...\");\n\n// username of this backend.\n// config.put(\"operator\", \"...\");\n\n// password of this backend.\n// config.put(\"password\", \"...\");\nOperator operator = Operator.of(\"upyun\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"upyun\",\n bucket=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"upyun\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # bucket address of this backend.\n bucket=\"...\",\n\n # username of this backend.\n # operator=\"...\",\n\n # password of this backend.\n # password=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"upyun\",\n bucket=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"upyun\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # bucket address of this backend.\n bucket=\"...\",\n\n # username of this backend.\n # operator=\"...\",\n\n # password of this backend.\n # password=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"upyun\", {\n bucket: \"...\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"upyun\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // bucket address of this backend.\n bucket: \"...\",\n\n // username of this backend.\n // operator: \"...\",\n\n // password of this backend.\n // password: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"upyun\", {\n bucket: \"...\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"upyun\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // bucket address of this backend.\n bucket: \"...\",\n\n // username of this backend.\n // operator: \"...\",\n\n // password of this backend.\n // password: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"bucket\", \"...\");\nOperator op = Operator.of(\"upyun\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// conf.put(\"root\", \"...\");\n\n// bucket address of this backend.\nconf.put(\"bucket\", \"...\");\n\n// username of this backend.\n// conf.put(\"operator\", \"...\");\n\n// password of this backend.\n// conf.put(\"password\", \"...\");\n\nOperator op = Operator.of(\"upyun\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/upyun\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(upyun.Scheme, opendal.OperatorOptions{\n\t\"bucket\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/upyun\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(upyun.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// bucket address of this backend.\n\t\"bucket\": \"...\",\n\n\t// username of this backend.\n\t// \"operator\": \"...\",\n\n\t// password of this backend.\n\t// \"password\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"bucket\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"upyun\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of this backend.\n//\n// All operations will happen under this root.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// bucket address of this backend.\nopendal_operator_options_set(options, \"bucket\", \"...\");\n\n// username of this backend.\n// opendal_operator_options_set(options, \"operator\", \"...\");\n\n// password of this backend.\n// opendal_operator_options_set(options, \"password\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"upyun\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"bucket\", \"...\"},\n};\nopendal::Operator operator(\"upyun\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of this backend.\n //\n // All operations will happen under this root.\n // {\"root\", \"...\"},\n\n // bucket address of this backend.\n {\"bucket\", \"...\"},\n\n // username of this backend.\n // {\"operator\", \"...\"},\n\n // password of this backend.\n // {\"password\", \"...\"},\n};\nopendal::Operator operator(\"upyun\", config);" } ] }, @@ -4504,26 +5682,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"vercel-artifacts\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"vercel-artifacts\", [\n // The access token for Vercel.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // The endpoint for the Vercel artifacts API.\n //\n // Defaults to `https://api.vercel.com`.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The Vercel team ID. When set, the `teamId` query parameter\n // is appended to all API requests.\n // (\"team_id\".to_string(), \"...\".to_string()),\n\n // The Vercel team slug. When set, the `slug` query parameter\n // is appended to all API requests.\n // (\"team_slug\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"vercel-artifacts\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"vercel-artifacts\", [\n // The access token for Vercel.\n // (\"access_token\".to_string(), \"...\".to_string()),\n\n // The endpoint for the Vercel artifacts API.\n //\n // Defaults to `https://api.vercel.com`.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // The Vercel team ID. When set, the `teamId` query parameter\n // is appended to all API requests.\n // (\"team_id\".to_string(), \"...\".to_string()),\n\n // The Vercel team slug. When set, the `slug` query parameter\n // is appended to all API requests.\n // (\"team_slug\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"vercel-artifacts\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// The access token for Vercel.\n// config.put(\"access_token\", \"...\");\n\n// The endpoint for the Vercel artifacts API.\n//\n// Defaults to `https://api.vercel.com`.\n// config.put(\"endpoint\", \"...\");\n\n// The Vercel team ID. When set, the `teamId` query parameter\n// is appended to all API requests.\n// config.put(\"team_id\", \"...\");\n\n// The Vercel team slug. When set, the `slug` query parameter\n// is appended to all API requests.\n// config.put(\"team_slug\", \"...\");\nOperator operator = Operator.of(\"vercel-artifacts\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"vercel-artifacts\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"vercel-artifacts\",\n # The access token for Vercel.\n # access_token=\"...\",\n\n # The endpoint for the Vercel artifacts API.\n #\n # Defaults to `https://api.vercel.com`.\n # endpoint=\"...\",\n\n # The Vercel team ID. When set, the `teamId` query parameter\n # is appended to all API requests.\n # team_id=\"...\",\n\n # The Vercel team slug. When set, the `slug` query parameter\n # is appended to all API requests.\n # team_slug=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"vercel-artifacts\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"vercel-artifacts\",\n # The access token for Vercel.\n # access_token=\"...\",\n\n # The endpoint for the Vercel artifacts API.\n #\n # Defaults to `https://api.vercel.com`.\n # endpoint=\"...\",\n\n # The Vercel team ID. When set, the `teamId` query parameter\n # is appended to all API requests.\n # team_id=\"...\",\n\n # The Vercel team slug. When set, the `slug` query parameter\n # is appended to all API requests.\n # team_slug=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"vercel-artifacts\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"vercel-artifacts\", {\n // The access token for Vercel.\n // access_token: \"...\",\n\n // The endpoint for the Vercel artifacts API.\n //\n // Defaults to `https://api.vercel.com`.\n // endpoint: \"...\",\n\n // The Vercel team ID. When set, the `teamId` query parameter\n // is appended to all API requests.\n // team_id: \"...\",\n\n // The Vercel team slug. When set, the `slug` query parameter\n // is appended to all API requests.\n // team_slug: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"vercel-artifacts\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"vercel-artifacts\", {\n // The access token for Vercel.\n // access_token: \"...\",\n\n // The endpoint for the Vercel artifacts API.\n //\n // Defaults to `https://api.vercel.com`.\n // endpoint: \"...\",\n\n // The Vercel team ID. When set, the `teamId` query parameter\n // is appended to all API requests.\n // team_id: \"...\",\n\n // The Vercel team slug. When set, the `slug` query parameter\n // is appended to all API requests.\n // team_slug: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"vercel-artifacts\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// The access token for Vercel.\n// conf.put(\"access_token\", \"...\");\n\n// The endpoint for the Vercel artifacts API.\n//\n// Defaults to `https://api.vercel.com`.\n// conf.put(\"endpoint\", \"...\");\n\n// The Vercel team ID. When set, the `teamId` query parameter\n// is appended to all API requests.\n// conf.put(\"team_id\", \"...\");\n\n// The Vercel team slug. When set, the `slug` query parameter\n// is appended to all API requests.\n// conf.put(\"team_slug\", \"...\");\n\nOperator op = Operator.of(\"vercel-artifacts\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/vercel-artifacts\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(vercel-artifacts.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/vercel-artifacts\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(vercel-artifacts.Scheme, opendal.OperatorOptions{\n\t// The access token for Vercel.\n\t// \"access_token\": \"...\",\n\n\t// The endpoint for the Vercel artifacts API.\n\t//\n\t// Defaults to `https://api.vercel.com`.\n\t// \"endpoint\": \"...\",\n\n\t// The Vercel team ID. When set, the `teamId` query parameter\n\t// is appended to all API requests.\n\t// \"team_id\": \"...\",\n\n\t// The Vercel team slug. When set, the `slug` query parameter\n\t// is appended to all API requests.\n\t// \"team_slug\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"vercel-artifacts\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// The access token for Vercel.\n// opendal_operator_options_set(options, \"access_token\", \"...\");\n\n// The endpoint for the Vercel artifacts API.\n//\n// Defaults to `https://api.vercel.com`.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// The Vercel team ID. When set, the `teamId` query parameter\n// is appended to all API requests.\n// opendal_operator_options_set(options, \"team_id\", \"...\");\n\n// The Vercel team slug. When set, the `slug` query parameter\n// is appended to all API requests.\n// opendal_operator_options_set(options, \"team_slug\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"vercel-artifacts\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"vercel-artifacts\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // The access token for Vercel.\n // {\"access_token\", \"...\"},\n\n // The endpoint for the Vercel artifacts API.\n //\n // Defaults to `https://api.vercel.com`.\n // {\"endpoint\", \"...\"},\n\n // The Vercel team ID. When set, the `teamId` query parameter\n // is appended to all API requests.\n // {\"team_id\", \"...\"},\n\n // The Vercel team slug. When set, the `slug` query parameter\n // is appended to all API requests.\n // {\"team_slug\", \"...\"},\n};\nopendal::Operator operator(\"vercel-artifacts\", config);" } ] }, @@ -4553,14 +5749,32 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"vercel-blob\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"vercel-blob\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // vercel blob token.\n // (\"token\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"vercel-blob\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"vercel-blob\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // vercel blob token.\n // (\"token\".to_string(), \"...\".to_string()),\n])?;" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"vercel-blob\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"vercel-blob\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # vercel blob token.\n # token=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"vercel-blob\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"vercel-blob\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # vercel blob token.\n # token=\"...\",\n)" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/vercel-blob\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(vercel-blob.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/vercel-blob\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(vercel-blob.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// vercel blob token.\n\t// \"token\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"vercel-blob\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of this backend.\n//\n// All operations will happen under this root.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// vercel blob token.\n// opendal_operator_options_set(options, \"token\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"vercel-blob\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"vercel-blob\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of this backend.\n //\n // All operations will happen under this root.\n // {\"root\", \"...\"},\n\n // vercel blob token.\n // {\"token\", \"...\"},\n};\nopendal::Operator operator(\"vercel-blob\", config);" } ] }, @@ -4654,26 +5868,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"webdav\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"webdav\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // username of this backend\n // (\"username\".to_string(), \"...\".to_string()),\n\n // password of this backend\n // (\"password\".to_string(), \"...\".to_string()),\n\n // token of this backend\n // (\"token\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Disable automatic parent directory creation before write operations.\n //\n // By default, OpenDAL creates parent directories using MKCOL before writing files.\n // This requires PROPFIND support to check directory existence.\n //\n // Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n // or don't require explicit directory creation. Enable this option to skip\n // the MKCOL calls and write files directly.\n //\n // Default: false\n // (\"disable_create_dir\".to_string(), \"true\".to_string()),\n\n // The XML namespace prefix for user metadata properties.\n //\n // This prefix is used in PROPPATCH/PROPFIND XML requests.\n // Different servers may require different prefixes.\n //\n // Default: \"opendal\"\n // (\"user_metadata_prefix\".to_string(), \"...\".to_string()),\n\n // The XML namespace URI for user metadata properties.\n //\n // This URI uniquely identifies the namespace for custom properties.\n // Different servers may require different namespace URIs.\n // For example, Nextcloud might work better with its own namespace.\n //\n // Default: `https://opendal.apache.org/ns`\n // (\"user_metadata_uri\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"webdav\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"webdav\", [\n // endpoint of this backend\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // username of this backend\n // (\"username\".to_string(), \"...\".to_string()),\n\n // password of this backend\n // (\"password\".to_string(), \"...\".to_string()),\n\n // token of this backend\n // (\"token\".to_string(), \"...\".to_string()),\n\n // root of this backend\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Disable automatic parent directory creation before write operations.\n //\n // By default, OpenDAL creates parent directories using MKCOL before writing files.\n // This requires PROPFIND support to check directory existence.\n //\n // Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n // or don't require explicit directory creation. Enable this option to skip\n // the MKCOL calls and write files directly.\n //\n // Default: false\n // (\"disable_create_dir\".to_string(), \"true\".to_string()),\n\n // The XML namespace prefix for user metadata properties.\n //\n // This prefix is used in PROPPATCH/PROPFIND XML requests.\n // Different servers may require different prefixes.\n //\n // Default: \"opendal\"\n // (\"user_metadata_prefix\".to_string(), \"...\".to_string()),\n\n // The XML namespace URI for user metadata properties.\n //\n // This URI uniquely identifies the namespace for custom properties.\n // Different servers may require different namespace URIs.\n // For example, Nextcloud might work better with its own namespace.\n //\n // Default: `https://opendal.apache.org/ns`\n // (\"user_metadata_uri\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"webdav\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// endpoint of this backend\n// config.put(\"endpoint\", \"...\");\n\n// username of this backend\n// config.put(\"username\", \"...\");\n\n// password of this backend\n// config.put(\"password\", \"...\");\n\n// token of this backend\n// config.put(\"token\", \"...\");\n\n// root of this backend\n// config.put(\"root\", \"...\");\n\n// Disable automatic parent directory creation before write operations.\n//\n// By default, OpenDAL creates parent directories using MKCOL before writing files.\n// This requires PROPFIND support to check directory existence.\n//\n// Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n// or don't require explicit directory creation. Enable this option to skip\n// the MKCOL calls and write files directly.\n//\n// Default: false\n// config.put(\"disable_create_dir\", \"true\");\n\n// The XML namespace prefix for user metadata properties.\n//\n// This prefix is used in PROPPATCH/PROPFIND XML requests.\n// Different servers may require different prefixes.\n//\n// Default: \"opendal\"\n// config.put(\"user_metadata_prefix\", \"...\");\n\n// The XML namespace URI for user metadata properties.\n//\n// This URI uniquely identifies the namespace for custom properties.\n// Different servers may require different namespace URIs.\n// For example, Nextcloud might work better with its own namespace.\n//\n// Default: `https://opendal.apache.org/ns`\n// config.put(\"user_metadata_uri\", \"...\");\nOperator operator = Operator.of(\"webdav\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"webdav\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"webdav\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # username of this backend\n # username=\"...\",\n\n # password of this backend\n # password=\"...\",\n\n # token of this backend\n # token=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # Disable automatic parent directory creation before write operations.\n #\n # By default, OpenDAL creates parent directories using MKCOL before writing files.\n # This requires PROPFIND support to check directory existence.\n #\n # Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n # or don't require explicit directory creation. Enable this option to skip\n # the MKCOL calls and write files directly.\n #\n # Default: false\n # disable_create_dir=\"true\",\n\n # The XML namespace prefix for user metadata properties.\n #\n # This prefix is used in PROPPATCH/PROPFIND XML requests.\n # Different servers may require different prefixes.\n #\n # Default: \"opendal\"\n # user_metadata_prefix=\"...\",\n\n # The XML namespace URI for user metadata properties.\n #\n # This URI uniquely identifies the namespace for custom properties.\n # Different servers may require different namespace URIs.\n # For example, Nextcloud might work better with its own namespace.\n #\n # Default: `https://opendal.apache.org/ns`\n # user_metadata_uri=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"webdav\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"webdav\",\n # endpoint of this backend\n # endpoint=\"...\",\n\n # username of this backend\n # username=\"...\",\n\n # password of this backend\n # password=\"...\",\n\n # token of this backend\n # token=\"...\",\n\n # root of this backend\n # root=\"...\",\n\n # Disable automatic parent directory creation before write operations.\n #\n # By default, OpenDAL creates parent directories using MKCOL before writing files.\n # This requires PROPFIND support to check directory existence.\n #\n # Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n # or don't require explicit directory creation. Enable this option to skip\n # the MKCOL calls and write files directly.\n #\n # Default: false\n # disable_create_dir=\"true\",\n\n # The XML namespace prefix for user metadata properties.\n #\n # This prefix is used in PROPPATCH/PROPFIND XML requests.\n # Different servers may require different prefixes.\n #\n # Default: \"opendal\"\n # user_metadata_prefix=\"...\",\n\n # The XML namespace URI for user metadata properties.\n #\n # This URI uniquely identifies the namespace for custom properties.\n # Different servers may require different namespace URIs.\n # For example, Nextcloud might work better with its own namespace.\n #\n # Default: `https://opendal.apache.org/ns`\n # user_metadata_uri=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"webdav\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"webdav\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // username of this backend\n // username: \"...\",\n\n // password of this backend\n // password: \"...\",\n\n // token of this backend\n // token: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // Disable automatic parent directory creation before write operations.\n //\n // By default, OpenDAL creates parent directories using MKCOL before writing files.\n // This requires PROPFIND support to check directory existence.\n //\n // Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n // or don't require explicit directory creation. Enable this option to skip\n // the MKCOL calls and write files directly.\n //\n // Default: false\n // disable_create_dir: \"true\",\n\n // The XML namespace prefix for user metadata properties.\n //\n // This prefix is used in PROPPATCH/PROPFIND XML requests.\n // Different servers may require different prefixes.\n //\n // Default: \"opendal\"\n // user_metadata_prefix: \"...\",\n\n // The XML namespace URI for user metadata properties.\n //\n // This URI uniquely identifies the namespace for custom properties.\n // Different servers may require different namespace URIs.\n // For example, Nextcloud might work better with its own namespace.\n //\n // Default: `https://opendal.apache.org/ns`\n // user_metadata_uri: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"webdav\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"webdav\", {\n // endpoint of this backend\n // endpoint: \"...\",\n\n // username of this backend\n // username: \"...\",\n\n // password of this backend\n // password: \"...\",\n\n // token of this backend\n // token: \"...\",\n\n // root of this backend\n // root: \"...\",\n\n // Disable automatic parent directory creation before write operations.\n //\n // By default, OpenDAL creates parent directories using MKCOL before writing files.\n // This requires PROPFIND support to check directory existence.\n //\n // Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n // or don't require explicit directory creation. Enable this option to skip\n // the MKCOL calls and write files directly.\n //\n // Default: false\n // disable_create_dir: \"true\",\n\n // The XML namespace prefix for user metadata properties.\n //\n // This prefix is used in PROPPATCH/PROPFIND XML requests.\n // Different servers may require different prefixes.\n //\n // Default: \"opendal\"\n // user_metadata_prefix: \"...\",\n\n // The XML namespace URI for user metadata properties.\n //\n // This URI uniquely identifies the namespace for custom properties.\n // Different servers may require different namespace URIs.\n // For example, Nextcloud might work better with its own namespace.\n //\n // Default: `https://opendal.apache.org/ns`\n // user_metadata_uri: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"webdav\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// endpoint of this backend\n// conf.put(\"endpoint\", \"...\");\n\n// username of this backend\n// conf.put(\"username\", \"...\");\n\n// password of this backend\n// conf.put(\"password\", \"...\");\n\n// token of this backend\n// conf.put(\"token\", \"...\");\n\n// root of this backend\n// conf.put(\"root\", \"...\");\n\n// Disable automatic parent directory creation before write operations.\n//\n// By default, OpenDAL creates parent directories using MKCOL before writing files.\n// This requires PROPFIND support to check directory existence.\n//\n// Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n// or don't require explicit directory creation. Enable this option to skip\n// the MKCOL calls and write files directly.\n//\n// Default: false\n// conf.put(\"disable_create_dir\", \"true\");\n\n// The XML namespace prefix for user metadata properties.\n//\n// This prefix is used in PROPPATCH/PROPFIND XML requests.\n// Different servers may require different prefixes.\n//\n// Default: \"opendal\"\n// conf.put(\"user_metadata_prefix\", \"...\");\n\n// The XML namespace URI for user metadata properties.\n//\n// This URI uniquely identifies the namespace for custom properties.\n// Different servers may require different namespace URIs.\n// For example, Nextcloud might work better with its own namespace.\n//\n// Default: `https://opendal.apache.org/ns`\n// conf.put(\"user_metadata_uri\", \"...\");\n\nOperator op = Operator.of(\"webdav\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"webdav\", {\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"webdav\", {\n # endpoint of this backend\n # \"endpoint\" => \"...\",\n\n # username of this backend\n # \"username\" => \"...\",\n\n # password of this backend\n # \"password\" => \"...\",\n\n # token of this backend\n # \"token\" => \"...\",\n\n # root of this backend\n # \"root\" => \"...\",\n\n # Disable automatic parent directory creation before write operations.\n #\n # By default, OpenDAL creates parent directories using MKCOL before writing files.\n # This requires PROPFIND support to check directory existence.\n #\n # Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n # or don't require explicit directory creation. Enable this option to skip\n # the MKCOL calls and write files directly.\n #\n # Default: false\n # \"disable_create_dir\" => \"true\",\n\n # The XML namespace prefix for user metadata properties.\n #\n # This prefix is used in PROPPATCH/PROPFIND XML requests.\n # Different servers may require different prefixes.\n #\n # Default: \"opendal\"\n # \"user_metadata_prefix\" => \"...\",\n\n # The XML namespace URI for user metadata properties.\n #\n # This URI uniquely identifies the namespace for custom properties.\n # Different servers may require different namespace URIs.\n # For example, Nextcloud might work better with its own namespace.\n #\n # Default: `https://opendal.apache.org/ns`\n # \"user_metadata_uri\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/webdav\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(webdav.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/webdav\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(webdav.Scheme, opendal.OperatorOptions{\n\t// endpoint of this backend\n\t// \"endpoint\": \"...\",\n\n\t// username of this backend\n\t// \"username\": \"...\",\n\n\t// password of this backend\n\t// \"password\": \"...\",\n\n\t// token of this backend\n\t// \"token\": \"...\",\n\n\t// root of this backend\n\t// \"root\": \"...\",\n\n\t// Disable automatic parent directory creation before write operations.\n\t//\n\t// By default, OpenDAL creates parent directories using MKCOL before writing files.\n\t// This requires PROPFIND support to check directory existence.\n\t//\n\t// Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n\t// or don't require explicit directory creation. Enable this option to skip\n\t// the MKCOL calls and write files directly.\n\t//\n\t// Default: false\n\t// \"disable_create_dir\": \"true\",\n\n\t// The XML namespace prefix for user metadata properties.\n\t//\n\t// This prefix is used in PROPPATCH/PROPFIND XML requests.\n\t// Different servers may require different prefixes.\n\t//\n\t// Default: \"opendal\"\n\t// \"user_metadata_prefix\": \"...\",\n\n\t// The XML namespace URI for user metadata properties.\n\t//\n\t// This URI uniquely identifies the namespace for custom properties.\n\t// Different servers may require different namespace URIs.\n\t// For example, Nextcloud might work better with its own namespace.\n\t//\n\t// Default: `https://opendal.apache.org/ns`\n\t// \"user_metadata_uri\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"webdav\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// endpoint of this backend\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// username of this backend\n// opendal_operator_options_set(options, \"username\", \"...\");\n\n// password of this backend\n// opendal_operator_options_set(options, \"password\", \"...\");\n\n// token of this backend\n// opendal_operator_options_set(options, \"token\", \"...\");\n\n// root of this backend\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Disable automatic parent directory creation before write operations.\n//\n// By default, OpenDAL creates parent directories using MKCOL before writing files.\n// This requires PROPFIND support to check directory existence.\n//\n// Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n// or don't require explicit directory creation. Enable this option to skip\n// the MKCOL calls and write files directly.\n//\n// Default: false\n// opendal_operator_options_set(options, \"disable_create_dir\", \"true\");\n\n// The XML namespace prefix for user metadata properties.\n//\n// This prefix is used in PROPPATCH/PROPFIND XML requests.\n// Different servers may require different prefixes.\n//\n// Default: \"opendal\"\n// opendal_operator_options_set(options, \"user_metadata_prefix\", \"...\");\n\n// The XML namespace URI for user metadata properties.\n//\n// This URI uniquely identifies the namespace for custom properties.\n// Different servers may require different namespace URIs.\n// For example, Nextcloud might work better with its own namespace.\n//\n// Default: `https://opendal.apache.org/ns`\n// opendal_operator_options_set(options, \"user_metadata_uri\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"webdav\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"webdav\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // endpoint of this backend\n // {\"endpoint\", \"...\"},\n\n // username of this backend\n // {\"username\", \"...\"},\n\n // password of this backend\n // {\"password\", \"...\"},\n\n // token of this backend\n // {\"token\", \"...\"},\n\n // root of this backend\n // {\"root\", \"...\"},\n\n // Disable automatic parent directory creation before write operations.\n //\n // By default, OpenDAL creates parent directories using MKCOL before writing files.\n // This requires PROPFIND support to check directory existence.\n //\n // Some WebDAV-compatible servers (e.g., bazel-remote) don't support PROPFIND\n // or don't require explicit directory creation. Enable this option to skip\n // the MKCOL calls and write files directly.\n //\n // Default: false\n // {\"disable_create_dir\", \"true\"},\n\n // The XML namespace prefix for user metadata properties.\n //\n // This prefix is used in PROPPATCH/PROPFIND XML requests.\n // Different servers may require different prefixes.\n //\n // Default: \"opendal\"\n // {\"user_metadata_prefix\", \"...\"},\n\n // The XML namespace URI for user metadata properties.\n //\n // This URI uniquely identifies the namespace for custom properties.\n // Different servers may require different namespace URIs.\n // For example, Nextcloud might work better with its own namespace.\n //\n // Default: `https://opendal.apache.org/ns`\n // {\"user_metadata_uri\", \"...\"},\n};\nopendal::Operator operator(\"webdav\", config);" } ] }, @@ -4731,26 +5969,50 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"webhdfs\", [\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"webhdfs\", [\n // Root for webhdfs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for webhdfs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Name of the user for webhdfs.\n // (\"user_name\".to_string(), \"...\".to_string()),\n\n // Delegation token for webhdfs.\n // (\"delegation\".to_string(), \"...\".to_string()),\n\n // Disable batch listing\n // (\"disable_list_batch\".to_string(), \"true\".to_string()),\n\n // atomic_write_dir of this backend\n // (\"atomic_write_dir\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"webhdfs\", [\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"webhdfs\", [\n // Root for webhdfs.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // Endpoint for webhdfs.\n // (\"endpoint\".to_string(), \"...\".to_string()),\n\n // Name of the user for webhdfs.\n // (\"user_name\".to_string(), \"...\".to_string()),\n\n // Delegation token for webhdfs.\n // (\"delegation\".to_string(), \"...\".to_string()),\n\n // Disable batch listing\n // (\"disable_list_batch\".to_string(), \"true\".to_string()),\n\n // atomic_write_dir of this backend\n // (\"atomic_write_dir\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nOperator operator = Operator.of(\"webhdfs\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// Root for webhdfs.\n// config.put(\"root\", \"...\");\n\n// Endpoint for webhdfs.\n// config.put(\"endpoint\", \"...\");\n\n// Name of the user for webhdfs.\n// config.put(\"user_name\", \"...\");\n\n// Delegation token for webhdfs.\n// config.put(\"delegation\", \"...\");\n\n// Disable batch listing\n// config.put(\"disable_list_batch\", \"true\");\n\n// atomic_write_dir of this backend\n// config.put(\"atomic_write_dir\", \"...\");\nOperator operator = Operator.of(\"webhdfs\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"webhdfs\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"webhdfs\",\n # Root for webhdfs.\n # root=\"...\",\n\n # Endpoint for webhdfs.\n # endpoint=\"...\",\n\n # Name of the user for webhdfs.\n # user_name=\"...\",\n\n # Delegation token for webhdfs.\n # delegation=\"...\",\n\n # Disable batch listing\n # disable_list_batch=\"true\",\n\n # atomic_write_dir of this backend\n # atomic_write_dir=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"webhdfs\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"webhdfs\",\n # Root for webhdfs.\n # root=\"...\",\n\n # Endpoint for webhdfs.\n # endpoint=\"...\",\n\n # Name of the user for webhdfs.\n # user_name=\"...\",\n\n # Delegation token for webhdfs.\n # delegation=\"...\",\n\n # Disable batch listing\n # disable_list_batch=\"true\",\n\n # atomic_write_dir of this backend\n # atomic_write_dir=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"webhdfs\", {\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"webhdfs\", {\n // Root for webhdfs.\n // root: \"...\",\n\n // Endpoint for webhdfs.\n // endpoint: \"...\",\n\n // Name of the user for webhdfs.\n // user_name: \"...\",\n\n // Delegation token for webhdfs.\n // delegation: \"...\",\n\n // Disable batch listing\n // disable_list_batch: \"true\",\n\n // atomic_write_dir of this backend\n // atomic_write_dir: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"webhdfs\", {\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"webhdfs\", {\n // Root for webhdfs.\n // root: \"...\",\n\n // Endpoint for webhdfs.\n // endpoint: \"...\",\n\n // Name of the user for webhdfs.\n // user_name: \"...\",\n\n // Delegation token for webhdfs.\n // delegation: \"...\",\n\n // Disable batch listing\n // disable_list_batch: \"true\",\n\n // atomic_write_dir of this backend\n // atomic_write_dir: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nOperator op = Operator.of(\"webhdfs\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// Root for webhdfs.\n// conf.put(\"root\", \"...\");\n\n// Endpoint for webhdfs.\n// conf.put(\"endpoint\", \"...\");\n\n// Name of the user for webhdfs.\n// conf.put(\"user_name\", \"...\");\n\n// Delegation token for webhdfs.\n// conf.put(\"delegation\", \"...\");\n\n// Disable batch listing\n// conf.put(\"disable_list_batch\", \"true\");\n\n// atomic_write_dir of this backend\n// conf.put(\"atomic_write_dir\", \"...\");\n\nOperator op = Operator.of(\"webhdfs\", conf);" + "binding": "ruby", + "language": "ruby", + "minimal": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"webhdfs\", {\n})", + "full": "require \"opendal\"\n\noperator = OpenDal::Operator.new(\"webhdfs\", {\n # Root for webhdfs.\n # \"root\" => \"...\",\n\n # Endpoint for webhdfs.\n # \"endpoint\" => \"...\",\n\n # Name of the user for webhdfs.\n # \"user_name\" => \"...\",\n\n # Delegation token for webhdfs.\n # \"delegation\" => \"...\",\n\n # Disable batch listing\n # \"disable_list_batch\" => \"true\",\n\n # atomic_write_dir of this backend\n # \"atomic_write_dir\" => \"...\",\n})" + }, + { + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/webhdfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(webhdfs.Scheme, opendal.OperatorOptions{\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/webhdfs\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(webhdfs.Scheme, opendal.OperatorOptions{\n\t// Root for webhdfs.\n\t// \"root\": \"...\",\n\n\t// Endpoint for webhdfs.\n\t// \"endpoint\": \"...\",\n\n\t// Name of the user for webhdfs.\n\t// \"user_name\": \"...\",\n\n\t// Delegation token for webhdfs.\n\t// \"delegation\": \"...\",\n\n\t// Disable batch listing\n\t// \"disable_list_batch\": \"true\",\n\n\t// atomic_write_dir of this backend\n\t// \"atomic_write_dir\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_result_operator_new result = opendal_operator_new(\"webhdfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// Root for webhdfs.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// Endpoint for webhdfs.\n// opendal_operator_options_set(options, \"endpoint\", \"...\");\n\n// Name of the user for webhdfs.\n// opendal_operator_options_set(options, \"user_name\", \"...\");\n\n// Delegation token for webhdfs.\n// opendal_operator_options_set(options, \"delegation\", \"...\");\n\n// Disable batch listing\n// opendal_operator_options_set(options, \"disable_list_batch\", \"true\");\n\n// atomic_write_dir of this backend\n// opendal_operator_options_set(options, \"atomic_write_dir\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"webhdfs\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n};\nopendal::Operator operator(\"webhdfs\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // Root for webhdfs.\n // {\"root\", \"...\"},\n\n // Endpoint for webhdfs.\n // {\"endpoint\", \"...\"},\n\n // Name of the user for webhdfs.\n // {\"user_name\", \"...\"},\n\n // Delegation token for webhdfs.\n // {\"delegation\", \"...\"},\n\n // Disable batch listing\n // {\"disable_list_batch\", \"true\"},\n\n // atomic_write_dir of this backend\n // {\"atomic_write_dir\", \"...\"},\n};\nopendal::Operator operator(\"webhdfs\", config);" } ] }, @@ -4780,26 +6042,44 @@ { "binding": "rust", "language": "rust", - "minimal": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"yandex-disk\", [\n (\"access_token\".to_string(), \"...\".to_string()),\n])?;", - "full": "use opendal::Operator;\n\nlet op = Operator::via_iter(\"yandex-disk\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // yandex disk oauth access_token.\n (\"access_token\".to_string(), \"...\".to_string()),\n\n])?;" + "minimal": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"yandex-disk\", [\n (\"access_token\".to_string(), \"...\".to_string()),\n])?;", + "full": "use opendal::Operator;\n\nlet operator = Operator::via_iter(\"yandex-disk\", [\n // root of this backend.\n //\n // All operations will happen under this root.\n // (\"root\".to_string(), \"...\".to_string()),\n\n // yandex disk oauth access_token.\n (\"access_token\".to_string(), \"...\".to_string()),\n])?;" + }, + { + "binding": "java", + "language": "java", + "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\nconfig.put(\"access_token\", \"...\");\nOperator operator = Operator.of(\"yandex-disk\", config);", + "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap config = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// config.put(\"root\", \"...\");\n\n// yandex disk oauth access_token.\nconfig.put(\"access_token\", \"...\");\nOperator operator = Operator.of(\"yandex-disk\", config);" }, { "binding": "python", "language": "python", - "minimal": "import opendal\n\nop = opendal.Operator(\n \"yandex-disk\",\n access_token=\"...\",\n)", - "full": "import opendal\n\nop = opendal.Operator(\n \"yandex-disk\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # yandex disk oauth access_token.\n access_token=\"...\",\n\n)" + "minimal": "import opendal\n\noperator = opendal.Operator(\n \"yandex-disk\",\n access_token=\"...\",\n)", + "full": "import opendal\n\noperator = opendal.Operator(\n \"yandex-disk\",\n # root of this backend.\n #\n # All operations will happen under this root.\n # root=\"...\",\n\n # yandex disk oauth access_token.\n access_token=\"...\",\n)" }, { "binding": "nodejs", "language": "javascript", - "minimal": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"yandex-disk\", {\n access_token: \"...\",\n});", - "full": "import { Operator } from \"opendal\";\n\nconst op = new Operator(\"yandex-disk\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // yandex disk oauth access_token.\n access_token: \"...\",\n\n});" + "minimal": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"yandex-disk\", {\n access_token: \"...\",\n});", + "full": "import { Operator } from \"opendal\";\n\nconst operator = new Operator(\"yandex-disk\", {\n // root of this backend.\n //\n // All operations will happen under this root.\n // root: \"...\",\n\n // yandex disk oauth access_token.\n access_token: \"...\",\n});" }, { - "binding": "java", - "language": "java", - "minimal": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\nconf.put(\"access_token\", \"...\");\nOperator op = Operator.of(\"yandex-disk\", conf);", - "full": "import java.util.HashMap;\nimport java.util.Map;\nimport org.apache.opendal.Operator;\n\nMap conf = new HashMap<>();\n// root of this backend.\n//\n// All operations will happen under this root.\n// conf.put(\"root\", \"...\");\n\n// yandex disk oauth access_token.\nconf.put(\"access_token\", \"...\");\n\nOperator op = Operator.of(\"yandex-disk\", conf);" + "binding": "go", + "language": "go", + "minimal": "import (\n\t\"github.com/apache/opendal-go-services/yandex-disk\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(yandex-disk.Scheme, opendal.OperatorOptions{\n\t\"access_token\": \"...\",\n})", + "full": "import (\n\t\"github.com/apache/opendal-go-services/yandex-disk\"\n\topendal \"github.com/apache/opendal/bindings/go\"\n)\n\noperator, err := opendal.NewOperator(yandex-disk.Scheme, opendal.OperatorOptions{\n\t// root of this backend.\n\t//\n\t// All operations will happen under this root.\n\t// \"root\": \"...\",\n\n\t// yandex disk oauth access_token.\n\t\"access_token\": \"...\",\n})" + }, + { + "binding": "c", + "language": "c", + "minimal": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\nopendal_operator_options_set(options, \"access_token\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"yandex-disk\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);", + "full": "#include \"opendal.h\"\n\nopendal_operator_options *options = opendal_operator_options_new();\n// root of this backend.\n//\n// All operations will happen under this root.\n// opendal_operator_options_set(options, \"root\", \"...\");\n\n// yandex disk oauth access_token.\nopendal_operator_options_set(options, \"access_token\", \"...\");\nopendal_result_operator_new result = opendal_operator_new(\"yandex-disk\", options);\nopendal_operator *operator = result.op;\n\n/* ... use operator ... */\n\nopendal_operator_free(operator);\nopendal_operator_options_free(options);" + }, + { + "binding": "cpp", + "language": "cpp", + "minimal": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n {\"access_token\", \"...\"},\n};\nopendal::Operator operator(\"yandex-disk\", config);", + "full": "#include \"opendal.hpp\"\n\nstd::unordered_map config{\n // root of this backend.\n //\n // All operations will happen under this root.\n // {\"root\", \"...\"},\n\n // yandex disk oauth access_token.\n {\"access_token\", \"...\"},\n};\nopendal::Operator operator(\"yandex-disk\", config);" } ] } diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index b62ac9383877..c0c66a0d12bb 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -393,7 +393,7 @@ const config = { prism: { theme: themes.github, darkTheme: themes.dracula, - additionalLanguages: ["rust", "java", "groovy", "python"], + additionalLanguages: ["rust", "java", "groovy", "python", "ruby"], }, zoom: { selector: "img:not(a img)",