Skip to main content

cloud_sdk/
lib.rs

1#![no_std]
2//! Provider-neutral foundations for the `cloud-sdk` workspace.
3
4#[cfg(feature = "std")]
5extern crate std;
6
7/// Cloud provider namespace.
8#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
9pub enum Provider {
10    /// Hetzner Cloud and DNS APIs.
11    Hetzner,
12}
13
14/// Provider API family.
15#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
16pub enum ApiFamily {
17    /// Cloud infrastructure API.
18    Cloud,
19    /// DNS API.
20    Dns,
21    /// Security-related API resources.
22    Security,
23    /// Storage-related API resources.
24    Storage,
25    /// Provider-specific post-1.0 API surface.
26    Extended,
27}
28
29/// HTTP method for a provider operation.
30#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
31pub enum Method {
32    /// GET request.
33    Get,
34    /// POST request.
35    Post,
36    /// PUT request.
37    Put,
38    /// DELETE request.
39    Delete,
40}
41
42#[cfg(test)]
43mod tests {
44    use super::{ApiFamily, Method, Provider};
45
46    #[test]
47    fn exposes_provider_neutral_domains() {
48        assert_eq!(Provider::Hetzner, Provider::Hetzner);
49        assert_eq!(ApiFamily::Cloud, ApiFamily::Cloud);
50        assert_eq!(Method::Get, Method::Get);
51    }
52}