use std::env;
use kintone::{
client::{Auth, KintoneClientBuilder},
v1::record,
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let base_url =
env::var("KINTONE_BASE_URL").expect("Please set KINTONE_BASE_URL environment variable");
let api_token =
env::var("KINTONE_API_TOKEN").expect("Please set KINTONE_API_TOKEN environment variable");
let app_id: u64 = env::var("KINTONE_APP_ID")
.unwrap_or_else(|_| "1".to_string())
.parse()
.expect("KINTONE_APP_ID must be a valid number");
let cert_path =
env::var("CLIENT_CERT_PATH").expect("Please set CLIENT_CERT_PATH environment variable");
let key_path =
env::var("CLIENT_KEY_PATH").expect("Please set CLIENT_KEY_PATH environment variable");
println!("Setting up Kintone client with client certificate authentication...");
println!("Certificate: {cert_path}");
println!("Private key: {key_path}");
println!();
println!("Loading certificate and private key...");
let cert_pem = std::fs::read(&cert_path)?;
let key_pem = std::fs::read(&key_path)?;
let client = KintoneClientBuilder::new(&base_url, Auth::api_token(api_token))
.client_certificate_from_pem(&cert_pem, &key_pem)?
.build();
match record::get_records(app_id).send(&client) {
Ok(response) => {
println!("Successfully retrieved {} records", response.records.len());
println!("Display first few records:");
for (i, record) in response.records.iter().take(3).enumerate() {
println!(" [{i}]: {record:?}");
}
}
Err(e) => {
eprintln!("Failed to get records: {e}");
return Err(e.into());
}
}
println!();
Ok(())
}