Add get to specific tag
This commit is contained in:
parent
2af103667a
commit
2b835a72b0
@ -41,6 +41,7 @@ impl API {
|
||||
Ok(response.json()?)
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn get_tags(&self) -> Result<Vec<TagModel>, GenericError> {
|
||||
let response = self.request(API::api_url(APIUrl::Tags, &self.config))?;
|
||||
let tags = response.json();
|
||||
@ -52,6 +53,12 @@ impl API {
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn get_tag(&self, tag_id: &String) -> Result<TagModel, GenericError> {
|
||||
let response = self.request(API::api_url(APIUrl::Tag(tag_id.clone()), &self.config))?;
|
||||
Ok(response.json()?)
|
||||
}
|
||||
|
||||
pub fn get_states(&self, tag_id: &String) -> Result<Vec<StateModel>, GenericError> {
|
||||
let response = self.request(API::api_url(APIUrl::States(tag_id.clone()), &self.config))?;
|
||||
Ok(response.json()?)
|
||||
@ -202,6 +209,7 @@ impl API {
|
||||
timestamped
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn print_list<T: Display + Timestamped>(list: Result<Vec<T>, GenericError>) {
|
||||
match list {
|
||||
Ok(items) => {
|
||||
@ -229,6 +237,7 @@ impl API {
|
||||
APIUrl::States(tag) => str::replace(&config.states_url, "{tag}", &tag),
|
||||
APIUrl::Tags => config.tags_url.clone(),
|
||||
APIUrl::Sharetoken(tag) => str::replace(&config.sharetoken_url, "{tag}", &tag),
|
||||
APIUrl::Tag(tag) => str::replace(&config.tag_url, "{tag}", &tag),
|
||||
}
|
||||
}
|
||||
|
||||
@ -277,5 +286,7 @@ pub enum APIUrl {
|
||||
Locations(String, String),
|
||||
States(String),
|
||||
Tags,
|
||||
#[allow(dead_code)]
|
||||
Tag(String),
|
||||
Sharetoken(String),
|
||||
}
|
||||
|
12
src/args.rs
12
src/args.rs
@ -133,11 +133,23 @@ pub struct GetOpt {
|
||||
#[derive(FromArgs)]
|
||||
#[argh(subcommand)]
|
||||
pub enum GetSub {
|
||||
Tag(GetTagOpt),
|
||||
Tags(GetTagsOpt),
|
||||
States(GetStatesOpt),
|
||||
Locations(GetLocationsOpt),
|
||||
}
|
||||
|
||||
#[derive(FromArgs)]
|
||||
#[argh(
|
||||
subcommand,
|
||||
name = "tag",
|
||||
description = "Get a specific tag connected to this API-key"
|
||||
)]
|
||||
pub struct GetTagOpt {
|
||||
#[argh(positional, description = "the device in question")]
|
||||
pub device: String,
|
||||
}
|
||||
|
||||
#[derive(FromArgs)]
|
||||
#[argh(
|
||||
subcommand,
|
||||
|
@ -148,6 +148,7 @@ pub fn nick_set(
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn get_locations(
|
||||
api: &API,
|
||||
tag: String,
|
||||
@ -162,6 +163,7 @@ pub fn get_locations(
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn get_states(api: &API, tag: String) -> Result<Vec<StateModel>, GenericError> {
|
||||
let tags = api.get_tags()?;
|
||||
let tag = find_tag(tag, &tags, &api.config)?;
|
||||
|
@ -10,6 +10,7 @@ pub struct Config {
|
||||
pub api_key: String,
|
||||
|
||||
pub tags_url: String,
|
||||
pub tag_url: String,
|
||||
pub states_url: String,
|
||||
pub locations_url: String,
|
||||
pub current_locations_url: String,
|
||||
@ -50,6 +51,7 @@ impl Default for Config {
|
||||
api_key: "<your API key here from https://developers.yepzon.com/>".to_owned(),
|
||||
|
||||
tags_url: "https://platform.yepzon.com/tags".to_owned(),
|
||||
tag_url: "https://platform.yepzon.com/tags/{tag}".to_owned(),
|
||||
states_url: "https://platform.yepzon.com/tags/{tag}/states".to_owned(),
|
||||
locations_url: "https://platform.yepzon.com/tags/{tag}/locations/{state}".to_owned(),
|
||||
current_locations_url: "https://platform.yepzon.com/tags/{tag}/locations".to_owned(),
|
||||
|
@ -89,6 +89,10 @@ fn from_env(env: EnvOpt) -> Result<(), GenericError> {
|
||||
let config = Config::from_path(&env.config)?;
|
||||
let api = API::new(config.clone());
|
||||
match opt.subcommand {
|
||||
GetSub::Tag(opt) => {
|
||||
let tags = api.get_tag(&opt.device);
|
||||
dbg!(&tags);
|
||||
}
|
||||
GetSub::Tags(_) => {
|
||||
let tags = api.get_tags()?;
|
||||
dbg!(&tags);
|
||||
|
Loading…
Reference in New Issue
Block a user