sensor-community 0.1.0

Client for the https://sensor.community/ API
Documentation
use structopt::StructOpt;

/// sensor.community CLI query tool

#[derive(Debug, StructOpt)]
#[structopt(name = "sensorcomm", about = "An example of StructOpt usage.")]
enum Command {
    /// Fetch batch
    ///
    /// Example:
    ///     $ sensorcomm batch '1h' user@example.com"
    Batch {
        /// Batch type
        #[structopt(name = "VALUE")]
        value: String,

        /// Contact point e.g. your email
        #[structopt(name = "CONTACT")]
        contact: String,
    },
    /// Fetch by query
    ///
    /// Example:
    ///     $ sensorcomm query 'type=SDS011' user@example.com"
    Query {
        /// query
        #[structopt()]
        query: String,

        /// Contact point e.g. your email
        #[structopt()]
        contact: String,
    },
    /// Fetch by sensor id
    ///
    /// Example:
    ///     $ sensorcomm sensor 87523 '' user@example.com"
    Sensor {
        /// sensor id
        #[structopt(name = "id")]
        id: u64,

        /// Contact point e.g. your email
        #[structopt(name = "CONTACT")]
        contact: String,
    },
}

#[tokio::main]
async fn main() {
    let command = Command::from_args();
    match command {
        Command::Batch { value, contact } => {
            let r = sensor_community::fetch_batch(&value, &contact)
                .await
                .unwrap();
            for entry in r {
                println!("{:?}", entry);
            }
        }
        Command::Query { query, contact } => {
            let r = sensor_community::fetch_by_query(&query, &contact)
                .await
                .unwrap();
            for entry in r {
                println!("{:?}", entry);
            }
        }
        Command::Sensor { id, contact } => {
            let r = sensor_community::fetch_by_sensor(id, &contact)
                .await
                .unwrap();
            for entry in r {
                println!("{:?}", entry);
            }
        }
    }
}