PushizoDocs
SDK rehberleri

Rust SDK

crates.io'daki pushizo crate'i — Rust 1.71+, ureq; OpenAPI'den üretilen modeller ve servisler, yeniden deneme, idempotency, sayfalama, webhook imza doğrulaması.

Kaynak: sdk/rust, açık depo pushizo-rust. Modeller (pushizo::models) ve kaynak servisleri (pushizo::resources) api/openapi.yaml'dan üretilir ve diğer sunucu SDK'larıyla aynı uçları kapsar; kimlik doğrulama, yeniden deneme, idempotency, sayfalama, multipart ve webhook imza doğrulaması el yazımıdır.

Kurulum

cargo add pushizo

Kullanım

use std::collections::HashMap;

use pushizo::models::{CreateNotificationDto, CreateNotificationDtoTarget};
use pushizo::{Client, RequestOptions};

fn main() -> pushizo::Result<()> {
    let client = Client::builder(std::env::var("PUSHIZO_API_KEY").unwrap_or_default())
        .app_id("app_…")
        .build()?;

    let mut target = CreateNotificationDtoTarget::default();
    target.include_aliases = Some(HashMap::from([("external_id".into(), vec!["user-42".into()])]));
    let body = CreateNotificationDto {
        target,
        contents: Some(HashMap::from([("en".into(), "Your order shipped".into())])),
        ..Default::default()
    };
    let res = client
        .notifications()
        .with_options(RequestOptions::new().idempotency_key("order-1001"))
        .create(&body)?;
    println!("{} {}", res.id, res.status);

    // Cursor sayfalama: tüm sayfalar tek yineleyici
    for segment in client.segments().list_all(None) {
        println!("{}", segment?.name);
    }
    Ok(())
}

Davranış

  • App kapsamı: ClientBuilder::app_id varsayılandır; servis başına with_options(RequestOptions::new().app_id(…)).
  • Yeniden deneme: 429 her metotta; 5xx ve ağ hataları GET/PUT/DELETE'te, POST/PATCH'te yalnızca Idempotency-Key varsa. Retry-After uygulanır.
  • Hatalar: pushizo::Error (status, code, message, request_id) ve kind() (NotFound, RateLimited …). API anahtarı hata metnine ve Debug çıktısına yazılmaz.
  • Webhook: construct_webhook_events(ham_gövde, Some(imza_başlığı), &[secret], &Default::default()).
  • Kimlik doğrulama: identity_hash(sdk_secret, external_id) ve ES256 identity_token(&IdentityTokenOptions { … }).

Ayrıntılı rehber: pushizo-rust README.

Bu sayfada