Merge: nitweb: use index for quick search
[nit.git] / src / web / api_metrics.nit
index 30a53f1..bb0147c 100644 (file)
@@ -17,18 +17,10 @@ module api_metrics
 import web_base
 import metrics
 
-# Group all api handlers in one router.
-class APIMetricsRouter
-       super Router
-
-       # Model to pass to handlers.
-       var model: Model
-
-       # Mainmodule to pass to handlers.
-       var mainmodule: MModule
-
-       init do
-               use("/structural/:id", new APIStructuralMetrics(model, mainmodule))
+redef class APIRouter
+       redef init do
+               super
+               use("/metrics/structural/:id", new APIStructuralMetrics(config))
        end
 end
 
@@ -36,52 +28,50 @@ class APIStructuralMetrics
        super APIHandler
 
        private fun mclasses_metrics: MetricSet do
+               var mainmodule = config.mainmodule
                var metrics = new MetricSet
-               metrics.register(new CNOA(mainmodule, view))
-               metrics.register(new CNOP(mainmodule, view))
-               metrics.register(new CNOC(mainmodule, view))
-               metrics.register(new CNOD(mainmodule, view))
-               metrics.register(new CNOAC(mainmodule, view))
-               metrics.register(new CNOAA(mainmodule, view))
-               metrics.register(new CNOAI(mainmodule, view))
-               metrics.register(new CDIT(mainmodule, view))
-               metrics.register(new CNBP(mainmodule, view))
-               metrics.register(new CNBA(mainmodule, view))
-               metrics.register(new CNBM(mainmodule, view))
-               metrics.register(new CNBI(mainmodule, view))
-               metrics.register(new CNBV(mainmodule, view))
-               metrics.register(new CNBIP(mainmodule, view))
-               metrics.register(new CNBRP(mainmodule, view))
-               metrics.register(new CNBHP(mainmodule, view))
-               metrics.register(new CNBLP(mainmodule, view))
+               metrics.register(new CNOA(mainmodule, config.view))
+               metrics.register(new CNOP(mainmodule, config.view))
+               metrics.register(new CNOC(mainmodule, config.view))
+               metrics.register(new CNOD(mainmodule, config.view))
+               metrics.register(new CNOAC(mainmodule, config.view))
+               metrics.register(new CNOAA(mainmodule, config.view))
+               metrics.register(new CNOAI(mainmodule, config.view))
+               metrics.register(new CDIT(mainmodule, config.view))
+               metrics.register(new CNBP(mainmodule, config.view))
+               metrics.register(new CNBA(mainmodule, config.view))
+               metrics.register(new CNBM(mainmodule, config.view))
+               metrics.register(new CNBI(mainmodule, config.view))
+               metrics.register(new CNBV(mainmodule, config.view))
+               metrics.register(new CNBIP(mainmodule, config.view))
+               metrics.register(new CNBRP(mainmodule, config.view))
+               metrics.register(new CNBHP(mainmodule, config.view))
+               metrics.register(new CNBLP(mainmodule, config.view))
                return metrics
        end
 
        private fun mmodules_metrics: MetricSet do
+               var mainmodule = config.mainmodule
                var metrics = new MetricSet
-               metrics.register(new MNOA(mainmodule, view))
-               metrics.register(new MNOP(mainmodule, view))
-               metrics.register(new MNOC(mainmodule, view))
-               metrics.register(new MNOD(mainmodule, view))
-               metrics.register(new MDIT(mainmodule, view))
-               metrics.register(new MNBD(mainmodule, view))
-               metrics.register(new MNBI(mainmodule, view))
-               metrics.register(new MNBR(mainmodule, view))
-               metrics.register(new MNBCC(mainmodule, view))
-               metrics.register(new MNBAC(mainmodule, view))
-               metrics.register(new MNBIC(mainmodule, view))
+               metrics.register(new MNOA(mainmodule, config.view))
+               metrics.register(new MNOP(mainmodule, config.view))
+               metrics.register(new MNOC(mainmodule, config.view))
+               metrics.register(new MNOD(mainmodule, config.view))
+               metrics.register(new MDIT(mainmodule, config.view))
+               metrics.register(new MNBD(mainmodule, config.view))
+               metrics.register(new MNBI(mainmodule, config.view))
+               metrics.register(new MNBR(mainmodule, config.view))
+               metrics.register(new MNBCC(mainmodule, config.view))
+               metrics.register(new MNBAC(mainmodule, config.view))
                return metrics
        end
 
        redef fun get(req, res) do
                var mentity = mentity_from_uri(req, res)
-               if mentity == null then
-                       res.error 404
-                       return
-               end
+               if mentity == null then return
                var metrics = mentity.collect_metrics(self)
                if metrics == null then
-                       res.error 404
+                       res.api_error(404, "No metric for mentity `{mentity.full_name}`")
                        return
                end
                res.json metrics