extern crate rusoto; extern crate chrono; use chrono::*; use std::default::Default; use std::io::prelude::*; use std::fs::File; use std::fs::OpenOptions; use rusoto::{ProfileProvider, Region}; use rusoto::s3::{S3Client, ListObjectsRequest, GetObjectRequest}; fn main() { println!("Beginning."); // let client = get_client(); let mut provider = ProfileProvider::new().unwrap(); provider.set_file_path("/Users/nicholasf/.aws/credentials.properties"); let client = S3Client::new(provider, Region::ApSoutheast2); // let bucket = "s3://ops-prod-logging-1/tcog/prod/AWSLogs/877800914193/elasticloadbalancing/ap-southeast-2/2016/12/18".to_string(); let bucket = "ops-prod-logging-1".to_string(); let prefix = Some("tcog/prod/AWSLogs/877800914193/elasticloadbalancing/ap-southeast-2/2016/12/19".to_string()); let delimiter = Some("|".to_string()); let mut log_files = Vec::new(); let list_objects_request: ListObjectsRequest = ListObjectsRequest { bucket: bucket, prefix: prefix, max_keys: Some(10), delimiter: delimiter, marker: None, encoding_type: None, }; println!("Ok, requesting the list of objects."); let mut object_request: GetObjectRequest = Default::default(); object_request.bucket = "ops-prod-logging-1".to_string(); match client.list_objects(&list_objects_request) { Ok(output) => { log_files = output.contents; } Err(error) => { println!("Error: {:?}", error); } } for content in log_files { println!("{}", content.key); object_request.key = content.key; let mut provider2 = ProfileProvider::new().unwrap(); provider2.set_file_path("/Users/nicholasf/.aws/credentials.properties"); let log_file_client = S3Client::new(provider2, Region::ApSoutheast2); match log_file_client.get_object(&object_request) { Ok(output) => { let log = String::from_utf8(output.body).unwrap(); let csv = generate_csv(log); match OpenOptions::new().write(true).append(true).open("out.csv") { Ok(mut f) => { for line in csv { match f.write_all(line.as_bytes()) { Ok(_) => { println!("Wrote out the csv"); } Err(err) => { println!("Error: {:?}", err); } } } } Err(err) => { println!("Error: {:?}", err); } } } Err(error) => { println!("Error: {:?}", error); } } } } // fn get_client() -> rusoto::s3::S3Client
{
// let mut provider = ProfileProvider::new().unwrap();
// provider.set_file_path("/Users/nicholasf/.aws/credentials.properties");
// return S3Client::new(provider, Region::ApSoutheast2);
// }
//fn get_object_list(bucket &str, max_keys i32) => Vec s3:Object]{}
// let mut csv = Vec::new();
fn generate_csv(log: String) -> Vec