flarrow_runtime/plugins/
url_scheme_default.rs1use std::sync::Arc;
2
3use crate::prelude::*;
4
5#[derive(UrlSchemePlugin)]
6pub struct DefaultUrlSchemePlugin {}
7
8#[url_scheme_plugin(runtime = "default_runtime")]
9impl UrlSchemePlugin for DefaultUrlSchemePlugin {
10 async fn new() -> Result<Self>
11 where
12 Self: Sized,
13 {
14 Ok(DefaultUrlSchemePlugin {})
15 }
16
17 fn target(&self) -> Vec<String> {
18 vec!["file".to_string(), "builtin".to_string()]
19 }
20
21 #[allow(clippy::too_many_arguments)]
22 async fn load(
23 &self,
24 url: Url,
25
26 inputs: Inputs,
27 outputs: Outputs,
28 queries: Queries,
29 queryables: Queryables,
30 configuration: serde_yml::Value,
31 file_ext: Arc<FileExtManager>,
32 ) -> Result<flarrow_runtime_core::prelude::RuntimeNode> {
33 match url.scheme() {
34 "file" => {
35 let path = url
36 .to_file_path()
37 .map_err(|_| eyre::eyre!("Url '{}' cannot be made into a path buf", url))?;
38
39 file_ext
40 .load(path, inputs, outputs, queries, queryables, configuration)
41 .await
42 }
43 "builtin" => {
44 eyre::bail!("Builtin url scheme is not supported yet!")
46 }
47 _ => Err(eyre::eyre!(
48 "Url scheme '{}' is not supported",
49 url.scheme()
50 )),
51 }
52 }
53}