#[repr(i32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum ProxyType {
Http = 0,
Https = 1,
Socks4 = 2,
Socks4A = 3,
Socks5 = 4,
SocksHostname = 5,
}
pub struct Proxy {
pub type_: ProxyType,
pub hostname: String,
pub port: u16,
pub username: String,
pub password: String,
}
impl Proxy {
pub(crate) fn to_mb_proxy(&self) -> miniblink_sys::mbProxy {
use std::cmp::min;
use std::ffi::c_char;
fn copy_to_char_array(src: &str, dst: &mut [c_char]) {
let bytes = src.as_bytes();
let len = min(bytes.len(), dst.len());
for i in 0..len {
dst[i] = bytes[i] as std::ffi::c_char;
}
}
let mut mb_proxy = miniblink_sys::mbProxy {
type_: self.type_ as _,
hostname: [0; 100],
port: self.port,
username: [0; 50],
password: [0; 50],
};
copy_to_char_array(&self.hostname, &mut mb_proxy.hostname);
copy_to_char_array(&self.username, &mut mb_proxy.username);
copy_to_char_array(&self.password, &mut mb_proxy.password);
mb_proxy
}
}