diff --git a/examples/drive_example/Cargo.toml b/examples/drive_example/Cargo.toml new file mode 100644 index 0000000..33915d2 --- /dev/null +++ b/examples/drive_example/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "drive_example" +version = "0.1.0" +authors = ["Lewin Bormann "] + +[dependencies] +yup-oauth2 = "0.6.4" +google-drive3 = "0.1" +url = "= 0.5" +hyper = "0.9" +serde_json = "0.8" diff --git a/examples/drive_example/example_client_secret.json b/examples/drive_example/example_client_secret.json new file mode 100644 index 0000000..8ba0a21 --- /dev/null +++ b/examples/drive_example/example_client_secret.json @@ -0,0 +1 @@ +{"installed":{"client_id":"384278056379-tr5pbot1mil66749n639jo54i4840u77.apps.googleusercontent.com","project_id":"sanguine-rhythm-105020","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://accounts.google.com/o/oauth2/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"QeQUnhzsiO4t--ZGmj9muUAu","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}} \ No newline at end of file diff --git a/examples/drive_example/src/main.rs b/examples/drive_example/src/main.rs new file mode 100644 index 0000000..a76b30e --- /dev/null +++ b/examples/drive_example/src/main.rs @@ -0,0 +1,44 @@ +//! Just run this program: It will ask you for authorization to view metadata, +//! and then display you the contents of your Google Drive root directory. +//! +//! This example demonstrates how to use the [interactive OAuth 2 flow for installed +//! applications.](https://developers.google.com/identity/protocols/OAuth2InstalledApp) +//! +//! Copyright (c) 2016 Google, Inc. (Lewin Bormann ) + +extern crate hyper; +extern crate yup_oauth2; +extern crate serde_json; +extern crate google_drive3; + +use std::path::Path; + +use yup_oauth2::{Authenticator, FlowType, ApplicationSecret, DiskTokenStorage, + DefaultAuthenticatorDelegate, read_application_secret}; +use google_drive3::Drive; + +const CLIENT_SECRET_FILE: &'static str = "example_client_secret.json"; + +// reads the provided example client secret, the quick and dirty way. +fn read_client_secret(file: String) -> ApplicationSecret { + read_application_secret(Path::new(&file)).unwrap() +} + +fn main() { + let secret = read_client_secret(CLIENT_SECRET_FILE.to_string()); + let authenticator = Authenticator::new(&secret, + DefaultAuthenticatorDelegate, + hyper::Client::new(), + DiskTokenStorage::new(&"token_store.json".to_string()) + .unwrap(), + Some(FlowType::InstalledInteractive)); + let hub = Drive::new(hyper::Client::new(), authenticator); + + let (_resp, list_result) = hub.files().list().q("'root' in parents and trashed = false").doit().unwrap(); + + for file in list_result.files.unwrap_or(vec![]) { + println!("{} ({})", + file.name.unwrap_or(String::new()), + file.mime_type.unwrap_or(String::new())); + } +}