diff --git a/src/scripts/http.js b/src/scripts/http.js index 0f485ac..3f0ecb1 100644 --- a/src/scripts/http.js +++ b/src/scripts/http.js @@ -17,6 +17,7 @@ function Http() { this.oReq = new XMLHttpRequest(); this._events = {}; + this._headers = {}; } Http.prototype.addEventListener = function(e, f) { @@ -31,6 +32,9 @@ Http.prototype.addEventListener = function(e, f) { for (key in this.http._events) { req.addEventListener(key, this.http._events[key]); } + for (key in this.http._headers) { + req.setRequestHeader(key, this.http._headers[key]); + } req.withCredentials = true; req.open(this.http._method, this.http._url); req.send(); @@ -50,6 +54,11 @@ Http.prototype.addEventListener = function(e, f) { } }; +Http.prototype.setRequestHeader = function(header, value) { + this.oReq.setRequestHeader(header, value); + this._headers[header] = value; +}; + Http.prototype.open = function(m, u) { this._method = m; this._url = u; diff --git a/src/tags/taglist.tag b/src/tags/taglist.tag index 59801cb..6c93af4 100644 --- a/src/tags/taglist.tag +++ b/src/tags/taglist.tag @@ -36,6 +36,11 @@ { registryUI.taglist.name } { item } + + + delete + + @@ -110,6 +115,35 @@ registryUI.taglist.back = function () { rg.router.go('home'); }; + registryUI.taglist.remove = function (name, tag) { + var oReq = new Http(); + oReq.addEventListener('load', function () { + if (this.status == 200) { + var digest = JSON.parse(this.responseText).config.digest; + var oReq = new Http(); + oReq.addEventListener('load', function () { + if (this.status == 200) { + registryUI.taglist.instance.update(); + } else if (this.status == 404) { + registryUI.taglist.createSnackbar('Server not found'); + } else { + registryUI.taglist.createSnackbar(this.responseText); + } + }); + oReq.open('DELETE', registryUI.url() + '/v2/' + name + '/manifests/' + digest); + oReq.setRequestHeader('Accept', 'application/vnd.docker.distribution.manifest.v2+json'); + oReq.send(); + } else if (this.status == 404) { + registryUI.taglist.createSnackbar('Server not found'); + } else { + registryUI.taglist.createSnackbar(this.responseText); + } + }); + console.log(name, tag); + oReq.open('GET', registryUI.url() + '/v2/' + name + '/manifests/' + tag); + oReq.setRequestHeader('Accept', 'application/vnd.docker.distribution.manifest.v2+json'); + oReq.send(); + }; \ No newline at end of file