Mercurial > psgxs
diff errors.js @ 0:9ee956af41e3
Initial commit
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Sun, 27 Jun 2010 22:05:12 +0200 |
parents | |
children | 5fc4ee90c1bc |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/errors.js @@ -0,0 +1,198 @@ +/* + * Copyright (C) 2010 Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> + * + * This file is part of PSĜS, a PubSub server written in JavaScript. + * + * PSĜS is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License. + * + * PSĜS is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with PSĜS. If not, see <http://www.gnu.org/licenses/>. + */ + +var errors = exports; + +errors.success = true; +errors.feature_not_implemented = {n: 1, type: 'cancel', error: 'feature-not-implemented'}; +errors.node_does_not_exist = {n: 2, type: 'cancel', error: 'item-not-found'}; +errors.bad_request = {n: 3, type: 'modify', error: 'bad-request'}; +errors.nodeid_required = {n: 4, type: 'modify', error: 'bad-request', reason: 'nodeid-required'}; +errors.itemid_required = {n: 5, type: 'modify', error: 'bad-request', reason: 'item-required'}, +errors.forbidden = {n: 6, type: 'auth', error: 'forbidden'}; +errors.subscriptions_retrieval_not_supported = {n: 23, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'retrieve-subscriptions'}; +errors.affiliations_retrieval_not_supported = {n: 29, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'retrieve-affiliations'}; + +errors.sub = { + subscribe: { + jids_do_not_match: {n: 34, type: 'modify', error: 'bad-request', reason: 'invalid-jid'}, + presence_subscription_required: {n: 35, type: 'auth', error: 'not-authorized', reason: 'presence-subscription-required'}, + not_in_roster_group: {n: 36, type: 'auth', error: 'not-authorized', reason: 'not-in-roster-group'}, + not_on_whitelist: {n: 37, type: 'cancel', error: 'not-allowed', reason: 'closed-node'}, + payment_required: {n: 38, type: 'auth', error: 'payment-required'}, + anonymous_subscriptions_not_allowed: {n: 39, type: 'cancel', error: 'forbidden'}, + subscription_pending: {n: 40, type: 'auth', error: 'not-authorized', reason: 'pending-subscription'}, + blocked: {n: 41, type: 'auth', error: 'forbidden'}, + too_many_subscriptions: {n: 42, type: 'wait', error: 'policy-violation', reason: 'too-many-subscriptions'}, + not_supported: {n: 43, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'subscribe'}, + node_has_moved: {n: 44, type: 'modify', error: 'gone', text: true}, + node_does_not_exist: {n: 45, type: 'cancel', error: 'item-not-found'}, + configuration_required: {n: 48, type: 'modify', error: 'not-acceptable', reason: 'configuration-required'}, + }, + unsubscribe: { + no_subscription_id: {n: 53, type: 'modify', error: 'bad-request', reason: 'subid-required'}, + no_such_subscriber: {n: 54, type: 'cancel', error: 'unexpected-request', reason: 'not-subscribed'}, + insufficient_privileges: {n: 55, type: 'auth', error: 'forbidden'}, + node_does_not_exist: {n: 56, type: 'cancel', error: 'item-not-found'}, + bad_subscription_id: {n: 57, type: 'modify', error: 'not-acceptable', reason: 'invalid-subid'}, + }, + configure: { + insufficient_privileges: {n: 61, type: 'auth', error: 'forbidden'}, + no_such_subscriber: {n: 62, type: 'modify', error: 'unexpected-request', reason: 'not-subscribed'}, + subscriber_jid_required: {n: 63, type: 'modify', error: 'bad-request', reason: 'jid-required'}, + subscription_id_required: {n: 64, type: 'modify', error: 'bad-request', reason: 'subid-required'}, + invalid_subscription_id: {n: 65, type: 'modify', error: 'not-acceptable', reason: 'invalid-subid'}, + subscription_options_not_supported: {n: 66, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'subscription-options'}, + node_does_not_exist: {n: 67, type: 'cancel', error: 'item-not-found'}, + form_processing_failure: {n: 70, type: 'modify', error: 'bad-request', reason: 'invalid-options'}, + }, + default_options: { + node_configuration_not_supported: {n: 76, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'subscription-options'}, + default_subscription_configuration_retrieval_not_supported: {n: 77, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'retrieve-default-sub'}, + }, + retrieve: { + subscription_id_required: {n: 87, type: 'modify', error: 'bad-request', reason: 'subid-required'}, + invalid_subscription_id: {n: 88, type: 'modify', error: 'not-acceptable', reason: 'invalid-subid xmlns'}, + entity_not_subscribed: {n: 89, type: 'auth', error: 'not-authorized', reason: 'not-subscribed'}, + persistent_items_not_supported: {n: 90, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'persistent-items'}, + item_retrieval_not_supported: {n: 91, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'retrieve-items'}, + presence_subscription_required: {n: 92, type: 'auth', error: 'not-authorized', reason: 'presence-subscription-required'}, + not_in_roster_group: {n: 93, type: 'auth', error: 'not-authorized', reason: 'not-in-roster-group'}, + not_on_whitelist: {n: 94, type: 'cancel', error: 'not-allowed', reason: 'closed-node'}, + payment_required: {n: 95, type: 'auth', error: 'payment-required'}, + blocked: {n: 96, type: 'auth', error: 'forbidden'}, + node_does_not_exist: {n: 97, type: 'cancel', error: 'item-not-found'}, + }, +}; + +errors.pub = { + publish: { + insufficient_privileges: {n: 105, type: 'auth', error: 'forbidden'}, + item_publication_not_supported: {n: 106, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'publish'}, + node_does_not_exist: {n: 107, type: 'cancel', error: 'item-not-found'}, + payload_too_big: {n: 108, type: 'modify', error: 'not-acceptable', reason: 'payload-too-big'}, + bad_payload: {n: 109, type: 'modify', error: 'bad-request', reason: 'invalid-payload'}, + }, + configuration: { + no_item: {n: 110, type: 'modify', error: 'bad-request', reason: 'item-required'}, + no_payload: {n: 111, type: 'modify', error: 'bad-request', reason: 'payload-required'}, + transient_item: {n: 112, type: 'modify', error: 'bad-request', reason: 'item-forbidden'}, + precondition: {n: 113, type: 'modify', error: 'conflict', reason: 'precondition-not-met'}, + + }, + retract: { + insufficient_privileges: {n: 118, type: 'auth', error: 'forbidden'}, + node_does_not_exist: {n: 119, type: 'cancel', error: 'item-not-found'}, + nodeid_required: {n: 120, type: 'modify', error: 'bad-request', reason: 'nodeid-required'}, + item_or_itemid_required: {n: 121, type: 'modify', error: 'bad-request', reason: 'item-required'}, + persistent_items_not_supported: {n: 122, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'persistent-items'}, + item_deletion_not_supported: {n: 123, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'delete-items'}, + }, +}; + +errors.owner = { + create: { + node_creation_not_supported: {n: 125, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'create-nodes'}, + service_requires_registration: {n: 126, type: 'auth', error: 'registration-required'}, + prohibited: {n: 127, type: 'auth', error: 'forbidden'}, + nodeid_already_exists: {n: 128, type: 'cancel', error: 'conflict'}, + instant_nodes_not_supported: {n: 129, type: 'modify', error: 'not-acceptable', reason: 'nodeid-required'}, + specified_access_model_not_supported: {n: 135, type: 'modify', error: 'not-acceptable', reason: 'unsupported-access-model'}, + }, + configure: { + node_configuration_not_supported: {n: 140, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'config-node'}, + insufficient_privileges: {n: 141, type: 'auth', error: 'forbidden'}, + nodeid_required: {n: 142, type: 'modify', error: 'bad-request', reason: 'nodeid-required'}, + no_configuration_options: {n: 143, type: 'cancel', error: 'not-allowed'}, + node_does_not_exist: {n: 144, type: 'cancel', error: 'item-not-found'}, + form_processing_failure: {n: 148, type: 'modify', error: 'not-acceptable'}, + }, + default_options: { + node_configuration_not_supported: {n: 153, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'config-node'}, + default_node_configuration_retrieval_not_supported: {n: 154, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'retrieve-default'}, + }, + delete_node: { + insufficient_privileges: {n: 159, type: 'auth', error: 'forbidden'}, + node_does_not_exist: {n: 160, type: 'cancel', error: 'item-not-found'}, + }, + purge: { + node_purging_not_supported: {n: 164, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'purge-nodes'}, + insufficient_privileges: {n: 165, type: 'auth', error: 'forbidden'}, + node_does_not_persist_items: {n: 166, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'persistent-items'}, + node_does_not_exist: {n: 167, type: 'cancel', error: 'item-not-found'}, + }, + //manage_subscription_requests: {}, + pending_subscription_requests: { + ad_hoc_commands_not_supported: {n: 176, type: 'cancel', error: 'service-unavailable'}, + get_pending_not_supported: {n: 177, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'get-pending'}, + insufficient_privileges: {n: 178, type: 'auth', error: 'forbidden'}, + node_does_not_exist: {n: 179, type: 'cancel', error: 'item-not-found'}, + }, + manage_subscriptions: { + not_supported: {n: 184, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'manage-subscriptions'}, + retrieve_list: { + entity_is_not_an_owner: {n: 185, type: 'auth', error: 'forbidden'}, + node_does_not_exist: {n: 186, type: 'cancel', error: 'item-not-found'}, + }, + modify: { + entity_is_not_an_owner: {n: 190, type: 'auth', error: 'forbidden'}, + node_does_not_exist: {n: 191, type: 'cancel', error: 'item-not-found'}, + multiple_simultaneous_modifications: {n: 193, type: 'modify', error: 'not-acceptable'}, + }, + }, + manage_affiliations: { + not_supported: {n: 197, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'modify-affiliations'}, + retrieve_list: { + entity_is_not_an_owner: {n: 198, type: 'auth', error: 'forbidden'}, + node_does_not_exist: {n: 199, type: 'cancel', error: 'item-not-found'}, + }, + modify: { + requested_affiliation_not_supported: { + publisher: {n: 203, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'publisher-affiliation'}, + 'publish-only': {n: 203, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'publish-only-affiliation'}, + member: {n: 203, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'member-affiliation'}, + outcast: {n: 203, type: 'cancel', error: 'feature-not-implemented', reason: 'unsupported', feature: 'outcast-affiliation'}, + }, + entity_is_not_an_owner: {n: 204, type: 'auth', error: 'forbidden'}, + node_does_not_exist: {n: 205, type: 'cancel', error: 'item-not-found'}, + multiple_simultaneous_modifications: {n: 207, type: 'modify', error: 'not-acceptable'}, + }, + }, +}; + +errors.reverse = {}; + +function reverseError(o) { + for (var i in o) { + if (i == 'reverse' || typeof (o[i]) == 'number'); + else if (!o[i].n) + reverseError(o[i]); + else { + var k = {}; + //var k = {name: i}; + for (var j in o[i]) { + if (j != 'n') + k[j] = o[i][j]; + } + errors.reverse[o[i].n] = k; + } + } +} + +reverseError(errors);