Introduce plugin.restApi(), deprecate other REST helper methods
Implement REST-related methods on Gerrit (get, post, etc).
REST-related methods on plugin now take plugin URL space into account,
to match GWT UI plugin JS API.
Example:
``` js
Gerrit.install(plugin => {
// deprecated:
plugin.get('/foo', json => {
// work work
});
Gerrit.post('/bar', {bar: 'space'}, json => {
// post succeeds
});
// recommended:
const pluginRestApi = plugin.restApi(plugin.url());
plugin.get('/foo').then(json => {
// work work
});
plugin.restApi().post('/bar', {bar: 'space'}).then(json => {
// post succeeds
});
});
```
Change-Id: I6f537507d76bddec1cac9159cebe1b720ab5caf8
This commit is contained in:
@@ -31,5 +31,6 @@ limitations under the License.
|
|||||||
<script src="gr-js-api-interface.js"></script>
|
<script src="gr-js-api-interface.js"></script>
|
||||||
<script src="gr-plugin-endpoints.js"></script>
|
<script src="gr-plugin-endpoints.js"></script>
|
||||||
<script src="gr-plugin-action-context.js"></script>
|
<script src="gr-plugin-action-context.js"></script>
|
||||||
|
<script src="gr-plugin-rest-api.js"></script>
|
||||||
<script src="gr-public-js-api.js"></script>
|
<script src="gr-public-js-api.js"></script>
|
||||||
</dom-module>
|
</dom-module>
|
||||||
|
|||||||
@@ -96,7 +96,8 @@ limitations under the License.
|
|||||||
const response = {foo: 'foo'};
|
const response = {foo: 'foo'};
|
||||||
getResponseObjectStub.returns(Promise.resolve(response));
|
getResponseObjectStub.returns(Promise.resolve(response));
|
||||||
return plugin.get('/url', r => {
|
return plugin.get('/url', r => {
|
||||||
assert.isTrue(sendStub.calledWith('GET', '/url'));
|
assert.isTrue(sendStub.calledWith(
|
||||||
|
'GET', 'http://test.com/plugins/testplugin/url'));
|
||||||
assert.strictEqual(r, response);
|
assert.strictEqual(r, response);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -105,7 +106,8 @@ limitations under the License.
|
|||||||
const response = {foo: 'foo'};
|
const response = {foo: 'foo'};
|
||||||
getResponseObjectStub.returns(Promise.resolve(response));
|
getResponseObjectStub.returns(Promise.resolve(response));
|
||||||
return plugin.get('/url', r => 'rubbish').then(r => {
|
return plugin.get('/url', r => 'rubbish').then(r => {
|
||||||
assert.isTrue(sendStub.calledWith('GET', '/url'));
|
assert.isTrue(sendStub.calledWith(
|
||||||
|
'GET', 'http://test.com/plugins/testplugin/url'));
|
||||||
assert.strictEqual(r, response);
|
assert.strictEqual(r, response);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -115,7 +117,8 @@ limitations under the License.
|
|||||||
const response = {bar: 'bar'};
|
const response = {bar: 'bar'};
|
||||||
getResponseObjectStub.returns(Promise.resolve(response));
|
getResponseObjectStub.returns(Promise.resolve(response));
|
||||||
return plugin.post('/url', payload, r => {
|
return plugin.post('/url', payload, r => {
|
||||||
assert.isTrue(sendStub.calledWith('POST', '/url', payload));
|
assert.isTrue(sendStub.calledWith(
|
||||||
|
'POST', 'http://test.com/plugins/testplugin/url', payload));
|
||||||
assert.strictEqual(r, response);
|
assert.strictEqual(r, response);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -125,7 +128,8 @@ limitations under the License.
|
|||||||
const response = {bar: 'bar'};
|
const response = {bar: 'bar'};
|
||||||
getResponseObjectStub.returns(Promise.resolve(response));
|
getResponseObjectStub.returns(Promise.resolve(response));
|
||||||
return plugin.put('/url', payload, r => {
|
return plugin.put('/url', payload, r => {
|
||||||
assert.isTrue(sendStub.calledWith('PUT', '/url', payload));
|
assert.isTrue(sendStub.calledWith(
|
||||||
|
'PUT', 'http://test.com/plugins/testplugin/url', payload));
|
||||||
assert.strictEqual(r, response);
|
assert.strictEqual(r, response);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -134,7 +138,8 @@ limitations under the License.
|
|||||||
const response = {status: 204};
|
const response = {status: 204};
|
||||||
sendStub.returns(Promise.resolve(response));
|
sendStub.returns(Promise.resolve(response));
|
||||||
return plugin.delete('/url', r => {
|
return plugin.delete('/url', r => {
|
||||||
assert.isTrue(sendStub.calledWithExactly('DELETE', '/url'));
|
assert.isTrue(sendStub.calledWithExactly(
|
||||||
|
'DELETE', 'http://test.com/plugins/testplugin/url'));
|
||||||
assert.strictEqual(r, response);
|
assert.strictEqual(r, response);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -145,7 +150,8 @@ limitations under the License.
|
|||||||
return plugin.delete('/url', r => {
|
return plugin.delete('/url', r => {
|
||||||
throw new Error('Should not resolve');
|
throw new Error('Should not resolve');
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
assert.isTrue(sendStub.calledWith('DELETE', '/url'));
|
assert.isTrue(sendStub.calledWith(
|
||||||
|
'DELETE', 'http://test.com/plugins/testplugin/url'));
|
||||||
assert.equal('text', err);
|
assert.equal('text', err);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,104 @@
|
|||||||
|
// Copyright (C) 2017 The Android Open Source Project
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
(function(window) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
function GrPluginRestApi(opt_prefix) {
|
||||||
|
this.opt_prefix = opt_prefix || '';
|
||||||
|
this._restApi = document.createElement('gr-rest-api-interface');
|
||||||
|
}
|
||||||
|
|
||||||
|
GrPluginRestApi.prototype.getLoggedIn = function() {
|
||||||
|
return this._restApi.getLoggedIn();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch and return native browser REST API Response.
|
||||||
|
* @param {string} method HTTP Method (GET, POST, etc)
|
||||||
|
* @param {string} url URL without base path or plugin prefix
|
||||||
|
* @param {Object=} payload Respected for POST and PUT only.
|
||||||
|
* @return {!Promise}
|
||||||
|
*/
|
||||||
|
GrPluginRestApi.prototype.fetch = function(method, url, opt_payload) {
|
||||||
|
return this._restApi.send(method, this.opt_prefix + url, opt_payload);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch and parse REST API response, if request succeeds.
|
||||||
|
* @param {string} method HTTP Method (GET, POST, etc)
|
||||||
|
* @param {string} url URL without base path or plugin prefix
|
||||||
|
* @param {Object=} payload Respected for POST and PUT only.
|
||||||
|
* @return {!Promise} resolves on success, rejects on error.
|
||||||
|
*/
|
||||||
|
GrPluginRestApi.prototype.send = function(method, url, opt_payload) {
|
||||||
|
return this.fetch(method, url, opt_payload).then(response => {
|
||||||
|
if (response.status < 200 || response.status >= 300) {
|
||||||
|
return response.text().then(text => {
|
||||||
|
if (text) {
|
||||||
|
return Promise.reject(text);
|
||||||
|
} else {
|
||||||
|
return Promise.reject(response.status);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return this._restApi.getResponseObject(response);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} url URL without base path or plugin prefix
|
||||||
|
* @return {!Promise} resolves on success, rejects on error.
|
||||||
|
*/
|
||||||
|
GrPluginRestApi.prototype.get = function(url) {
|
||||||
|
return this.send('GET', url);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} url URL without base path or plugin prefix
|
||||||
|
* @return {!Promise} resolves on success, rejects on error.
|
||||||
|
*/
|
||||||
|
GrPluginRestApi.prototype.post = function(url, opt_payload) {
|
||||||
|
return this.send('POST', url, opt_payload);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} url URL without base path or plugin prefix
|
||||||
|
* @return {!Promise} resolves on success, rejects on error.
|
||||||
|
*/
|
||||||
|
GrPluginRestApi.prototype.put = function(url, opt_payload) {
|
||||||
|
return this.send('PUT', url, opt_payload);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} url URL without base path or plugin prefix
|
||||||
|
* @return {!Promise} resolves on 204, rejects on error.
|
||||||
|
*/
|
||||||
|
GrPluginRestApi.prototype.delete = function(url) {
|
||||||
|
return this.fetch('DELETE', url).then(response => {
|
||||||
|
if (response.status !== 204) {
|
||||||
|
return response.text().then(text => {
|
||||||
|
if (text) {
|
||||||
|
return Promise.reject(text);
|
||||||
|
} else {
|
||||||
|
return Promise.reject(response.status);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
window.GrPluginRestApi = GrPluginRestApi;
|
||||||
|
})(window);
|
||||||
@@ -0,0 +1,124 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2017 The Android Open Source Project
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
|
||||||
|
<title>gr-plugin-rest-api</title>
|
||||||
|
|
||||||
|
<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
|
||||||
|
<script src="../../../bower_components/web-component-tester/browser.js"></script>
|
||||||
|
<link rel="import" href="../../../test/common-test-setup.html"/>
|
||||||
|
<link rel="import" href="gr-js-api-interface.html"/>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
suite('gr-plugin-rest-api tests', () => {
|
||||||
|
let instance;
|
||||||
|
let sandbox;
|
||||||
|
let getResponseObjectStub;
|
||||||
|
let sendStub;
|
||||||
|
|
||||||
|
setup(() => {
|
||||||
|
sandbox = sinon.sandbox.create();
|
||||||
|
getResponseObjectStub = sandbox.stub().returns(Promise.resolve());
|
||||||
|
sendStub = sandbox.stub().returns(Promise.resolve({status: 200}));
|
||||||
|
stub('gr-rest-api-interface', {
|
||||||
|
getAccount() {
|
||||||
|
return Promise.resolve({name: 'Judy Hopps'});
|
||||||
|
},
|
||||||
|
getResponseObject: getResponseObjectStub,
|
||||||
|
send(...args) {
|
||||||
|
return sendStub(...args);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
Gerrit._setPluginsCount(1);
|
||||||
|
Gerrit.install(p => { plugin = p; }, '0.1',
|
||||||
|
'http://test.com/plugins/testplugin/static/test.js');
|
||||||
|
instance = new GrPluginRestApi();
|
||||||
|
});
|
||||||
|
|
||||||
|
teardown(() => {
|
||||||
|
sandbox.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('fetch', () => {
|
||||||
|
const payload = {foo: 'foo'};
|
||||||
|
return instance.fetch('HTTP_METHOD', '/url', payload).then(r => {
|
||||||
|
assert.isTrue(sendStub.calledWith('HTTP_METHOD', '/url', payload));
|
||||||
|
assert.equal(r.status, 200);
|
||||||
|
assert.isFalse(getResponseObjectStub.called);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('send', () => {
|
||||||
|
const payload = {foo: 'foo'};
|
||||||
|
const response = {bar: 'bar'};
|
||||||
|
getResponseObjectStub.returns(Promise.resolve(response));
|
||||||
|
return instance.send('HTTP_METHOD', '/url', payload).then(r => {
|
||||||
|
assert.isTrue(sendStub.calledWith('HTTP_METHOD', '/url', payload));
|
||||||
|
assert.strictEqual(r, response);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('get', () => {
|
||||||
|
const response = {foo: 'foo'};
|
||||||
|
getResponseObjectStub.returns(Promise.resolve(response));
|
||||||
|
return instance.get('/url').then(r => {
|
||||||
|
assert.isTrue(sendStub.calledWith('GET', '/url'));
|
||||||
|
assert.strictEqual(r, response);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('post', () => {
|
||||||
|
const payload = {foo: 'foo'};
|
||||||
|
const response = {bar: 'bar'};
|
||||||
|
getResponseObjectStub.returns(Promise.resolve(response));
|
||||||
|
return instance.post('/url', payload).then(r => {
|
||||||
|
assert.isTrue(sendStub.calledWith('POST', '/url', payload));
|
||||||
|
assert.strictEqual(r, response);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('put', () => {
|
||||||
|
const payload = {foo: 'foo'};
|
||||||
|
const response = {bar: 'bar'};
|
||||||
|
getResponseObjectStub.returns(Promise.resolve(response));
|
||||||
|
return instance.put('/url', payload).then(r => {
|
||||||
|
assert.isTrue(sendStub.calledWith('PUT', '/url', payload));
|
||||||
|
assert.strictEqual(r, response);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('delete works', () => {
|
||||||
|
const response = {status: 204};
|
||||||
|
sendStub.returns(Promise.resolve(response));
|
||||||
|
return instance.delete('/url').then(r => {
|
||||||
|
assert.isTrue(sendStub.calledWith('DELETE', '/url'));
|
||||||
|
assert.strictEqual(r, response);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('delete fails', () => {
|
||||||
|
sendStub.returns(Promise.resolve(
|
||||||
|
{status: 400, text() { return Promise.resolve('text'); }}));
|
||||||
|
return instance.delete('/url').then(r => {
|
||||||
|
throw new Error('Should not resolve');
|
||||||
|
}).catch(err => {
|
||||||
|
assert.isTrue(sendStub.calledWith('DELETE', '/url'));
|
||||||
|
assert.equal('text', err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
@@ -32,6 +32,28 @@
|
|||||||
return _restAPI;
|
return _restAPI;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// TODO (viktard): deprecate in favor of GrPluginRestApi.
|
||||||
|
function send(method, url, opt_callback, opt_payload) {
|
||||||
|
return getRestAPI().send(method, url, opt_payload).then(response => {
|
||||||
|
if (response.status < 200 || response.status >= 300) {
|
||||||
|
return response.text().then(text => {
|
||||||
|
if (text) {
|
||||||
|
return Promise.reject(text);
|
||||||
|
} else {
|
||||||
|
return Promise.reject(response.status);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return getRestAPI().getResponseObject(response);
|
||||||
|
}
|
||||||
|
}).then(response => {
|
||||||
|
if (opt_callback) {
|
||||||
|
opt_callback(response);
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
const API_VERSION = '0.1';
|
const API_VERSION = '0.1';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -131,55 +153,27 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
Plugin.prototype._send = function(method, url, opt_callback, opt_payload) {
|
Plugin.prototype._send = function(method, url, opt_callback, opt_payload) {
|
||||||
return getRestAPI().send(method, url, opt_payload).then(response => {
|
return send(method, this.url(url), opt_callback, opt_payload);
|
||||||
if (response.status < 200 || response.status >= 300) {
|
|
||||||
return response.text().then(text => {
|
|
||||||
if (text) {
|
|
||||||
return Promise.reject(text);
|
|
||||||
} else {
|
|
||||||
return Promise.reject(response.status);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
return getRestAPI().getResponseObject(response);
|
|
||||||
}
|
|
||||||
}).then(response => {
|
|
||||||
if (opt_callback) {
|
|
||||||
opt_callback(response);
|
|
||||||
}
|
|
||||||
return response;
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Plugin.prototype.get = function(url, opt_callback) {
|
Plugin.prototype.get = function(url, opt_callback) {
|
||||||
|
console.warn('.get() is deprecated! Use .restApi().get()');
|
||||||
return this._send('GET', url, opt_callback);
|
return this._send('GET', url, opt_callback);
|
||||||
},
|
};
|
||||||
|
|
||||||
Plugin.prototype.post = function(url, payload, opt_callback) {
|
Plugin.prototype.post = function(url, payload, opt_callback) {
|
||||||
|
console.warn('.post() is deprecated! Use .restApi().post()');
|
||||||
return this._send('POST', url, opt_callback, payload);
|
return this._send('POST', url, opt_callback, payload);
|
||||||
},
|
};
|
||||||
|
|
||||||
Plugin.prototype.put = function(url, payload, opt_callback) {
|
Plugin.prototype.put = function(url, payload, opt_callback) {
|
||||||
|
console.warn('.put() is deprecated! Use .restApi().put()');
|
||||||
return this._send('PUT', url, opt_callback, payload);
|
return this._send('PUT', url, opt_callback, payload);
|
||||||
},
|
};
|
||||||
|
|
||||||
Plugin.prototype.delete = function(url, opt_callback) {
|
Plugin.prototype.delete = function(url, opt_callback) {
|
||||||
return getRestAPI().send('DELETE', url).then(response => {
|
return Gerrit.delete(this.url(url), opt_callback);
|
||||||
if (response.status !== 204) {
|
};
|
||||||
return response.text().then(text => {
|
|
||||||
if (text) {
|
|
||||||
return Promise.reject(text);
|
|
||||||
} else {
|
|
||||||
return Promise.reject(response.status);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
if (opt_callback) {
|
|
||||||
opt_callback(response);
|
|
||||||
}
|
|
||||||
return response;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
Plugin.prototype.changeActions = function() {
|
Plugin.prototype.changeActions = function() {
|
||||||
return new GrChangeActionsInterface(this,
|
return new GrChangeActionsInterface(this,
|
||||||
@@ -205,6 +199,17 @@
|
|||||||
return new GrProjectApi(this);
|
return new GrProjectApi(this);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To make REST requests for plugin-provided endpoints, use
|
||||||
|
* @example
|
||||||
|
* const pluginRestApi = plugin.restApi(plugin.url());
|
||||||
|
*
|
||||||
|
* @param {string} Base url for subsequent .get(), .post() etc requests.
|
||||||
|
*/
|
||||||
|
Plugin.prototype.restApi = function(opt_prefix) {
|
||||||
|
return new GrPluginRestApi(opt_prefix);
|
||||||
|
};
|
||||||
|
|
||||||
Plugin.prototype.attributeHelper = function(element) {
|
Plugin.prototype.attributeHelper = function(element) {
|
||||||
return new GrAttributeHelper(element);
|
return new GrAttributeHelper(element);
|
||||||
};
|
};
|
||||||
@@ -272,7 +277,7 @@
|
|||||||
|
|
||||||
Gerrit.getPluginName = function() {
|
Gerrit.getPluginName = function() {
|
||||||
console.warn('Gerrit.getPluginName is not supported in PolyGerrit.',
|
console.warn('Gerrit.getPluginName is not supported in PolyGerrit.',
|
||||||
'Please use self.getPluginName() instead.');
|
'Please use plugin.getPluginName() instead.');
|
||||||
};
|
};
|
||||||
|
|
||||||
Gerrit.css = function(rulesStr) {
|
Gerrit.css = function(rulesStr) {
|
||||||
@@ -310,9 +315,45 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
Gerrit.getLoggedIn = function() {
|
Gerrit.getLoggedIn = function() {
|
||||||
|
console.warn('Gerrit.getLoggedIn() is deprecated! ' +
|
||||||
|
'Use plugin.restApi().getLoggedIn()');
|
||||||
return document.createElement('gr-rest-api-interface').getLoggedIn();
|
return document.createElement('gr-rest-api-interface').getLoggedIn();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Gerrit.get = function(url, callback) {
|
||||||
|
console.warn('.get() is deprecated! Use plugin.restApi().get()');
|
||||||
|
send('GET', url, callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
Gerrit.post = function(url, payload, callback) {
|
||||||
|
console.warn('.post() is deprecated! Use plugin.restApi().post()');
|
||||||
|
send('POST', url, callback, payload);
|
||||||
|
};
|
||||||
|
|
||||||
|
Gerrit.put = function(url, payload, callback) {
|
||||||
|
console.warn('.put() is deprecated! Use plugin.restApi().put()');
|
||||||
|
send('PUT', url, callback, payload);
|
||||||
|
};
|
||||||
|
|
||||||
|
Gerrit.delete = function(url, opt_callback) {
|
||||||
|
console.warn('.delete() is deprecated! Use plugin.restApi().delete()');
|
||||||
|
return getRestAPI().send('DELETE', url).then(response => {
|
||||||
|
if (response.status !== 204) {
|
||||||
|
return response.text().then(text => {
|
||||||
|
if (text) {
|
||||||
|
return Promise.reject(text);
|
||||||
|
} else {
|
||||||
|
return Promise.reject(response.status);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (opt_callback) {
|
||||||
|
opt_callback(response);
|
||||||
|
}
|
||||||
|
return response;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Polyfill GWT API dependencies to avoid runtime exceptions when loading
|
* Polyfill GWT API dependencies to avoid runtime exceptions when loading
|
||||||
* GWT-compiled plugins.
|
* GWT-compiled plugins.
|
||||||
|
|||||||
@@ -1372,23 +1372,25 @@
|
|||||||
options.headers.set(header, opt_headers[header]);
|
options.headers.set(header, opt_headers[header]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return this._auth.fetch(this.getBaseUrl() + url, options)
|
if (!url.startsWith('http')) {
|
||||||
.then(response => {
|
url = this.getBaseUrl() + url;
|
||||||
if (!response.ok) {
|
}
|
||||||
if (opt_errFn) {
|
return this._auth.fetch(url, options).then(response => {
|
||||||
return opt_errFn.call(opt_ctx || null, response);
|
if (!response.ok) {
|
||||||
}
|
if (opt_errFn) {
|
||||||
this.fire('server-error', {response});
|
return opt_errFn.call(opt_ctx || null, response);
|
||||||
}
|
}
|
||||||
return response;
|
this.fire('server-error', {response});
|
||||||
}).catch(err => {
|
}
|
||||||
this.fire('network-error', {error: err});
|
return response;
|
||||||
if (opt_errFn) {
|
}).catch(err => {
|
||||||
return opt_errFn.call(opt_ctx, null, err);
|
this.fire('network-error', {error: err});
|
||||||
} else {
|
if (opt_errFn) {
|
||||||
throw err;
|
return opt_errFn.call(opt_ctx, null, err);
|
||||||
}
|
} else {
|
||||||
});
|
throw err;
|
||||||
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -147,6 +147,7 @@ limitations under the License.
|
|||||||
'shared/gr-js-api-interface/gr-change-actions-js-api_test.html',
|
'shared/gr-js-api-interface/gr-change-actions-js-api_test.html',
|
||||||
'shared/gr-js-api-interface/gr-change-reply-js-api_test.html',
|
'shared/gr-js-api-interface/gr-change-reply-js-api_test.html',
|
||||||
'shared/gr-js-api-interface/gr-js-api-interface_test.html',
|
'shared/gr-js-api-interface/gr-js-api-interface_test.html',
|
||||||
|
'shared/gr-js-api-interface/gr-plugin-rest-api_test.html',
|
||||||
'shared/gr-limited-text/gr-limited-text_test.html',
|
'shared/gr-limited-text/gr-limited-text_test.html',
|
||||||
'shared/gr-linked-chip/gr-linked-chip_test.html',
|
'shared/gr-linked-chip/gr-linked-chip_test.html',
|
||||||
'shared/gr-linked-text/gr-linked-text_test.html',
|
'shared/gr-linked-text/gr-linked-text_test.html',
|
||||||
|
|||||||
Reference in New Issue
Block a user