openstreetmap-api 0.3.1

Rust client for the OpenstreetMap API.
Documentation
use crate::types;
use crate::Openstreetmap;
use crate::OpenstreetmapError;
use crate::RequestOptions;

#[derive(Debug, Deserialize)]
struct InnerPermissions {
    #[serde(rename = "permission", default)]
    pub permissions: Vec<types::Permission>,
}

#[derive(Debug, Deserialize)]
struct Osm {
    #[serde(rename = "permissions")]
    pub inner_permissions: InnerPermissions,
}

pub struct Permissions {
    client: Openstreetmap,
}

impl Permissions {
    pub fn new(client: &Openstreetmap) -> Self {
        Permissions {
            client: client.clone(),
        }
    }

    pub async fn get(&self) -> Result<Vec<types::Permission>, OpenstreetmapError> {
        let permissions = self
            .client
            .request::<(), Osm>(
                reqwest::Method::GET,
                "permissions",
                types::RequestBody::None,
                RequestOptions::new().with_version(),
            )
            .await?
            .inner_permissions
            .permissions;

        Ok(permissions)
    }
}