resp->setJsonBody(doc);
}
+void apiDiscoveryV1(HttpRequest* req, HttpResponse* resp) {
+ if(req->method != "GET")
+ throw HttpMethodNotAllowedException();
+
+ Json version1 = Json::object {
+ { "server_url", "/api/v1/servers{/server}" },
+ { "api_features", Json::array {} }
+ };
+ Json doc = Json::array { version1 };
+
+ resp->setJsonBody(doc);
+
+}
+
void apiServer(HttpRequest* req, HttpResponse* resp) {
if(req->method != "GET")
throw HttpMethodNotAllowedException();
#include "webserver.hh"
void apiDiscovery(HttpRequest* req, HttpResponse* resp);
+void apiDiscoveryV1(HttpRequest* req, HttpResponse* resp);
void apiServer(HttpRequest* req, HttpResponse* resp);
void apiServerDetail(HttpRequest* req, HttpResponse* resp);
void apiServerConfig(HttpRequest* req, HttpResponse* resp);
d_ws->registerApiHandler("/api/v1/servers/localhost/zones", &apiServerZones);
d_ws->registerApiHandler("/api/v1/servers/localhost", &apiServerDetail);
d_ws->registerApiHandler("/api/v1/servers", &apiServer);
+ d_ws->registerApiHandler("/api/v1", &apiDiscoveryV1);
d_ws->registerApiHandler("/api/docs", &apiDocs);
d_ws->registerApiHandler("/api", &apiDiscovery);
}
d_ws->registerApiHandler("/api/v1/servers/localhost/zones", &apiServerZones);
d_ws->registerApiHandler("/api/v1/servers/localhost", &apiServerDetail, true);
d_ws->registerApiHandler("/api/v1/servers", &apiServer);
+ d_ws->registerApiHandler("/api/v1", &apiDiscoveryV1);
d_ws->registerApiHandler("/api", &apiDiscovery);
for (const auto& u : g_urlmap) {
self.assert_success_json(r)
lst = r.json()
self.assertEqual(lst, [{'version': 1, 'url': '/api/v1'}])
+
+ r = self.session.get(self.url("/api/v1"))
+ self.assert_success_json(r)
+ lst = r.json()
+ self.assertEqual(lst, [{'api_features': [], 'server_url': '/api/v1/servers{/server}'}])