opendal_service_hf/lib.rs
1// Licensed to the Apache Software Foundation (ASF) under one
2// or more contributor license agreements. See the NOTICE file
3// distributed with this work for additional information
4// regarding copyright ownership. The ASF licenses this file
5// to you under the Apache License, Version 2.0 (the
6// "License"); you may not use this file except in compliance
7// with the License. You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing,
12// software distributed under the License is distributed on an
13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14// KIND, either express or implied. See the License for the
15// specific language governing permissions and limitations
16// under the License.
17
18/// Primary scheme for the Hugging Face service.
19pub const HF_SCHEME: &str = "hf";
20
21/// Alias scheme for the Hugging Face service.
22pub const HUGGINGFACE_SCHEME: &str = "huggingface";
23
24/// Register this service into the given registry under both `hf` and `huggingface` schemes.
25pub fn register_hf_service(registry: &opendal_core::OperatorRegistry) {
26 registry.register::<Hf>(HF_SCHEME);
27 registry.register::<Hf>(HUGGINGFACE_SCHEME);
28}
29
30mod backend;
31mod config;
32mod core;
33mod deleter;
34mod error;
35mod lister;
36mod reader;
37mod uri;
38mod writer;
39
40pub use backend::HfBuilder as Hf;
41pub use config::HfConfig;
42
43// Backward-compatible aliases.
44#[doc(hidden)]
45pub type Huggingface = Hf;
46#[doc(hidden)]
47pub type HuggingfaceConfig = HfConfig;
48
49#[cfg(test)]
50mod tests {
51 use super::*;
52
53 #[test]
54 fn type_aliases_are_interchangeable() {
55 let _: Huggingface = Hf::default().repo_id("org/repo");
56 let _: HuggingfaceConfig = HfConfig::default();
57 }
58
59 #[test]
60 fn scheme_constants() {
61 assert_eq!(HF_SCHEME, "hf");
62 assert_eq!(HUGGINGFACE_SCHEME, "huggingface");
63 }
64}