From f7a4c53e60388429073a61b275f8a559970afc95 Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Tue, 2 Nov 2010 20:10:21 -0500 Subject: [PATCH 1/2] HBAC test data --- install/static/test/data/hbac_add.json | 27 +++++++ install/static/test/data/hbac_add_host.json | 56 ++++++++++++++ .../static/test/data/hbac_add_service.json | 56 ++++++++++++++ .../static/test/data/hbac_add_sourcehost.json | 56 ++++++++++++++ install/static/test/data/hbac_add_user.json | 56 ++++++++++++++ install/static/test/data/hbac_del.json | 9 +++ install/static/test/data/hbac_find.json | 24 +++++- install/static/test/data/hbac_mod.json | 12 +++ .../static/test/data/hbac_remove_host.json | 50 +++++++++++++ .../static/test/data/hbac_remove_service.json | 49 ++++++++++++ .../test/data/hbac_remove_sourcehost.json | 50 +++++++++++++ .../static/test/data/hbac_remove_user.json | 48 ++++++++++++ install/static/test/data/hbac_show.json | 66 ++++++++++------- install/static/test/data/hbacsvc_find.json | 74 +++++++++++++++++++ .../static/test/data/hbacsvcgroup_find.json | 24 ++++++ 15 files changed, 628 insertions(+), 29 deletions(-) create mode 100644 install/static/test/data/hbac_add.json create mode 100644 install/static/test/data/hbac_add_host.json create mode 100644 install/static/test/data/hbac_add_service.json create mode 100644 install/static/test/data/hbac_add_sourcehost.json create mode 100644 install/static/test/data/hbac_add_user.json create mode 100644 install/static/test/data/hbac_del.json create mode 100644 install/static/test/data/hbac_mod.json create mode 100644 install/static/test/data/hbac_remove_host.json create mode 100644 install/static/test/data/hbac_remove_service.json create mode 100644 install/static/test/data/hbac_remove_sourcehost.json create mode 100644 install/static/test/data/hbac_remove_user.json create mode 100644 install/static/test/data/hbacsvc_find.json create mode 100644 install/static/test/data/hbacsvcgroup_find.json diff --git a/install/static/test/data/hbac_add.json b/install/static/test/data/hbac_add.json new file mode 100644 index 000000000..2a5d251bf --- /dev/null +++ b/install/static/test/data/hbac_add.json @@ -0,0 +1,27 @@ +{ + "error": null, + "id": 0, + "result": { + "result": { + "accessruletype": [ + "allow" + ], + "cn": [ + "test" + ], + "dn": "ipauniqueid=f3e69e82-e3b411df-bfde9b13-2b28c216,cn=hbac,dc=dev,dc=example,dc=com", + "ipaenabledflag": [ + "TRUE" + ], + "ipauniqueid": [ + "f3e69e82-e3b411df-bfde9b13-2b28c216" + ], + "objectclass": [ + "ipaassociation", + "ipahbacrule" + ] + }, + "summary": null, + "value": "test" + } +} \ No newline at end of file diff --git a/install/static/test/data/hbac_add_host.json b/install/static/test/data/hbac_add_host.json new file mode 100644 index 000000000..038d6aea4 --- /dev/null +++ b/install/static/test/data/hbac_add_host.json @@ -0,0 +1,56 @@ +{ + "error": null, + "id": 0, + "result": { + "completed": 2, + "failed": { + "memberhost": { + "host": [], + "hostgroup": [] + } + }, + "result": { + "accessruletype": [ + "allow" + ], + "accesstime": [ + "periodic daily 0800-1400", + "absolute 201012161032 ~ 201012161033" + ], + "cn": [ + "test" + ], + "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com", + "ipaenabledflag": [ + "TRUE" + ], + "memberhost_host": [ + "dev.example.com" + ], + "memberhost_hostgroup": [ + "production" + ], + "memberservice_hbacsvc": [ + "ftp", + "sshd" + ], + "memberservice_hbacsvcgroup": [ + "sudo" + ], + "memberuser_group": [ + "admins", + "editors" + ], + "memberuser_user": [ + "admin", + "test" + ], + "sourcehost_host": [ + "dev.example.com" + ], + "sourcehost_hostgroup": [ + "staging" + ] + } + } +} diff --git a/install/static/test/data/hbac_add_service.json b/install/static/test/data/hbac_add_service.json new file mode 100644 index 000000000..c658fe8b5 --- /dev/null +++ b/install/static/test/data/hbac_add_service.json @@ -0,0 +1,56 @@ +{ + "error": null, + "id": 0, + "result": { + "completed": 3, + "failed": { + "memberservice": { + "hbacsvc": [], + "hbacsvcgroup": [] + } + }, + "result": { + "accessruletype": [ + "allow" + ], + "accesstime": [ + "periodic daily 0800-1400", + "absolute 201012161032 ~ 201012161033" + ], + "cn": [ + "test" + ], + "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com", + "ipaenabledflag": [ + "TRUE" + ], + "memberhost_host": [ + "dev.example.com" + ], + "memberhost_hostgroup": [ + "production" + ], + "memberservice_hbacsvc": [ + "ftp", + "sshd" + ], + "memberservice_hbacsvcgroup": [ + "sudo" + ], + "memberuser_group": [ + "admins", + "editors" + ], + "memberuser_user": [ + "admin", + "test" + ], + "sourcehost_host": [ + "dev.example.com" + ], + "sourcehost_hostgroup": [ + "staging" + ] + } + } +} diff --git a/install/static/test/data/hbac_add_sourcehost.json b/install/static/test/data/hbac_add_sourcehost.json new file mode 100644 index 000000000..a657207f5 --- /dev/null +++ b/install/static/test/data/hbac_add_sourcehost.json @@ -0,0 +1,56 @@ +{ + "error": null, + "id": 0, + "result": { + "completed": 2, + "failed": { + "sourcehost": { + "host": [], + "hostgroup": [] + } + }, + "result": { + "accessruletype": [ + "allow" + ], + "accesstime": [ + "periodic daily 0800-1400", + "absolute 201012161032 ~ 201012161033" + ], + "cn": [ + "test" + ], + "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com", + "ipaenabledflag": [ + "TRUE" + ], + "memberhost_host": [ + "dev.example.com" + ], + "memberhost_hostgroup": [ + "production" + ], + "memberservice_hbacsvc": [ + "ftp", + "sshd" + ], + "memberservice_hbacsvcgroup": [ + "sudo" + ], + "memberuser_group": [ + "admins", + "editors" + ], + "memberuser_user": [ + "admin", + "test" + ], + "sourcehost_host": [ + "dev.example.com" + ], + "sourcehost_hostgroup": [ + "staging" + ] + } + } +} diff --git a/install/static/test/data/hbac_add_user.json b/install/static/test/data/hbac_add_user.json new file mode 100644 index 000000000..0c4c976e4 --- /dev/null +++ b/install/static/test/data/hbac_add_user.json @@ -0,0 +1,56 @@ +{ + "error": null, + "id": 0, + "result": { + "completed": 3, + "failed": { + "memberuser": { + "group": [], + "user": [] + } + }, + "result": { + "accessruletype": [ + "allow" + ], + "accesstime": [ + "periodic daily 0800-1400", + "absolute 201012161032 ~ 201012161033" + ], + "cn": [ + "test" + ], + "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com", + "ipaenabledflag": [ + "TRUE" + ], + "memberhost_host": [ + "dev.example.com" + ], + "memberhost_hostgroup": [ + "production" + ], + "memberservice_hbacsvc": [ + "ftp", + "sshd" + ], + "memberservice_hbacsvcgroup": [ + "sudo" + ], + "memberuser_group": [ + "admins", + "editors" + ], + "memberuser_user": [ + "admin", + "test" + ], + "sourcehost_host": [ + "dev.example.com" + ], + "sourcehost_hostgroup": [ + "staging" + ] + } + } +} diff --git a/install/static/test/data/hbac_del.json b/install/static/test/data/hbac_del.json new file mode 100644 index 000000000..2197a12c2 --- /dev/null +++ b/install/static/test/data/hbac_del.json @@ -0,0 +1,9 @@ +{ + "error": null, + "id": 0, + "result": { + "result": true, + "summary": null, + "value": "test" + } +} \ No newline at end of file diff --git a/install/static/test/data/hbac_find.json b/install/static/test/data/hbac_find.json index 1a53d722c..fd95d9f57 100644 --- a/install/static/test/data/hbac_find.json +++ b/install/static/test/data/hbac_find.json @@ -1,8 +1,8 @@ { "error": null, - "id": 6, + "id": 0, "result": { - "count": 1, + "count": 2, "result": [ { "accessruletype": [ @@ -14,7 +14,7 @@ "description": [ "Allow all users to access any host from any host" ], - "dn": "ipauniqueid=c943a8cf-d05b-11df-b68f-525400674dcd,cn=hbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com", + "dn": "ipauniqueid=b7567b5a-e39311df-bfde9b13-2b28c216,cn=hbac,dc=dev,dc=example,dc=com", "hostcategory": [ "all" ], @@ -30,9 +30,25 @@ "usercategory": [ "all" ] + }, + { + "accessruletype": [ + "allow" + ], + "accesstime": [ + "periodic daily 0800-1400", + "absolute 201012161032 ~ 201012161033" + ], + "cn": [ + "test" + ], + "dn": "ipauniqueid=3b6d2a82-e3b511df-bfde9b13-2b28c216,cn=hbac,dc=dev,dc=example,dc=com", + "ipaenabledflag": [ + "TRUE" + ] } ], "summary": null, "truncated": false } -} \ No newline at end of file +} diff --git a/install/static/test/data/hbac_mod.json b/install/static/test/data/hbac_mod.json new file mode 100644 index 000000000..ea090040a --- /dev/null +++ b/install/static/test/data/hbac_mod.json @@ -0,0 +1,12 @@ +{ + "error": { + "code": 4202, + "kw": {}, + "message": "no modifications to be performed", + "name": { + "__base64__": "RW1wdHlNb2RsaXN0" + } + }, + "id": 0, + "result": null +} diff --git a/install/static/test/data/hbac_remove_host.json b/install/static/test/data/hbac_remove_host.json new file mode 100644 index 000000000..02f56ecd6 --- /dev/null +++ b/install/static/test/data/hbac_remove_host.json @@ -0,0 +1,50 @@ +{ + "error": null, + "id": 0, + "result": { + "completed": 2, + "failed": { + "memberhost": { + "host": [], + "hostgroup": [] + } + }, + "result": { + "accessruletype": [ + "allow" + ], + "accesstime": [ + "periodic daily 0800-1400", + "absolute 201012161032 ~ 201012161033" + ], + "cn": [ + "test" + ], + "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com", + "ipaenabledflag": [ + "TRUE" + ], + "memberservice_hbacsvc": [ + "ftp", + "sshd" + ], + "memberservice_hbacsvcgroup": [ + "sudo" + ], + "memberuser_group": [ + "admins", + "editors" + ], + "memberuser_user": [ + "admin", + "test" + ], + "sourcehost_host": [ + "dev.example.com" + ], + "sourcehost_hostgroup": [ + "staging" + ] + } + } +} diff --git a/install/static/test/data/hbac_remove_service.json b/install/static/test/data/hbac_remove_service.json new file mode 100644 index 000000000..f8b6b51a5 --- /dev/null +++ b/install/static/test/data/hbac_remove_service.json @@ -0,0 +1,49 @@ +{ + "error": null, + "id": 0, + "result": { + "completed": 3, + "failed": { + "memberservice": { + "hbacsvc": [], + "hbacsvcgroup": [] + } + }, + "result": { + "accessruletype": [ + "allow" + ], + "accesstime": [ + "periodic daily 0800-1400", + "absolute 201012161032 ~ 201012161033" + ], + "cn": [ + "test" + ], + "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com", + "ipaenabledflag": [ + "TRUE" + ], + "memberhost_host": [ + "dev.example.com" + ], + "memberhost_hostgroup": [ + "production" + ], + "memberuser_group": [ + "admins", + "editors" + ], + "memberuser_user": [ + "admin", + "test" + ], + "sourcehost_host": [ + "dev.example.com" + ], + "sourcehost_hostgroup": [ + "staging" + ] + } + } +} diff --git a/install/static/test/data/hbac_remove_sourcehost.json b/install/static/test/data/hbac_remove_sourcehost.json new file mode 100644 index 000000000..da32f76e0 --- /dev/null +++ b/install/static/test/data/hbac_remove_sourcehost.json @@ -0,0 +1,50 @@ +{ + "error": null, + "id": 0, + "result": { + "completed": 2, + "failed": { + "sourcehost": { + "host": [], + "hostgroup": [] + } + }, + "result": { + "accessruletype": [ + "allow" + ], + "accesstime": [ + "periodic daily 0800-1400", + "absolute 201012161032 ~ 201012161033" + ], + "cn": [ + "test" + ], + "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com", + "ipaenabledflag": [ + "TRUE" + ], + "memberhost_host": [ + "dev.example.com" + ], + "memberhost_hostgroup": [ + "production" + ], + "memberservice_hbacsvc": [ + "ftp", + "sshd" + ], + "memberservice_hbacsvcgroup": [ + "sudo" + ], + "memberuser_group": [ + "admins", + "editors" + ], + "memberuser_user": [ + "admin", + "test" + ] + } + } +} diff --git a/install/static/test/data/hbac_remove_user.json b/install/static/test/data/hbac_remove_user.json new file mode 100644 index 000000000..f25317e83 --- /dev/null +++ b/install/static/test/data/hbac_remove_user.json @@ -0,0 +1,48 @@ +{ + "error": null, + "id": 0, + "result": { + "completed": 3, + "failed": { + "memberuser": { + "group": [], + "user": [] + } + }, + "result": { + "accessruletype": [ + "allow" + ], + "accesstime": [ + "periodic daily 0800-1400", + "absolute 201012161032 ~ 201012161033" + ], + "cn": [ + "test" + ], + "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com", + "ipaenabledflag": [ + "TRUE" + ], + "memberhost_host": [ + "dev.example.com" + ], + "memberhost_hostgroup": [ + "production" + ], + "memberservice_hbacsvc": [ + "ftp", + "sshd" + ], + "memberservice_hbacsvcgroup": [ + "sudo" + ], + "sourcehost_host": [ + "dev.example.com" + ], + "sourcehost_hostgroup": [ + "staging" + ] + } + } +} diff --git a/install/static/test/data/hbac_show.json b/install/static/test/data/hbac_show.json index d856e84d3..183a52182 100644 --- a/install/static/test/data/hbac_show.json +++ b/install/static/test/data/hbac_show.json @@ -1,35 +1,51 @@ { - "error": null, - "id": 6, + "error": null, + "id": 0, "result": { "result": { "accessruletype": [ "allow" - ], + ], + "accesstime": [ + "periodic daily 0800-1400", + "absolute 201012161032 ~ 201012161033" + ], "cn": [ - "allow_all" - ], - "description": [ - "Allow all users to access any host from any host" - ], - "dn": "ipauniqueid=c943a8cf-d05b-11df-b68f-525400674dcd,cn=hbac,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com", - "hostcategory": [ - "all" - ], + "test" + ], + "dn": "ipauniqueid=e8aca082-e64a11df-9864f2e0-e0578392,cn=hbac,dc=dev,dc=example,dc=com", "ipaenabledflag": [ "TRUE" - ], - "servicecategory": [ - "all" - ], - "sourcehostcategory": [ - "all" - ], - "usercategory": [ - "all" + ], + "memberhost_host": [ + "dev.example.com" + ], + "memberhost_hostgroup": [ + "production" + ], + "memberservice_hbacsvc": [ + "ftp", + "sshd" + ], + "memberservice_hbacsvcgroup": [ + "sudo" + ], + "memberuser_group": [ + "admins", + "editors" + ], + "memberuser_user": [ + "admin", + "test" + ], + "sourcehost_host": [ + "dev.example.com" + ], + "sourcehost_hostgroup": [ + "staging" ] - }, - "summary": null, - "value": "allow_all" + }, + "summary": null, + "value": "test" } -} \ No newline at end of file +} diff --git a/install/static/test/data/hbacsvc_find.json b/install/static/test/data/hbacsvc_find.json new file mode 100644 index 000000000..1c4b2f533 --- /dev/null +++ b/install/static/test/data/hbacsvc_find.json @@ -0,0 +1,74 @@ +{ + "error": null, + "id": 0, + "result": { + "count": 7, + "result": [ + { + "cn": [ + "sshd" + ], + "description": [ + "sshd" + ], + "dn": "cn=sshd,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com" + }, + { + "cn": [ + "ftp" + ], + "description": [ + "ftp" + ], + "dn": "cn=ftp,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com" + }, + { + "cn": [ + "su" + ], + "description": [ + "su" + ], + "dn": "cn=su,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com" + }, + { + "cn": [ + "login" + ], + "description": [ + "login" + ], + "dn": "cn=login,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com" + }, + { + "cn": [ + "su-l" + ], + "description": [ + "su with login shell" + ], + "dn": "cn=su-l,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com" + }, + { + "cn": [ + "sudo" + ], + "description": [ + "sudo" + ], + "dn": "cn=sudo,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com" + }, + { + "cn": [ + "sudo-i" + ], + "description": [ + "sudo-i" + ], + "dn": "cn=sudo-i,cn=hbacservices,cn=accounts,dc=dev,dc=example,dc=com" + } + ], + "summary": null, + "truncated": false + } +} diff --git a/install/static/test/data/hbacsvcgroup_find.json b/install/static/test/data/hbacsvcgroup_find.json new file mode 100644 index 000000000..b6a669009 --- /dev/null +++ b/install/static/test/data/hbacsvcgroup_find.json @@ -0,0 +1,24 @@ +{ + "error": null, + "id": 0, + "result": { + "count": 1, + "result": [ + { + "cn": [ + "SUDO" + ], + "description": [ + "Default group of SUDO related services" + ], + "dn": "cn=sudo,cn=hbacservicegroups,cn=accounts,dc=dev,dc=example,dc=com", + "member_hbacsvc": [ + "sudo", + "sudo-i" + ] + } + ], + "summary": "1 group matched", + "truncated": false + } +} From 681ce7e53419130da9631916c7b1e698c7b8ae80 Mon Sep 17 00:00:00 2001 From: Adam Young Date: Mon, 1 Nov 2010 16:32:07 -0400 Subject: [PATCH 2/2] jslint cleanup --- install/static/ipa.js | 158 ++++++++++++++++++++---------------------- 1 file changed, 75 insertions(+), 83 deletions(-) diff --git a/install/static/ipa.js b/install/static/ipa.js index d1558ee7c..18833e677 100644 --- a/install/static/ipa.js +++ b/install/static/ipa.js @@ -18,16 +18,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* IPA JSON-RPC helper */ +/*global $:true, location:true */ + +/*Forward defined due to circular dependency with IPA.*/ +var ipa_cmd; var IPA_DEFAULT_JSON_URL = '/ipa/json'; +var IPA = ( function () { -/* JSON-RPC ID counter */ -var ipa_jsonrpc_id = 0; - -var IPA = function() { - - var that = {}; + var that = { + jsonrpc_id: 0 + }; that.json_url = null; that.use_static_files = false; @@ -53,42 +54,46 @@ var IPA = function() { /* initialize the IPA JSON-RPC helper * arguments: * url - JSON-RPC URL to use (optional) */ - that.init = function(url, use_static_files, on_success, on_error) { - if (url) + that.init = function (url, use_static_files, on_success, on_error) { + if (url) { that.json_url = url; + } - if (use_static_files) + if (use_static_files) { that.use_static_files = use_static_files; + } $.ajaxSetup(that.ajax_options); ipa_cmd('json_metadata', [], {}, - function(data, text_status, xhr) { + function (data, text_status, xhr) { that.metadata = data.result.metadata; that.messages = data.result.messages; - if (on_success) on_success(data, text_status, xhr); + if (on_success) { + on_success(data, text_status, xhr); + } }, on_error ); }; - that.get_entities = function() { + that.get_entities = function () { return that.entities; }; - that.get_entity = function(name) { + that.get_entity = function (name) { return that.entities_by_name[name]; }; - that.add_entity = function(entity) { + that.add_entity = function (entity) { that.entities.push(entity); that.entities_by_name[entity.name] = entity; }; - that.show_page = function(entity_name, facet_name, other_entity) { + that.show_page = function (entity_name, facet_name, other_entity) { - var entity = IPA.get_entity(entity_name); - var facet = entity.get_facet(facet_name); + //var entity = IPA.get_entity(entity_name); + //var facet = entity.get_facet(facet_name); var state = {}; state[entity_name + '-facet'] = facet_name; @@ -97,7 +102,7 @@ var IPA = function() { }; return that; -}(); +}()); /* call an IPA command over JSON-RPC * arguments: @@ -109,6 +114,7 @@ var IPA = function() { * objname - name of an IPA object (optional) */ function ipa_cmd(name, args, options, win_callback, fail_callback, objname) { + function dialog_open(xhr, text_status, error_thrown) { var that = this; @@ -116,11 +122,11 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname) modal: true, width: 400, buttons: { - 'Retry': function() { + 'Retry': function () { IPA.error_dialog.dialog('close'); ipa_cmd(name, args, options, win_callback, fail_callback, objname); }, - 'Cancel': function() { + 'Cancel': function () { IPA.error_dialog.dialog('close'); fail_callback.call(that, xhr, text_status, error_thrown); } @@ -128,31 +134,6 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname) }); } - function success_handler(data, text_status, xhr) { - if (!data) { - var error_thrown = { - title: 'HTTP Error '+xhr.status, - message: data ? xhr.statusText : "No response" - }; - http_error_handler.call(this, xhr, text_status, error_thrown); - - } else if (data.error) { - var error_thrown = { - title: 'IPA Error '+data.error.code, - message: data.error.message - }; - ipa_error_handler.call(this, xhr, text_status, error_thrown); - - } else if (win_callback) { - win_callback.call(this, data, text_status, xhr); - } - } - - function error_handler(xhr, text_status, error_thrown) { - error_thrown.title = 'AJAX Error: '+error_thrown.name; - ajax_error_handler.call(this, xhr, text_status, error_thrown); - } - function ajax_error_handler(xhr, text_status, error_thrown) { IPA.error_dialog.empty(); IPA.error_dialog.attr('title', error_thrown.title); @@ -163,6 +144,12 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname) dialog_open.call(this, xhr, text_status, error_thrown); } + function error_handler(xhr, text_status, error_thrown) { + error_thrown.title = 'AJAX Error: '+error_thrown.name; + ajax_error_handler.call(this, xhr, text_status, error_thrown); + } + + function http_error_handler(xhr, text_status, error_thrown) { IPA.error_dialog.empty(); IPA.error_dialog.attr('title', error_thrown.title); @@ -182,21 +169,44 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname) dialog_open.call(this, xhr, text_status, error_thrown); } - var id = ipa_jsonrpc_id++; + + function success_handler(data, text_status, xhr) { + if (!data) { + var error_thrown = { + title: 'HTTP Error '+xhr.status, + message: data ? xhr.statusText : "No response" + }; + http_error_handler.call(this, xhr, text_status, error_thrown); + + } else if (data.error) { + ipa_error_handler.call(this, xhr, text_status, /* error_thrown */ { + title: 'IPA Error '+data.error.code, + message: data.error.message + }); + + } else if (win_callback) { + win_callback.call(this, data, text_status, xhr); + } + } + + IPA.jsonrpc_id += 1; + var id = IPA.jsonrpc_id; var method_name = name; - if (objname) + if (objname){ method_name = objname + '_' + name; + } var url = IPA.json_url; - if (!url) + if (!url){ url = IPA_DEFAULT_JSON_URL; + } - if (IPA.use_static_files) + if (IPA.use_static_files){ url += '/' + method_name + '.json'; - + } var data = { method: method_name, params: [args, options], @@ -215,43 +225,24 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname) return (id); } -/* parse query string into key:value dict - * arguments: - * qs - query string (optional) */ -function ipa_parse_qs(qs) -{ - var dict = {}; - - if (!qs) - qs = location.hash.substring(1); - qs = qs.replace(/\+/g, ' '); - - var args = qs.split('&'); - for (var i = 0; i < args.length; ++i) { - var parts = args[i].split('=', 2); - var key = decodeURIComponent(parts[0]); - if (parts.length == 2) - dict[key] = decodeURIComponent(parts[1]); - else - dict[key] = key; - } - - return (dict); -} /* helper function used to retrieve information about an attribute */ function ipa_get_param_info(obj_name, attr) { var ipa_obj = IPA.metadata[obj_name]; - if (!ipa_obj) return null; + if (!ipa_obj) { + return null; + } var takes_params = ipa_obj.takes_params; - if (!takes_params) + if (!takes_params) { return (null); - for (var i = 0; i < takes_params.length; ++i) { - if (takes_params[i]['name'] == attr) + } + for (var i = 0; i < takes_params.length; i += 1) { + if (takes_params[i].name === attr){ return (takes_params[i]); + } } return (null); @@ -261,16 +252,17 @@ function ipa_get_param_info(obj_name, attr) function ipa_get_member_attribute(obj_name, member) { var ipa_obj = IPA.metadata[obj_name]; - if (!ipa_obj) return null; - + if (!ipa_obj) { + return null; + } var attribute_members = ipa_obj.attribute_members; for (var a in attribute_members) { var objs = attribute_members[a]; - for (var i = 0; i < objs.length; ++i) { - if (objs[i] == member) + for (var i = 0; i < objs.length; i += 1) { + if (objs[i] === member){ return a; + } } } - return null; }