Reklam · TEST
AdSense Test ReklamıGönderi üstü · Görüntülü

Rust'ta PDF Değişiklik Kontrolü: REST API Entegrasyonu

PDF dosyalarının orijinal halinde kaldığını doğrulamak, belge tabanlı iş akışlarında kritik bir güvenlik adımıdır. Bir Rust servisi içinden PDF'nin oluşturulduktan sonra değiştirilip değiştirilmediğini kontrol etmek için REST API tabanlı bir tamper detection servisi kullanabilirsin. Bu, KYC veya kimlik doğrulama değil; yalnızca dosyanın yapısında post-creation düzenlemesi izlerini arayan teknik bir kontroldür.

Servisi entegre etmek için reqwest, serde, thiserror ve tokio kombinasyonunu kullanarak kendi istemcini inşa etmen gerekir. İlk adım, dosya URL'sini sunucuya POST etmektir; sonra GET ile sonucu okursun. Hata yönetimi için thiserror ile retry mantığını tanımla, bazı hatalar geçici, bazıları kalıcıdır.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1use reqwest::Client;
2use serde::{Deserialize, Serialize};
3use thiserror::Error;
4use tokio::time::{sleep, Duration};
5
6#[derive(Debug, Error)]
7enum TamperError {
8#[error("Network error: {0}")]
9Network(#[from] reqwest::Error),
10#[error("Tamper detected in PDF")]
11TamperDetected,
12#[error("Verification pending")]
13Pending,
14}
15
16#[derive(Serialize)]
17struct SubmitRequest {
18url: String,
19}
20
21#[derive(Deserialize)]
22struct VerdictResponse {
23status: String,
24tampered: Option<bool>,
25}
26
27async fn check_pdf_tamper(
28client: &Client,
29api_url: &str,
30pdf_url: &str,
31) -> Result<bool, TamperError> {
32let submit_resp = client.post(&format!("{}/submit", api_url)).json(&SubmitRequest { url: pdf_url.to_string() }).send().await?;
33
34let task_id: String = submit_resp.text().await?;
35
36// Sonuç için poll et
37for _ in 0..10 {
38sleep(Duration::from_secs(2)).await;
39
40let verdict = client.get(&format!("{}/verdict/{}", api_url, task_id)).send().await?.json::<VerdictResponse>().await?;
41
42if verdict.status == "done" {
43return Ok(verdict.tampered.unwrap_or(false));
44}
45}
46
47Err(TamperError::Pending)
48}

Axum ile handler yazarsan, presigned URL yardımcısı kullanarak güvenli bir şekilde dosya yollarını geçebilirsin. Idempotent retry stratejisi, geçici ağ sorunlarında otomatik yeniden denemeler sağlar. Hata enum'u, hangi durumların yeniden denemeye değer olduğunu açıkça belirtir, bu, üretim ortamında çok daha temiz bir kod akışı demektir.

PDF yapısını kontrol etmek, içeriğin değiştirilmesini tespit etmek için yeterlidir; kişiyi veya kaynağı doğrulamaz. Dosya URL'si geçerliyse ve API erişilebilirse, kontrol dakikalar içinde tamamlanır. Sonuç true ise, dosya yapısında değişiklik kanıtı vardır; iş mantığın buna göre hareket etmelidir.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz