Motoshub · API v1 · Delivery Status
این صفحه ساختار نهایی تحویل API v1 را شرح میدهد: ۱۰ درخواست ادغامِ مستقل و موازی، خودکفایی مجوز هر پلاگین، مستندسازی خودکار، و مجموعهی تست.
هر دسته مستقیماً از moto-next جدا شده و مستقیماً به moto-next هدف میگیرد (نه پشتهای). هیچ دو دستهای فایل مشترک ندارند، پس میتوان آنها را موازی review و merge کرد. فایلهای مشترک (init.php، install.php، bootstrap) فقط افزوده شدهاند و هرگز خطی حذف نشده است.
| دسته | دامنه | وابستگی |
|---|---|---|
| foundation | پلاگین api: کاربران، فایل، احراز هویت، مستندسازی خودکار | پیشنیاز Bridge |
| shipped-fixes | رفع اشکال بلاگ، خبر، عکس، ویدیو (شامل رفع IDOR عکس) | مستقل |
| social | دوستان، اعلانها، حریم خصوصی، منشن، جستجو، کامنت | مستقل |
| content | رویداد، فروم، نظرسنجی، صفحهساز | مستقل |
| community | فید، گروهها، پیامرسان | پیشنیاز Bridge |
| quiz | پرسمانساز و داوری | مستقل |
| challenge | مسابقات تعاملی، مسابقات، ارزیابی | مستقل |
| journal | نشریه: شماره، مقاله، نویسنده، کلیدواژه، قالب ارجاع | مستقل |
| org | گرنت، فراخوان، تیکتینگ، کارمند، فناوری، واحد فناور | پیشنیاز Bridge |
| bridge-api-fixes | رفع باگهای چارچوب + دو فایل پیشنیاز (StringLength، AccountGate) | بازبینی مالک Bridge |
StringLength، AccountGate) در دستهی bridge-api-fixes وابستهاند و باید پس از آن merge شوند.
هر پلاگین فیچر، اکشنهای REST خودش را ثبت و به همهی نقشها اعطا میکند — در دو محل:
plugin.xml — برای سایت زنده. اکسوال هنگام دیدن بامپ build، این را خودکار اجرا میکند. همان الگویی که ماژولهای مستقر (blogs/iisnews/photo) از قبل استفاده میکنند.event از دیتابیس و اجرای فقط event/update/<build>/update.php، دوباره GET /events کد ۲۰۰ و POST /events کد ۲۰۱ برگرداند — بدون هیچ دستور مرکزی.
SwaggerController حالا با glob روی ow_plugins/*/src/Http همهی پلاگینهای دارای API را خودکار پیدا میکند. هیچ فیچری دیگر لازم نیست این فایل مشترک را دست بزند، پس دستهها روی آن تعارض نمیخورند. خروجی: همان ۲۹۳ عملیات روی ۱۷۸ مسیر.
برای هر کنترلر API v1 یک فایل تست بر اساس تمپلیت رسمی AuthControllerTest نوشته شده و در دستهی همان پلاگین قرار گرفته است. helperهای مشترک در Pest.php: بوت یکبارهی autoload پلاگینها، یک authenticator باحالت (تا login()/isAdmin() در هارنس کار کنند)، و کارخانهی کاربر ادمین + توکن JWT.
پوشش هر کنترلر: پاسخ موفق فهرست (با پاکت صفحهبندی)، رد درخواست بدون احراز هویت با ۴۰۱، تبدیل شناسهی غیرعددی به ۴۰۴ بهجای خطای مرگبار، و استثنای دامنه برای رکورد ناموجود/بدنهی خالی. کنترلر رویداد چرخهی کامل ساخت/خواندن/ویرایشجزئی/حذف را هم میآزماید.