From: Christian Hofstaedtler Date: Tue, 28 Jan 2014 00:03:54 +0000 (+0100) Subject: webserver: add GET /servers/localhost/zones/ X-Git-Tag: rec-3.6.0-rc1~213^2~12 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=05776d2f75b42617a1f71d1b1330c2b5f272ee40;p=thirdparty%2Fpdns.git webserver: add GET /servers/localhost/zones/ --- diff --git a/pdns/ws.cc b/pdns/ws.cc index ef5f088bc5..4fb21a53e5 100644 --- a/pdns/ws.cc +++ b/pdns/ws.cc @@ -582,6 +582,15 @@ static void apiServerZones(HttpRequest* req, HttpResponse* resp) { resp->body = makeStringFromDocument(doc); } +static void apiServerZoneDetail(HttpRequest* req, HttpResponse* resp) { + string zonename = req->path_parameters["id"]; + + if(req->method != "GET") + throw HttpMethodNotAllowedException(); + + resp->body = getZone(zonename); +} + void StatWebServer::jsonstat(HttpRequest* req, HttpResponse* resp) { string command; @@ -885,6 +894,7 @@ void StatWebServer::launch() registerApiHandler("/servers/localhost/config", &apiServerConfig); registerApiHandler("/servers/localhost/search-log", &apiServerSearchLog); registerApiHandler("/servers/localhost/zones", &apiServerZones); + registerApiHandler("/servers/localhost/zones/", &apiServerZoneDetail); // legacy dispatch registerApiHandler("/jsonstat", boost::bind(&StatWebServer::jsonstat, this, _1, _2)); } diff --git a/regression-tests.api/test_Zones.py b/regression-tests.api/test_Zones.py index c63a1215d6..42e09f57af 100644 --- a/regression-tests.api/test_Zones.py +++ b/regression-tests.api/test_Zones.py @@ -32,3 +32,14 @@ class Servers(ApiTestCase): self.assertIn(k, data) if k in payload: self.assertEquals(data[k], payload[k]) + + def test_GetZone(self): + r = self.session.get(self.url("/servers/localhost/zones")) + domains = r.json() + example_com = [domain for domain in domains if domain['name'] == u'example.com'][0] + r = self.session.get(self.url("/servers/localhost/zones/" + example_com['id'])) + self.assertSuccessJson(r) + data = r.json() + for k in ('id', 'url', 'name', 'masters', 'kind', 'last_check', 'notified_serial', 'serial'): + self.assertIn(k, data) + self.assertEquals(data['name'], 'example.com')