Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ description = "Outscale API SDK"
repository = "https://github.com/outscale/osc-sdk-rust/"

[dependencies]
base64 = { version = "0.22", optional = true }
home = "0.5.3"
rand = "~0.9"
serde = "^1.0"
Expand All @@ -27,5 +28,5 @@ default-features = false

[features]
default = ["reqwest/default-tls"]
native-tls = ["reqwest/native-tls"]
rustls-tls = ["reqwest/rustls-tls"]
native-tls = ["reqwest/native-tls", "dep:base64"]
rustls-tls = ["reqwest/rustls-tls", "dep:base64"]
38 changes: 5 additions & 33 deletions examples/config_file.rs
Original file line number Diff line number Diff line change
@@ -1,48 +1,20 @@
use outscale_api::apis::configuration_file::{ConfigurationFile, Endpoint};
use outscale_api::apis::profile::ProfileBuilder;
use outscale_api::apis::volume_api::read_volumes;
use outscale_api::models::ReadVolumesRequest;
use std::env;
use std::path::PathBuf;

/* Show how to configure SDK to load configuration file */
fn main() {
// You can also use ConfigurationFile::load_default() to get configuration located in ~/.osc/config.json
let path = PathBuf::from("examples/config_example.json");
let mut config_file = ConfigurationFile::load(&path).unwrap();
ignore_me(&mut config_file);

let config = config_file.configuration("default").unwrap();
let config = ProfileBuilder::from_standard_configuration(path, None)
.and_then(|pb| pb.build().try_into())
.unwrap();

let request = ReadVolumesRequest::new();
if let Err(error) = read_volumes(&config, Some(request)) {
eprintln!("Error: {:?}", error);
std::process::exit(1);
}
println!("OK");
}

// Access Key and Secret Key can be put in configuration file
// but we add it here just to avoid commiting credentials in examples.
#[allow(unused_mut)]
fn ignore_me(config_file: &mut ConfigurationFile) {
let mut profile = config_file.0.get_mut(&"default".to_string()).unwrap();
profile.access_key = Some(env::var("OSC_ACCESS_KEY").unwrap());
profile.secret_key = Some(env::var("OSC_SECRET_KEY").unwrap());
profile.region = Some(env::var("OSC_REGION").unwrap());
match env::var("OSC_PROTOCOL") {
Ok(p) => profile.protocol = Some(p),
_ => (),
};
match env::var("OSC_ENDPOINT_API_NOPROTO") {
Ok(enpoint) => {
profile.endpoints = Some(Endpoint {
api: Some(enpoint),
icu: None,
eim: None,
fcu: None,
lbu: None,
oos: None,
})
}
_ => (),
};
}
15 changes: 2 additions & 13 deletions examples/keypair.rs
Original file line number Diff line number Diff line change
@@ -1,24 +1,13 @@
use outscale_api::apis::configuration::{AWSv4Key, Configuration};
use outscale_api::apis::keypair_api::{create_keypair, delete_keypair, read_keypairs};
use outscale_api::apis::profile::Profile;
use outscale_api::models::{
CreateKeypairRequest, DeleteKeypairRequest, FiltersKeypair, ReadKeypairsRequest,
};
use rand::Rng;
use std::env;

fn main() {
let mut config = Configuration::new();
config.aws_v4_key = Some(AWSv4Key {
access_key: env::var("OSC_ACCESS_KEY").unwrap(),
secret_key: env::var("OSC_SECRET_KEY").unwrap().into(),
region: "eu-west-2".to_string(),
service: "oapi".to_string(),
});
let config = Profile::default().and_then(|p| p.try_into()).unwrap();

match env::var("OSC_ENDPOINT_API") {
Ok(enpoint) => config.base_path = enpoint,
_ => (),
};
// Example reading all keypairs
print!("Reading all keypairs... ");
let request = ReadKeypairsRequest::new();
Expand Down
19 changes: 4 additions & 15 deletions examples/region.rs
Original file line number Diff line number Diff line change
@@ -1,25 +1,14 @@
use outscale_api::apis::configuration::{AWSv4Key, Configuration};
use outscale_api::apis::profile::ProfileBuilder;
use outscale_api::apis::volume_api::read_volumes;
use outscale_api::models::ReadVolumesRequest;
use std::env;

/* Show how to configure SDK for a specific region */
fn main() {
let region = "eu-west-2";

let mut config = Configuration::new();
config.base_path = format!("https://api.{}.outscale.com/api/v1", region);
config.aws_v4_key = Some(AWSv4Key {
access_key: env::var("OSC_ACCESS_KEY").unwrap(),
secret_key: env::var("OSC_SECRET_KEY").unwrap().into(),
region: region.to_string(),
service: "oapi".to_string(),
});

match env::var("OSC_ENDPOINT_API") {
Ok(enpoint) => config.base_path = enpoint,
_ => (),
};
let config = ProfileBuilder::from_standard_configuration(None, None)
.and_then(|pb| pb.region(region).build().try_into())
.unwrap();

print!("Action on specific region ({})... ", region);
let request = ReadVolumesRequest::new();
Expand Down
15 changes: 2 additions & 13 deletions examples/volume.rs
Original file line number Diff line number Diff line change
@@ -1,23 +1,12 @@
use outscale_api::apis::configuration::{AWSv4Key, Configuration};
use outscale_api::apis::profile::Profile;
use outscale_api::apis::volume_api::{create_volume, delete_volume, read_volumes};
use outscale_api::models::{
CreateVolumeRequest, DeleteVolumeRequest, FiltersVolume, ReadVolumesRequest,
};
use std::env;

fn main() {
let mut config = Configuration::new();
config.aws_v4_key = Some(AWSv4Key {
access_key: env::var("OSC_ACCESS_KEY").unwrap(),
secret_key: env::var("OSC_SECRET_KEY").unwrap().into(),
region: "eu-west-2".to_string(),
service: "oapi".to_string(),
});
let config = Profile::default().and_then(|p| p.try_into()).unwrap();

match env::var("OSC_ENDPOINT_API") {
Ok(enpoint) => config.base_path = enpoint,
_ => (),
};
// Example reading all volumes
print!("Reading all volumes... ");
let request = ReadVolumesRequest::new();
Expand Down
5 changes: 3 additions & 2 deletions gen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ packageName: outscale_api
supportAsync: false
withAWSV4Signature: true
files:
configuration_file.rs:
middleware.rs:
templateType: SupportingFiles
folder: src/apis
middleware.rs:
profile.rs:
templateType: SupportingFiles
folder: src/apis

164 changes: 0 additions & 164 deletions src/apis/configuration_file.rs

This file was deleted.

2 changes: 1 addition & 1 deletion src/apis/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -117,5 +117,5 @@ pub mod volume_api;
pub mod vpn_connection_api;

pub mod configuration;
pub mod configuration_file;
pub mod middleware;
pub mod profile;
Loading
Loading