Skip to content

RevEngine3r/cafebazaar-dev-api-client

Repository files navigation

بارگذار خودکار انتشار کافه‌بازار (Pishkhan API)

ابزاری کوچک و پایتونی برای ایجاد ریلیز، آپلود APK/AAB، و Commit در پیشخوان بازار با استفاده از API رسمی Pishkhan.

هسته‌ی پروژه: یک کلاس پایتونی با پوشش تمام متدهای مستند، به‌همراه CLI ساده برای اجرا در CI/CD.


فهرست


ویژگی‌ها

  • هدر احراز هویت صحیح: CAFEBAZAAR-PISHKHAN-API-SECRET
  • Endpointهای رسمی (نسخهٔ v1) با Base URL:
    • https://api.pishkhan.cafebazaar.ir/v1
  • پوشش کامل متدها:
    • POST /apps/releases/ ایجاد ریلیز Draft
    • GET /apps/releases/last-uncommitted/
    • GET /apps/releases/last-committed/
    • GET /apps/releases/last-published/
    • POST /apps/releases/upload/ آپلود APK (multipart با فیلدهای apk و architecture)
    • POST /apps/releases/upload-aab/ آپلود AAB
    • POST /apps/releases/upload-bin/ آپلود BIN مرتبط با AAB
    • GET /apps/releases/bundle-status/ وضعیت پردازش باندل (AAB)
    • POST /apps/releases/commit/ کامیت نهایی با auto_publish و staged_rollout_percentage و changelogها

معماری‌های معتبر برای APK: all، armeabi-v7a، arm64-v8a.


پیش‌نیازها

  • Python 3.8+
  • کتابخانه‌ی requests

گرفتن توکن از پیشخوان

۱. وارد حساب توسعه‌دهندگان کافه‌بازار شوید و به پیشخوان برنامه‌ی موردنظر بروید.
۲. بخش API پیشخوان (Pishkhan API) را باز کنید.
۳. یک توکن مخصوص همان اپلیکیشن بسازید/بردارید.
۴. مقدار توکن را امن نگهدارید (Secrets/CI).
۵. در فراخوانی‌های API، این مقدار را در هدر زیر ارسال می‌کنیم:

CAFEBAZAAR-PISHKHAN-API-SECRET: <YOUR_APP_TOKEN>

توجه: این توکن اپ-اسکوپ است؛ برای هر اپ، توکن جداگانه لازم است.


نصب

با pip (قابل ویرایش محلی)

pip install -e .

یا فقط وابستگی‌ها:

pip install -r requirements.txt

استفاده سریع (CLI)

انتشار APK

export BAZAAR_API_SECRET="توکن-پیشخوان"
python -m pishkhan_client.cli \
  --apk app-release.apk \
  --architecture all \
  --fa "بهبود عملکرد" \
  --en "Performance improvements" \
  --note "CI deploy" \
  --rollout 100 \
  --auto-publish

انتشار AAB + BIN

export BAZAAR_API_SECRET="توکن-پیشخوان"
python -m pishkhan_client.cli \
  --aab app-release.aab \
  --bin app-release.bin \
  --fa "بهبود عملکرد" \
  --en "Performance improvements" \
  --note "CI deploy" \
  --rollout 100 \
  --auto-publish

در حالت AAB، اسکریپت بعد از آپلود AAB و BIN می‌تواند وضعیت پردازش باندل را با bundle-status پول کند و بعد Commit کند.


استفاده در کد پایتون

from pishkhan_client.client import PishkhanClient

token = "YOUR_APP_TOKEN"  # از پیشخوان
cli = PishkhanClient(token)

# APK
cli.release_apk(
    apk_path="app-release.apk",
    architecture="all",
    changelog_fa="بهبود پایداری",
    changelog_en="Stability improvements",
    developer_note="CI",
    rollout=100,
    auto_publish=True,
)

# یا AAB + BIN
cli.release_aab(
    aab_path="app-release.aab",
    bin_path="app-release.bin",
    changelog_fa="ویژگی‌های جدید",
    changelog_en="New features",
    developer_note="CI",
    rollout=50,
    auto_publish=True,
    poll=True,            # صبر برای اتمام پردازش باندل
    poll_every_sec=60,
)

جریان‌های متداول

  • آپلود APK و انتشار فوری (Auto Publish):

    1. last-uncommitted → نبود؟ create_release
    2. upload (APK)
    3. commit با auto_publish=true و staged_rollout_percentage=100
  • آپلود AAB/BIN و انتشار مرحله‌ای (Staged Rollout):

    1. last-uncommitted → نبود؟ create_release
    2. upload-aab + upload-bin
    3. bundle-status تا state == "D"
    4. commit با staged_rollout_percentage=10 → بعداً به 100 ارتقاء دهید

نکات و خطاهای رایج

  • 401/403: توکن اشتباه/برای اپ دیگر است. هدر باید دقیقاً CAFEBAZAAR-PISHKHAN-API-SECRET باشد.
  • 429: محدودیت نرخ. کمی تأخیر/Backoff بگذارید.
  • فرمت‌ها: در آپلود، نوع محتوا برای APK application/vnd.android.package-archive و برای AAB/BIN application/octet-stream است.
  • AAB: بعد از آپلود AAB/BIN، تا آماده شدن باندل صبر کنید (bundle-status).

مجوز

MIT

About

آپلود در کافه بازار با استفاده از API رسمی.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages