Skip to main content

Crate myid

Crate myid 

Source
Expand description

§MyID SDK — Rust Client

O’zbekiston Respublikasi MyID identifikatsiya tizimi uchun rasmiy bo’lmagan Rust SDK kutubxonasi.

§Imkoniyatlar

  • OAuth 2.0 — MyID API bilan autentifikatsiya
  • Type-safe config — compile-time’da URL va parametrlar validatsiyasi
  • Async/awaittokio runtime bilan to’liq asinxron ishlash
  • Xavfsizlikclient_secret Debug outputda yashiriladi
  • Thread-safeSend + Sync compile-time kafolati
[dependencies]
myid = "0.1.10"
tokio = { version = "1", features = ["full"] }

§Tez boshlash

use myid::config::Config;
use myid::error::MyIdResult;

fn main() -> MyIdResult<()> {
    // Minimal config — faqat majburiy parametrlar
    let config = Config::new(
        "https://myid.uz",
        "your_client_id",
        "your_client_secret",
    )?;

    println!("Base URL: {}", config.base_url());
    Ok(())
}

§Konfiguratsiya

Config — SDK ning asosiy konfiguratsiya strukturasi. Barcha parametrlar new() + with_*() chaining pattern orqali sozlanadi:

use std::time::Duration;
use myid::config::Config;

let config = Config::new("https://myid.uz", "client_id", "client_secret")?
    .with_timeout(Duration::from_secs(30))?
    .with_connect_timeout(Duration::from_secs(5))?
    .with_user_agent("my-backend/1.0")
    .with_proxy("http://proxy.local:8080")?;

Batafsil ma’lumot uchun config moduli dokumentatsiyasini ko’ring.

§Xatolarni boshqarish

SDK barcha xatolarni MyIdError enum orqali qaytaradi. Qulay ishlatish uchun MyIdResult<T> type aliasi mavjud:

use myid::config::Config;
use myid::error::{MyIdError, MyIdResult};

fn create_config() -> MyIdResult<()> {
    let config = Config::new("https://myid.uz", "id", "secret")?;
    Ok(())
}

// Xatoni ushlash
match Config::new("noto'g'ri-url", "id", "secret") {
    Ok(cfg) => println!("Muvaffaqiyatli: {}", cfg.base_url()),
    Err(MyIdError::Config { message }) => {
        eprintln!("Konfiguratsiya xatosi: {message}");
    },
    _ => unreachable!(),
}

§Features

FeatureDefaultTavsif
dotenvy✅ Ha.env fayldan konfiguratsiya yuklash (Config::from_env())

§dotenvy ni o’chirish

Agar .env fayl qo’llab-quvvatlash kerak bo’lmasa:

[dependencies]
myid = { version = "0.1.10", default-features = false }

§Modullar

ModulTavsif
configSDK konfiguratsiyasi — URL, timeout, proxy, user-agent
errorXato tipi (MyIdError) va Result aliasi
clientMyID API ga so’rovlar yuborish
preludeTez-tez ishlatiladigan turlar yig’indisi
typesType-safe qiymat turlari (PINFL, passport, va boshqalar)
dtoAPI so’rov va javob DTO strukturalari

§Xavfsizlik eslatmalari

  • client_secretfaqat backend muhitida saqlang
  • Debug output’da secret avtomatik <redacted> sifatida ko’rsatiladi
  • Frontend yoki client-side kodda ishlatmang

§Minimal Rust versiyasi (MSRV)

Rust 1.93.0 yoki undan yuqori talab qilinadi.

Re-exports§

pub use client::MyIdClient;
pub use config::Config;
pub use error::MyIdError;
pub use error::MyIdResult;

Modules§

client
MyID API client moduli.
config
MyID SDK konfiguratsiya moduli.
dto
API so’rov va javob DTO strukturalari.
error
MyID SDK xatoliklarni boshqarish moduli.
prelude
SDK ning barcha tez-tez ishlatiladigan turlarini bitta import bilan yuklash.
types
Type-safe qiymat turlari.