feat: integrate dotenv for secure credential management, update benchmark scripts to load API credentials from .env file, add .env.example template, and ensure .env is properly gitignored for security

This commit is contained in:
floor-licker
2025-12-04 06:49:10 -05:00
parent c81430e768
commit 7c495d8b55
8 changed files with 91 additions and 18 deletions
+6
View File
@@ -0,0 +1,6 @@
# Polymarket API Credentials
# Copy this file to .env and fill in your actual credentials
POLYMARKET_API_KEY=your-api-key-here
POLYMARKET_SECRET=your-secret-here
POLYMARKET_PASSPHRASE=your-passphrase-here
+3
View File
@@ -6,3 +6,6 @@ tarpaulin-report.html
*.profraw
/target/tarpaulin/
# Environment variables (contains secrets)
.env
Generated
+7
View File
@@ -1189,6 +1189,12 @@ dependencies = [
"syn 2.0.104",
]
[[package]]
name = "dotenv"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
[[package]]
name = "dunce"
version = "1.0.5"
@@ -2414,6 +2420,7 @@ dependencies = [
"bytes",
"chrono",
"criterion",
"dotenv",
"env_logger",
"futures",
"futures-util",
+1
View File
@@ -24,6 +24,7 @@ reqwest = { version = "0.12", features = ["json", "stream", "gzip"] }
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
dotenv = "0.15"
# Ethereum and crypto
alloy-primitives = "0.8"
+12 -9
View File
@@ -5,18 +5,21 @@ use std::time::Instant;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Load environment variables from .env file
dotenv::dotenv().ok();
println!("🔐 Authenticated Network Benchmark - Real Order Creation");
println!("=======================================================");
println!("To run with real credentials, set environment variables:");
println!(" export POLYMARKET_API_KEY=your-api-key");
println!(" export POLYMARKET_SECRET=your-secret");
println!(" export POLYMARKET_PASSPHRASE=your-passphrase");
println!("");
// API credentials from environment variables
let _api_key = std::env::var("POLYMARKET_API_KEY").unwrap_or_else(|_| "your-api-key".to_string());
let _secret = std::env::var("POLYMARKET_SECRET").unwrap_or_else(|_| "your-secret".to_string());
let _passphrase = std::env::var("POLYMARKET_PASSPHRASE").unwrap_or_else(|_| "your-passphrase".to_string());
// API credentials from .env file
let _api_key = std::env::var("POLYMARKET_API_KEY")
.map_err(|_| "POLYMARKET_API_KEY not found in .env file")?;
let _secret = std::env::var("POLYMARKET_SECRET")
.map_err(|_| "POLYMARKET_SECRET not found in .env file")?;
let _passphrase = std::env::var("POLYMARKET_PASSPHRASE")
.map_err(|_| "POLYMARKET_PASSPHRASE not found in .env file")?;
println!("✅ Loaded API credentials from .env file");
let client = ClobClient::new_internet("https://clob.polymarket.com");
+48
View File
@@ -0,0 +1,48 @@
use polyfill_rs::ClobClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Load environment variables from .env file
dotenv::dotenv().ok();
println!("🔧 Environment Configuration Example");
println!("===================================");
// Check if credentials are available
match (
std::env::var("POLYMARKET_API_KEY"),
std::env::var("POLYMARKET_SECRET"),
std::env::var("POLYMARKET_PASSPHRASE"),
) {
(Ok(api_key), Ok(secret), Ok(passphrase)) => {
println!("✅ All credentials loaded from .env file:");
println!(" API Key: {}...{}", &api_key[..8], &api_key[api_key.len()-8..]);
println!(" Secret: {}...{}", &secret[..8], &secret[secret.len()-8..]);
println!(" Passphrase: {}...{}", &passphrase[..8], &passphrase[passphrase.len()-8..]);
// Create client (would normally use these credentials)
let client = ClobClient::new_internet("https://clob.polymarket.com");
// Test basic connectivity
println!("\n🌐 Testing connectivity...");
match client.get_server_time().await {
Ok(timestamp) => {
println!("✅ Server time: {}", timestamp);
println!("🚀 Ready for authenticated operations!");
}
Err(e) => {
println!("❌ Connection error: {}", e);
}
}
}
_ => {
println!("❌ Missing credentials in .env file");
println!("📝 Create a .env file with:");
println!(" POLYMARKET_API_KEY=your-api-key");
println!(" POLYMARKET_SECRET=your-secret");
println!(" POLYMARKET_PASSPHRASE=your-passphrase");
}
}
Ok(())
}
+12 -9
View File
@@ -5,21 +5,24 @@ use std::time::Instant;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Load environment variables from .env file
dotenv::dotenv().ok();
println!("🚀 Real Network Benchmark - polyfill-rs vs polymarket-rs-client");
println!("================================================================");
println!("To run with real credentials, set environment variables:");
println!(" export POLYMARKET_API_KEY=your-api-key");
println!(" export POLYMARKET_SECRET=your-secret");
println!(" export POLYMARKET_PASSPHRASE=your-passphrase");
println!("");
// Set up client with credentials
let client = ClobClient::new("https://clob.polymarket.com");
// API credentials from environment variables
let _api_key = std::env::var("POLYMARKET_API_KEY").unwrap_or_else(|_| "your-api-key".to_string());
let _secret = std::env::var("POLYMARKET_SECRET").unwrap_or_else(|_| "your-secret".to_string());
let _passphrase = std::env::var("POLYMARKET_PASSPHRASE").unwrap_or_else(|_| "your-passphrase".to_string());
// API credentials from .env file
let _api_key = std::env::var("POLYMARKET_API_KEY")
.map_err(|_| "POLYMARKET_API_KEY not found in .env file")?;
let _secret = std::env::var("POLYMARKET_SECRET")
.map_err(|_| "POLYMARKET_SECRET not found in .env file")?;
let _passphrase = std::env::var("POLYMARKET_PASSPHRASE")
.map_err(|_| "POLYMARKET_PASSPHRASE not found in .env file")?;
println!("✅ Loaded API credentials from .env file");
println!("🔑 Using API credentials for authenticated requests");
+2
View File
@@ -7,6 +7,8 @@ set -e
echo "🌐 Network Latency Benchmark for polyfill-rs"
echo "============================================="
echo "📝 Note: API credentials loaded from .env file"
echo ""
# Colors for output
RED='\033[0;31m'