Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/skade

vendor/iceberg-catalog-rest-arrow59/src/lib.rs

// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

//! Iceberg REST API implementation.
//!
//! The crate provides two REST catalog APIs:
//!
//! - [`RestCatalog`] implements [`iceberg::Catalog`] by binding one
//!   [`iceberg::SessionContext`] to every operation.
//! - [`RestSessionCatalog`] implements [`iceberg::SessionCatalog`] and accepts a
//!   session context with each operation.
//!
//! # Catalog compatibility API
//!
//! ```rust, no_run
//! use std::collections::HashMap;
//!
//! use iceberg::CatalogBuilder;
//! use iceberg_catalog_rest::{
//!     REST_CATALOG_PROP_URI, REST_CATALOG_PROP_WAREHOUSE, RestCatalogBuilder,
//! };
//!
//! #[tokio::main]
//! async fn main() {
//!     let catalog = RestCatalogBuilder::default()
//!         .load(
//!             "rest",
//!             HashMap::from([
//!                 (
//!                     REST_CATALOG_PROP_URI.to_string(),
//!                     "http://localhost:8181".to_string(),
//!                 ),
//!                 (
//!                     REST_CATALOG_PROP_WAREHOUSE.to_string(),
//!                     "s3://warehouse".to_string(),
//!                 ),
//!             ]),
//!         )
//!         .await
//!         .unwrap();
//! }
//! ```
//!
//! # Session catalog API
//!
//! ```rust, no_run
//! use std::collections::HashMap;
//!
//! use iceberg::{SessionCatalog, SessionContext};
//! use iceberg_catalog_rest::{REST_CATALOG_PROP_URI, RestSessionCatalogBuilder};
//!
//! #[tokio::main]
//! async fn main() {
//!     let catalog = RestSessionCatalogBuilder::default()
//!         .load(
//!             "rest",
//!             HashMap::from([(
//!                 REST_CATALOG_PROP_URI.to_string(),
//!                 "http://localhost:8181".to_string(),
//!             )]),
//!         )
//!         .await
//!         .unwrap();
//!     let context = SessionContext::builder()
//!         .identity("user123".to_string())
//!         .build();
//!
//!     let namespaces = catalog.list_namespaces(&context, None).await.unwrap();
//! }
//! ```

#![deny(missing_docs)]

mod auth;
mod catalog;
mod client;
pub use client::HttpClient;
mod request;
pub use request::{HttpRequest, HttpRequestBody};
mod response;
pub use response::HttpResponse;
mod endpoint;
mod types;

pub use auth::*;
pub use catalog::*;
pub use endpoint::Endpoint;
pub use types::*;