البحث عن أمثلة استخدام لـ add_api_key_scope

مرحبًا بالجميع،

أحاول العمل مع هذه الطريقة في Plugin::Instance: discourse/lib/plugin/instance.rb at 06c60b017c86ddab489fd3d30c951c10b5c4d281 · ayampenyetan/discourse · GitHub

حاولت البحث عن استخدامات موجودة لهذه الطريقة عبر قاعدة كود Discourse أو على GitHub، لكن يبدو أنها لا تُستخدم فعليًا في أي مكان خارج حالات الاختبار (حسب الكود المتاح للعامة).

هل يمكن لأحد شرح الأمور التالية لي:

  • ما هو الطريقة الصحيحة للحصول على مثيل من Plugin::Instance داخل إضافة (plugin) لكي يمكن استدعاء هذه الطريقة؟
  • ما هو التوقيت المناسب لاستدعاء الطريقة المذكورة أعلاه؟ إذا قمت بإنشاء نقطة نهاية (endpoint) جديدة في إضافتي، هل يجب وضع هذا الاستدعاء بعد إنشاء نقطة النهاية؟ أم قبلها أو داخل after_initialize؟
  • يبدو أن الكود التالي يسجل النطاق (scope)، لكن عند محاولة الوصول إلى نقطة النهاية التي سجلتها باستخدام مفتاح API إداري يحتوي على هذا النطاق، لا يبدو أنه قادر على العثور على الإجراء (action). تعمل نقطة النهاية بشكل صحيح عند الوصول إليها باستخدام مفتاح API إداري يحتوي على جميع النطاقات. لماذا لا يعمل هذا؟ ما الخطأ الذي أقوم به؟
  • حاولت إضافة إدخال urls إلى الإجراءات، لكنه لا يبدو أنه يتم التقاطه. كيف يمكنني إضافة قائمة عناوين URL بنجاح ينطبق عليها هذا النطاق إلى هذا الهيكل؟
after_initialize do

    module ::ApiKeyScopeTest
        class Engine < ::Rails::Engine
            engine_name "api_key_scope_test"
            isolate_namespace ApiKeyScopeTest
        end
    end

    class ApiKeyScopeTest::ApiKeyScopeTestController < ::ApplicationController

        def action
            ...
        end

    end

    ApiKeyScopeTest::Engine.routes.draw do
        post "/admin/plugins/api-key-scope-test" => "api_key_scope_test#action", constraints: AdminConstraint.new
    end

    Discourse::Application.routes.append do
        mount ::ApiKeyScopeTest::Engine, at: "/"
    end

    plugin = Plugin::Instance.new # ملاحظة: غير واضح ما إذا كان هذا صحيحًا

    plugin.add_api_key_scope(
        :test_scope,
        {
            post: {
                actions: %w[api_key_scope_test#action]
            }
        }
    )

end
إعجاب واحد (1)