mirror of
https://github.com/R0m1k3/CollectFlow.git
synced 2026-10-18 04:36:21 +02:00
L'API api.ffnancy.fr exige désormais une clé (401 « Clé d'API requise »). - Nouveau champ « Clé d'API » dans Paramètres → API FF Nancy, stocké dans data/.db-config.json (ffApiKey), jamais renvoyé au navigateur ; vide = conserver la clé enregistrée. Repli sur la variable FF_API_KEY. - Tous les appels à l'API FF envoient l'en-tête X-API-Key (ff_get, proxy commandes-auto, publicités, /api/diag, test de connexion). - Le test de connexion signale explicitement une clé manquante ou refusée. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KdY28Lq8Q8xX4RZsAvWRQ7
38 lines
1.8 KiB
Rust
38 lines
1.8 KiB
Rust
//! Points d'appel vers les modules `qlik` et `ff` utilisés par les Paramètres.
|
|
//! Branchés après l'intégration de ces modules.
|
|
|
|
use serde_json::Value;
|
|
|
|
/// Ouvre une session Qlik (NTLM → ticket → cookie) avec les identifiants donnés.
|
|
pub async fn tester_session(host: String, user: String, password: Option<String>) -> anyhow::Result<()> {
|
|
let enregistre = crate::qlik::client::get_qlik_config();
|
|
let mut cfg = enregistre.clone();
|
|
cfg.user = user;
|
|
cfg.password = password.unwrap_or(enregistre.password);
|
|
if !host.is_empty() {
|
|
cfg.host = host;
|
|
}
|
|
crate::qlik::client::qlik_ntlm_session(&cfg).await?;
|
|
Ok(())
|
|
}
|
|
|
|
/// Oublie l'URL mémorisée de l'API FF Nancy.
|
|
pub fn reset_ff_api_base() {
|
|
crate::ff::api::reset_ff_api_base_cache();
|
|
}
|
|
|
|
/// Diagnostic de l'API FF Nancy.
|
|
pub async fn diagnostiquer_api_ff(base: Option<String>, cle: Option<String>) -> Value {
|
|
serde_json::to_value(crate::ff::diagnostic::diagnostiquer_api_ff(base, cle).await).unwrap_or(Value::Null)
|
|
}
|
|
|
|
/// Extraction Qlik d'un fournisseur sur la fenêtre de la synchro (`QLIK_SYNC_MONTHS_BACK`),
|
|
/// puis enregistrement dans le cache réseau. Renvoie le nombre de codes enregistrés.
|
|
pub async fn extraire_et_enregistrer(codes: Vec<String>, fournisseur: &str) -> anyhow::Result<usize> {
|
|
use crate::qlik::date_range::{build_grid_network_qlik_date_filter_now, env_months_back, QLIK_MONTHS_BACK_DEFAULT};
|
|
let filtre = build_grid_network_qlik_date_filter_now(env_months_back("QLIK_SYNC_MONTHS_BACK", QLIK_MONTHS_BACK_DEFAULT));
|
|
let metrics = crate::qlik::fetch_network_metrics_playwright(Some(codes), None, Some(filtre), Some(fournisseur.to_string())).await?;
|
|
let liste: Vec<_> = metrics.into_values().collect();
|
|
crate::qlik::upsert_network_metrics(&liste).await
|
|
}
|