
--- src/wok/API.json | 6 +++ ui/js/src/wok.api.js | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 0 deletions(-) create mode 100644 src/wok/API.json create mode 100644 ui/js/src/wok.api.js diff --git a/src/wok/API.json b/src/wok/API.json new file mode 100644 index 0000000..8965db9 --- /dev/null +++ b/src/wok/API.json @@ -0,0 +1,6 @@ +{ + "$schema": "http://json-schema.org/draft-03/schema#", + "title": "Wok API", + "description": "Json schema for Wok API", + "type": "object" +} diff --git a/ui/js/src/wok.api.js b/ui/js/src/wok.api.js new file mode 100644 index 0000000..93a07ad --- /dev/null +++ b/ui/js/src/wok.api.js @@ -0,0 +1,91 @@ +/* + * Project Kimchi + * + * Copyright IBM, Corp. 2013-2015 + * + * 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. + */ +var wok = { + + widget: {}, + + /** + * A wrapper of jQuery.ajax function to allow custom bindings. + * + * @param settings an extended object to jQuery Ajax settings object + * with some extra properties (see below) + * + * resend: if the XHR has failed due to 401, the XHR can be resent + * after user being authenticated successfully by setting resend + * to true: settings = {resend: true}. It's useful for switching + * pages (Guests, Templates, etc.). + * e.g., the user wants to list guests by clicking Guests tab, + * but he is told not authorized and a login window will pop up. + * After login, the Ajax request for /vms will be resent without + * user clicking the tab again. + * Default to false. + */ + requestJSON : function(settings) { + settings['originalError'] = settings['error']; + settings['error'] = null; + settings['wok'] = true; + return $.ajax(settings); + }, + + /** + * Get the i18 strings. + */ + getI18n: function(suc, err, url, sync) { + wok.requestJSON({ + url : url ? url : 'i18n.json', + type : 'GET', + resend: true, + dataType : 'json', + async : !sync, + success : suc, + error: err + }); + }, + + login : function(settings, suc, err) { + $.ajax({ + url : "login", + type : "POST", + contentType : "application/json", + data : JSON.stringify(settings), + dataType : "json" + }).done(suc).fail(err); + }, + + logout : function(suc, err) { + wok.requestJSON({ + url : 'logout', + type : 'POST', + contentType : "application/json", + dataType : "json" + }).done(suc).fail(err); + }, + + listPlugins : function(suc, err, sync) { + wok.requestJSON({ + url : 'plugins', + type : 'GET', + contentType : 'application/json', + dataType : 'json', + resend: true, + async : !sync, + success : suc, + error : err + }); + }, +}; -- 1.7.1