From 37db6ee85ea697965da9f97c6f362daf4396240c Mon Sep 17 00:00:00 2001 From: Alexandre Terrasa Date: Thu, 25 Aug 2016 00:36:22 -0400 Subject: [PATCH] nitweb: split APIRouter in modules Signed-off-by: Alexandre Terrasa --- src/nitweb.nit | 25 +------------------------ src/web/api_catalog.nit | 18 ++++++++---------- src/web/api_docdown.nit | 7 +++++++ src/web/api_feedback.nit | 10 ++++------ src/web/api_graph.nit | 8 +++----- src/web/api_metrics.nit | 10 ++++------ src/web/api_model.nit | 15 +++++++++++++++ src/web/web.nit | 4 ++++ src/web/web_base.nit | 2 +- 9 files changed, 47 insertions(+), 52 deletions(-) diff --git a/src/nitweb.nit b/src/nitweb.nit index 61117a5..071a2af 100644 --- a/src/nitweb.nit +++ b/src/nitweb.nit @@ -85,7 +85,7 @@ private class NitwebPhase app.use_before("/*", new SessionInit) app.use_before("/*", new RequestClock) - app.use("/api", new NitwebAPIRouter(config)) + app.use("/api", new APIRouter(config)) app.use("/login", new GithubLogin(config.github_client_id)) app.use("/oauth", new GithubOAuthCallBack(config.github_client_id, config.github_client_secret)) app.use("/logout", new GithubLogout) @@ -96,29 +96,6 @@ private class NitwebPhase end end -# Group all api handlers in one router. -class NitwebAPIRouter - super APIRouter - - init do - use("/catalog", new APICatalogRouter(config)) - use("/list", new APIList(config)) - use("/search", new APISearch(config)) - use("/random", new APIRandom(config)) - use("/entity/:id", new APIEntity(config)) - use("/code/:id", new APIEntityCode(config)) - use("/uml/:id", new APIEntityUML(config)) - use("/linearization/:id", new APIEntityLinearization(config)) - use("/defs/:id", new APIEntityDefs(config)) - use("/feedback/", new APIFeedbackRouter(config)) - use("/inheritance/:id", new APIEntityInheritance(config)) - use("/graph/", new APIGraphRouter(config)) - use("/docdown/", new APIDocdown(config)) - use("/metrics/", new APIMetricsRouter(config)) - use("/user", new GithubUser) - end -end - # build toolcontext var toolcontext = new ToolContext var tpl = new Template diff --git a/src/web/api_catalog.nit b/src/web/api_catalog.nit index 294d072..30b8757 100644 --- a/src/web/api_catalog.nit +++ b/src/web/api_catalog.nit @@ -40,16 +40,14 @@ redef class NitwebConfig end end -# Group all api handlers in one router. -class APICatalogRouter - super APIRouter - - init do - use("/highlighted", new APICatalogHighLighted(config)) - use("/required", new APICatalogMostRequired(config)) - use("/bytags", new APICatalogByTags(config)) - use("/contributors", new APICatalogContributors(config)) - use("/stats", new APICatalogStats(config)) +redef class APIRouter + redef init do + super + use("/catalog/highlighted", new APICatalogHighLighted(config)) + use("/catalog/required", new APICatalogMostRequired(config)) + use("/catalog/bytags", new APICatalogByTags(config)) + use("/catalog/contributors", new APICatalogContributors(config)) + use("/catalog/stats", new APICatalogStats(config)) end end diff --git a/src/web/api_docdown.nit b/src/web/api_docdown.nit index bf4c80f..778baa1 100644 --- a/src/web/api_docdown.nit +++ b/src/web/api_docdown.nit @@ -20,6 +20,13 @@ intrude import doc_down intrude import markdown::wikilinks import doc_commands +redef class APIRouter + redef init do + super + use("/docdown/", new APIDocdown(config)) + end +end + # Docdown handler accept docdown as POST data and render it as HTML class APIDocdown super APIHandler diff --git a/src/web/api_feedback.nit b/src/web/api_feedback.nit index 5db1d04..221a25e 100644 --- a/src/web/api_feedback.nit +++ b/src/web/api_feedback.nit @@ -23,12 +23,10 @@ redef class NitwebConfig var stars: MongoCollection is lazy do return db.collection("stars") end -# Group all api handlers in one router -class APIFeedbackRouter - super APIRouter - - init do - use("/stars/:id", new APIStars(config)) +redef class APIRouter + redef init do + super + use("/feedback/stars/:id", new APIStars(config)) end end diff --git a/src/web/api_graph.nit b/src/web/api_graph.nit index d58031d..851da48 100644 --- a/src/web/api_graph.nit +++ b/src/web/api_graph.nit @@ -19,12 +19,10 @@ import web_base import dot import uml -# Group all api handlers in one router. -class APIGraphRouter - super APIRouter - +redef class APIRouter init do - use("/inheritance/:id", new APIInheritanceGraph(config)) + super + use("/graph/inheritance/:id", new APIInheritanceGraph(config)) end end diff --git a/src/web/api_metrics.nit b/src/web/api_metrics.nit index 8d64c04..af95f53 100644 --- a/src/web/api_metrics.nit +++ b/src/web/api_metrics.nit @@ -17,12 +17,10 @@ module api_metrics import web_base import metrics -# Group all api handlers in one router. -class APIMetricsRouter - super APIRouter - - init do - use("/structural/:id", new APIStructuralMetrics(config)) +redef class APIRouter + redef init do + super + use("/metrics/structural/:id", new APIStructuralMetrics(config)) end end diff --git a/src/web/api_model.nit b/src/web/api_model.nit index 63fd636..2b39462 100644 --- a/src/web/api_model.nit +++ b/src/web/api_model.nit @@ -18,6 +18,21 @@ import web_base import highlight import uml +redef class APIRouter + redef init do + super + use("/list", new APIList(config)) + use("/search", new APISearch(config)) + use("/random", new APIRandom(config)) + use("/entity/:id", new APIEntity(config)) + use("/code/:id", new APIEntityCode(config)) + use("/uml/:id", new APIEntityUML(config)) + use("/linearization/:id", new APIEntityLinearization(config)) + use("/defs/:id", new APIEntityDefs(config)) + use("/inheritance/:id", new APIEntityInheritance(config)) + end +end + # List all mentities. # # MEntities can be filtered on their kind using the `k` parameter. diff --git a/src/web/web.nit b/src/web/web.nit index 63571c0..24e1202 100644 --- a/src/web/web.nit +++ b/src/web/web.nit @@ -21,3 +21,7 @@ import api_graph import api_docdown import api_metrics import api_feedback + +redef class APIRouter + redef init do super +end diff --git a/src/web/web_base.nit b/src/web/web_base.nit index 26bd55e..06a0ff5 100644 --- a/src/web/web_base.nit +++ b/src/web/web_base.nit @@ -106,7 +106,7 @@ end class APIRouter super Router - # App config. + # App config var config: NitwebConfig end -- 1.7.9.5