ntex-tls 3.8.0

An implementation of SSL streams for ntex backed by OpenSSL
Documentation
#![allow(unused_imports, deprecated, warnings)]
use std::{collections::HashMap, convert::TryFrom, fs, io, io::Read};

use ntex::client::{Client, Connector};
use ntex::connect::{self, Connect};
use ntex::http::Uri;
use ntex::service::{Service, apply_fn};
use ntex::{SharedCfg, time::Millis, util::ByteString};
use tls_openssl::pkcs12::Pkcs12;
use tls_openssl::ssl::{self, SslMethod, SslVerifyMode};

const SF_HOST: &str = "nikki-20260513-fabric-1.westus3.cloudapp.azure.com";
const SF_CERT: &str = "./examples/sf.pfx";

#[ntex::main]
async fn main() -> io::Result<()> {
    unsafe {
        std::env::set_var("RUST_LOG", "trace");
    }
    env_logger::init();

    // load sf cert
    let mut cert_vec = Vec::new();
    let mut cert_file = fs::File::open(SF_CERT).unwrap();
    cert_file.read_to_end(&mut cert_vec).unwrap();
    let identity = Pkcs12::from_der(&cert_vec)
        .unwrap_or_else(|_| panic!("Failed to parse TLS certificate"))
        .parse("")
        .unwrap();

    let mut builder = ssl::SslConnector::builder(SslMethod::tls()).unwrap();
    builder.set_private_key(&identity.pkey).unwrap();
    builder.set_certificate(&identity.cert).unwrap();
    // builder.set_verify(SslVerifyMode::NONE);
    let connector = connect::openssl::SslConnector::new(builder.build());

    let client = Client::builder()
        .connector::<Uri>(Connector::new().secure_connector(connector))
        .build(SharedCfg::new("SF"))
        .await
        .expect("Cannot create EG-SF Http Client");

    // counter
    let url1 = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Services/microsoft.azure.mqttbroker.counter~microsoft.azure.mqttbroker.counter.service/$/GetPartitions?api-version=6.4";
    // session
    let url2 = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Services/microsoft.azure.mqttbroker.session~microsoft.azure.mqttbroker.session.service/$/GetPartitions?api-version=6.4";
    // els
    // let url3 = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Services/elastic_log_sf_type~ElasticLogService/$/GetPartitions?api-version=6.4";
    // ev-disp
    let url31 = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Services/elastic_log_sf_type~ElasticLogService/$/GetPartitions?api-version=6.4";

    // els partition
    let url4 = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Partitions/03db57af-398d-453e-880f-4929822c2703/$/GetReplicas?api-version=6.4";

    // session partition
    let url5 = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Partitions/749160c3-89c8-4fa4-a8e1-9206004a91b3/$/GetReplicas?api-version=6.4";

    // counter
    let url6 = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Partitions/01630a27-b506-49ef-a075-a6de239fac0e/$/GetReplicas?api-version=6.4";

    // subs
    //let url7 = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Services/microsoft.azure.mqttbroker.subscription~nikki-2026-1.6fd549e3-b9be-4ab8-b237-bbfec0754b05.0/$/GetPartitions?api-version=6.4";
    //let url7 = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Partitions/01630a27-b506-49ef-a075-a6de239fac0e/$/GetReplicas?api-version=6.4";
    let url7 = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Applications/microsoft.azure.mqttbroker.configstore/$/GetServices?api-version=6.4";
    //let url7 = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Services?api-version=6.4";

    //let url_svc = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Services/microsoft.azure.mqttbroker.configstore~StatefulConfigProvider/$/GetPartitions?api-version=6.4";
    //let url_par = "https://nikki-20260513-fabric-1.westus3.cloudapp.azure.com:19080/Partitions/4382d619-fedd-4bd9-b00a-cc412df22725/$/GetReplicas?api-version=6.4";

    let res = client.get(url7).send().await.unwrap();
    println!("{res:?}");

    let body = ByteString::try_from(res.body().await.unwrap()).unwrap();
    println!("{body}");

    Ok(())
}