diff options
Diffstat (limited to 'src/mod_pubsub/mod_pubsub.erl')
-rw-r--r-- | src/mod_pubsub/mod_pubsub.erl | 121 |
1 files changed, 61 insertions, 60 deletions
diff --git a/src/mod_pubsub/mod_pubsub.erl b/src/mod_pubsub/mod_pubsub.erl index f70129de9..56fdb627b 100644 --- a/src/mod_pubsub/mod_pubsub.erl +++ b/src/mod_pubsub/mod_pubsub.erl @@ -33,7 +33,7 @@ %%% This module uses version 1.10 of the specification as a base. %%% Most of the specification is implemented. %%% Code is derivated from the original pubsub v1.7, functions concerning config may be rewritten. -%%% Code also inspired from the original PEP patch by Magnus Henoch <mange@freemail.hu> +%%% Code also inspired from the original PEP patch by Magnus Henoch (mangeATfreemail.hu) %%% TODO %%% plugin: generate Reply (do not use broadcast atom anymore) @@ -190,7 +190,7 @@ init([ServerHost, Opts]) -> nodetree = NodeTree, plugins = Plugins}}. -%% @spec (Host, Opts) -> Plugins +%% @spec (Host, ServerHost, Opts) -> Plugins %% Host = mod_pubsub:host() Opts = [{Key,Value}] %% ServerHost = host() %% Key = atom() @@ -1121,19 +1121,19 @@ handle_authorization_response(Host, From, To, Packet, XFields) -> %% @doc <p>Create new pubsub nodes</p> %%<p>In addition to method-specific error conditions, there are several general reasons why the node creation request might fail:</p> %%<ul> -%%<li>The service does not support node creation. -%%<li>Only entities that are registered with the service are allowed to create nodes but the requesting entity is not registered. -%%<li>The requesting entity does not have sufficient privileges to create nodes. -%%<li>The requested NodeID already exists. -%%<li>The request did not include a NodeID and "instant nodes" are not supported. +%%<li>The service does not support node creation.</li> +%%<li>Only entities that are registered with the service are allowed to create nodes but the requesting entity is not registered.</li> +%%<li>The requesting entity does not have sufficient privileges to create nodes.</li> +%%<li>The requested NodeID already exists.</li> +%%<li>The request did not include a NodeID and "instant nodes" are not supported.</li> %%</ul> %%<p>ote: node creation is a particular case, error return code is evaluated at many places:</p> %%<ul> -%%<li>iq_pubsub checks if service supports node creation (type exists) -%%<li>create_node checks if instant nodes are supported -%%<li>create_node asks node plugin if entity have sufficient privilege -%%<li>nodetree create_node checks if nodeid already exists -%%<li>node plugin create_node just sets default affiliation/subscription +%%<li>iq_pubsub checks if service supports node creation (type exists)</li> +%%<li>create_node checks if instant nodes are supported</li> +%%<li>create_node asks node plugin if entity have sufficient privilege</li> +%%<li>nodetree create_node checks if nodeid already exists</li> +%%<li>node plugin create_node just sets default affiliation/subscription</li> %%</ul> create_node(Host, ServerHost, Node, Owner, Type) -> create_node(Host, ServerHost, Node, Owner, Type, all, []). @@ -1245,9 +1245,9 @@ create_node(Host, ServerHost, Node, Owner, GivenType, Access, Configuration) -> %% @doc <p>Delete specified node and all childs.</p> %%<p>There are several reasons why the node deletion request might fail:</p> %%<ul> -%%<li>The requesting entity does not have sufficient privileges to delete the node. -%%<li>The node is the root collection node, which cannot be deleted. -%%<li>The specified node does not exist. +%%<li>The requesting entity does not have sufficient privileges to delete the node.</li> +%%<li>The node is the root collection node, which cannot be deleted.</li> +%%<li>The specified node does not exist.</li> %%</ul> delete_node(_Host, [], _Owner) -> %% Node is the root @@ -1299,20 +1299,20 @@ delete_nodes(Host, Owner) -> %% Node = pubsubNode() %% From = jid() %% JID = jid() -%% @doc <p>Accepts or rejects subcription requests on a PubSub node.</p> %% @see node_default:subscribe_node/5 +%% @doc <p>Accepts or rejects subcription requests on a PubSub node.</p> %%<p>There are several reasons why the subscription request might fail:</p> %%<ul> -%%<li>The bare JID portions of the JIDs do not match. -%%<li>The node has an access model of "presence" and the requesting entity is not subscribed to the owner's presence. -%%<li>The node has an access model of "roster" and the requesting entity is not in one of the authorized roster groups. -%%<li>The node has an access model of "whitelist" and the requesting entity is not on the whitelist. -%%<li>The service requires payment for subscriptions to the node. -%%<li>The requesting entity is anonymous and the service does not allow anonymous entities to subscribe. -%%<li>The requesting entity has a pending subscription. -%%<li>The requesting entity is blocked from subscribing (e.g., because having an affiliation of outcast). -%%<li>The node does not support subscriptions. -%%<li>The node does not exist. +%%<li>The bare JID portions of the JIDs do not match.</li> +%%<li>The node has an access model of "presence" and the requesting entity is not subscribed to the owner's presence.</li> +%%<li>The node has an access model of "roster" and the requesting entity is not in one of the authorized roster groups.</li> +%%<li>The node has an access model of "whitelist" and the requesting entity is not on the whitelist.</li> +%%<li>The service requires payment for subscriptions to the node.</li> +%%<li>The requesting entity is anonymous and the service does not allow anonymous entities to subscribe.</li> +%%<li>The requesting entity has a pending subscription.</li> +%%<li>The requesting entity is blocked from subscribing (e.g., because having an affiliation of outcast).</li> +%%<li>The node does not support subscriptions.</li> +%%<li>The node does not exist.</li> %%</ul> subscribe_node(Host, Node, From, JID) -> Subscriber = case jlib:string_to_jid(JID) of @@ -1385,7 +1385,7 @@ subscribe_node(Host, Node, From, JID) -> {result, Result} end. -%% @spec (Host, Noce, From, JID) -> {error, Reason} | {result, []} +%% @spec (Host, Noce, From, JID, SubId) -> {error, Reason} | {result, []} %% Host = host() %% Node = pubsubNode() %% From = jid() @@ -1395,12 +1395,12 @@ subscribe_node(Host, Node, From, JID) -> %% @doc <p>Unsubscribe <tt>JID</tt> from the <tt>Node</tt>.</p> %%<p>There are several reasons why the unsubscribe request might fail:</p> %%<ul> -%%<li>The requesting entity has multiple subscriptions to the node but does not specify a subscription ID. -%%<li>The request does not specify an existing subscriber. -%%<li>The requesting entity does not have sufficient privileges to unsubscribe the specified JID. -%%<li>The node does not exist. -%%<li>The request specifies a subscription ID that is not valid or current. -%%</il> +%%<li>The requesting entity has multiple subscriptions to the node but does not specify a subscription ID.</li> +%%<li>The request does not specify an existing subscriber.</li> +%%<li>The requesting entity does not have sufficient privileges to unsubscribe the specified JID.</li> +%%<li>The node does not exist.</li> +%%<li>The request specifies a subscription ID that is not valid or current.</li> +%%</ul> unsubscribe_node(Host, Node, From, JID, SubId) -> Subscriber = case jlib:string_to_jid(JID) of error -> {"", "", ""}; @@ -1423,12 +1423,12 @@ unsubscribe_node(Host, Node, From, JID, SubId) -> %% <p>The permission to publish an item must be verified by the plugin implementation.</p> %%<p>There are several reasons why the publish request might fail:</p> %%<ul> -%%<li>The requesting entity does not have sufficient privileges to publish. -%%<li>The node does not support item publication. -%%<li>The node does not exist. -%%<li>The payload size exceeds a service-defined limit. -%%<li>The item contains more than one payload element or the namespace of the root payload element does not match the configured namespace for the node. -%%<li>The request does not match the node configuration. +%%<li>The requesting entity does not have sufficient privileges to publish.</li> +%%<li>The node does not support item publication.</li> +%%<li>The node does not exist.</li> +%%<li>The payload size exceeds a service-defined limit.</li> +%%<li>The item contains more than one payload element or the namespace of the root payload element does not match the configured namespace for the node.</li> +%%<li>The request does not match the node configuration.</li> %%</ul> publish_item(Host, ServerHost, Node, Publisher, "", Payload) -> %% if publisher does not specify an ItemId, the service MUST generate the ItemId @@ -1524,12 +1524,12 @@ publish_item(Host, ServerHost, Node, Publisher, ItemId, Payload) -> %% <p>The permission to delete an item must be verified by the plugin implementation.</p> %%<p>There are several reasons why the item retraction request might fail:</p> %%<ul> -%%<li>The publisher does not have sufficient privileges to delete the requested item. -%%<li>The node or item does not exist. -%%<li>The request does not specify a node. -%%<li>The request does not include an <item/> element or the <item/> element does not specify an ItemId. -%%<li>The node does not support persistent items. -%%<li>The service does not support the deletion of items. +%%<li>The publisher does not have sufficient privileges to delete the requested item.</li> +%%<li>The node or item does not exist.</li> +%%<li>The request does not specify a node.</li> +%%<li>The request does not include an <item/> element or the <item/> element does not specify an ItemId.</li> +%%<li>The node does not support persistent items.</li> +%%<li>The service does not support the deletion of items.</li> %%</ul> delete_item(Host, Node, Publisher, ItemId) -> delete_item(Host, Node, Publisher, ItemId, false). @@ -1580,10 +1580,10 @@ delete_item(Host, Node, Publisher, ItemId, ForceNotify) -> %% @doc <p>Delete all items of specified node owned by JID.</p> %%<p>There are several reasons why the node purge request might fail:</p> %%<ul> -%%<li>The node or service does not support node purging. -%%<li>The requesting entity does not have sufficient privileges to purge the node. -%%<li>The node is not configured to persist items. -%%<li>The specified node does not exist. +%%<li>The node or service does not support node purging.</li> +%%<li>The requesting entity does not have sufficient privileges to purge the node.</li> +%%<li>The node is not configured to persist items.</li> +%%<li>The specified node does not exist.</li> %%</ul> purge_node(Host, Node, Owner) -> Action = fun(#pubsub_node{type = Type, options = Options}) -> @@ -1670,7 +1670,7 @@ get_items(Host, Node) -> %% @spec (Host, Node, LJID) -> any() %% Host = host() %% Node = pubsubNode() -%% LJID = {U,S,""} +%% LJID = {U, S, []} %% @doc <p>Resend the items of a node to the user.</p> send_all_items(Host, Node, LJID) -> send_items(Host, Node, LJID, all). @@ -1949,7 +1949,8 @@ set_subscriptions(Host, Node, From, EntitiesEls) -> end. -% @spec (OwnerUser, OwnerServer, {SubscriberUser, SubscriberServer, _}, AllowedGroups) +%% @spec (OwnerUser, OwnerServer, {SubscriberUser, SubscriberServer, SubscriberResource}, AllowedGroups) +%% -> {PresenceSubscription, RosterGroup} get_roster_info(OwnerUser, OwnerServer, {SubscriberUser, SubscriberServer, _}, AllowedGroups) -> {Subscription, Groups} = ejabberd_hooks:run_fold( @@ -2022,11 +2023,11 @@ service_jid(Host) -> _ -> {jid, "", Host, "", "", Host, ""} end. -%% @spec (LJID, PresenceDelivery) -> boolean() +%% @spec (LJID, Subscription, PresenceDelivery) -> boolean() %% LJID = jid() %% Subscription = atom() %% PresenceDelivery = boolean() -%% @doc <p>Check if a notification must be delivered or not +%% @doc <p>Check if a notification must be delivered or not.</p> is_to_delivered(_, none, _) -> false; is_to_delivered(_, pending, _) -> false; is_to_delivered(_, _, false) -> true; @@ -2325,8 +2326,8 @@ is_caps_notify(Host, Node, Caps) -> %%<p>There are several reasons why the default node configuration options request might fail:</p> %%<ul> -%%<li>The service does not support node configuration. -%%<li>The service does not support retrieval of default node configuration. +%%<li>The service does not support node configuration.</li> +%%<li>The service does not support retrieval of default node configuration.</li> %%</ul> get_configure(Host, Node, From, Lang) -> Action = @@ -2460,11 +2461,11 @@ get_configure_xfields(_Type, Options, _Owners, Lang) -> %%<p>There are several reasons why the node configuration request might fail:</p> %%<ul> -%%<li>The service does not support node configuration. -%%<li>The requesting entity does not have sufficient privileges to configure the node. -%%<li>The request did not specify a node. -%%<li>The node has no configuration options. -%%<li>The specified node does not exist. +%%<li>The service does not support node configuration.</li> +%%<li>The requesting entity does not have sufficient privileges to configure the node.</li> +%%<li>The request did not specify a node.</li> +%%<li>The node has no configuration options.</li> +%%<li>The specified node does not exist.</li> %%</ul> set_configure(Host, Node, From, Els, Lang) -> case xml:remove_cdata(Els) of |