1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
|
<?xml version="1.0" ?>
<node name="/Connection_Interface_Contact_Blocking" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
<tp:copyright>Copyright © 2009–2011 Collabora Ltd.</tp:copyright>
<tp:copyright>Copyright © 2009 Nokia Corporation</tp:copyright>
<tp:license xmlns="http://www.w3.org/1999/xhtml">
<p>This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.</p>
<p>This library 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
Lesser General Public License for more details.</p>
<p>You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.</p>
</tp:license>
<interface name="org.freedesktop.Telepathy.Connection.Interface.ContactBlocking">
<tp:requires interface="org.freedesktop.Telepathy.Connection"/>
<tp:requires interface="org.freedesktop.Telepathy.Connection.Interface.ContactList"/>
<tp:added version='0.21.13'>Changes from the draft:
methods and signals now return <tp:type>Handle_Identifier_Map</tp:type>
(<code>a{us}</code>) rather than bare lists of contact handles
(<code>au</code>)</tp:added>
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>An interface for connections where contacts can be blocked from
communicating with this user and receiving this user's presence.
Clients may retrieve a list of currently-blocked contacts using
<tp:member-ref>RequestBlockedContacts</tp:member-ref>, and listen for
<tp:member-ref>BlockedContactsChanged</tp:member-ref> to be notified
when contacts are blocked and unblocked. The
<tp:member-ref>BlockContacts</tp:member-ref> and
<tp:member-ref>UnblockContacts</tp:member-ref> methods do what they say
on the tin; depending on the value of the
<tp:member-ref>ContactBlockingCapabilities</tp:member-ref> property,
contacts may be reported for spam or other abuse when calling
<tp:member-ref>BlockContacts</tp:member-ref>.</p>
<p>This interface is intended for protocols where blocking contacts
persists on the server between connections; connection managers for
protocols with no server-side support for blocking contacts MAY choose
to implement this interface using an on-disk file of blocked
contacts or some other means to store blocked contacts between
connections.</p>
<p>This interface is intended to replace the
<tp:dbus-ref namespace="ofdT.Channel.Type">ContactList</tp:dbus-ref>
channel with <tp:dbus-ref
namespace='ofdT.Channel'>TargetHandleType</tp:dbus-ref>
<code>List</code> and <tp:dbus-ref
namespace='ofdT.Channel'>TargetID</tp:dbus-ref> <code>"deny"</code>
(along with the <tp:dbus-ref
namespace='ofdT.Connection.Interface'>ContactList</tp:dbus-ref> and
<tp:dbus-ref
namespace='ofdT.Connection.Interface'>ContactGroups</tp:dbus-ref>
interfaces replacing other channels with <tp:dbus-ref
namespace='ofdT.Channel'>TargetHandleType</tp:dbus-ref>
<code>List</code> and <tp:dbus-ref
namespace='ofdT.Channel'>TargetHandleType</tp:dbus-ref>
<code>Group</code>, respectively).</p>
</tp:docstring>
<method name="BlockContacts" tp:name-for-bindings="Block_Contacts">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>Direct the server to block some contacts. The precise effect is
protocol-dependent, but SHOULD include ignoring all current and
subsequent communications from the given contacts, avoiding sending
presence to them in future, and if they were already receiving the
local user's presence, behaving as if the local user went
offline.</p>
</tp:docstring>
<arg name="Contacts" type="au" direction="in" tp:type="Contact_Handle[]">
<tp:docstring>Some contacts to block. If some of the contacts in this
list are already blocked, the connection manager MUST act as if they
were not specified in this list.</tp:docstring>
</arg>
<arg name="Report_Abusive" type="b" direction="in">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>In addition to blocking, report these contacts as abusive to the
server administrators.</p>
<p>Clients can determine whether this capability is available by
checking the
<tp:member-ref>ContactBlockingCapabilities</tp:member-ref>
property. If this argument is set to <code>True</code> by a client
despite <tp:member-ref>ContactBlockingCapabilities</tp:member-ref>
not containing the <code>Can_Report_Abusive</code> flag, the
connection manager SHOULD act as if it were <code>False</code> and
simply block the supplied contacts.</p>
<tp:rationale>
<p>A correct user interface shouldn't get this far without knowing
that reporting abusive contacts is not supported. If it does,
then the user has expressed their intention to block these
contacts. Returning an error would leave the UI with three
options:</p>
<ul>
<li>Ignore the error, leaving the contacts not actually blocked;</li>
<li>Display an error to the user;</li>
<li>Call this method again, passing <code>False</code> for this
argument.</li>
</ul>
<p>None of these seem preferable to the CM just ignoring this flag
if it doesn't support it: that way, the contacts will be blocked,
as the user requested, and UIs have fewer ways to mess up
entirely.</p>
</tp:rationale>
</tp:docstring>
</arg>
</method>
<method name="UnblockContacts" tp:name-for-bindings="Unblock_Contacts">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>Direct the server to unblock some contacts.</p>
</tp:docstring>
<arg name="Contacts" type="au" direction="in" tp:type="Contact_Handle[]">
<tp:docstring>Some contacts to unblock. If some of the contacts in this
list are not currently blocked, the connection manager MUST act as if
they were not specified in this list.</tp:docstring>
</arg>
</method>
<method name="RequestBlockedContacts"
tp:name-for-bindings="Request_Blocked_Contacts">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>List the contacts that are blocked.</p>
<p>Clients SHOULD allow a relatively long timeout for calls to this
method, since on some protocols contact blocking is part of the
contact list, which can take a significant time to retrieve.</p>
</tp:docstring>
<arg name="Contacts" type="a{us}" direction="out"
tp:type="Handle_Identifier_Map">
<tp:docstring>The blocked contacts’ handles, together with their
identifiers.</tp:docstring>
</arg>
</method>
<signal name="BlockedContactsChanged"
tp:name-for-bindings="Blocked_Contacts_Changed">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>Emitted when the list of blocked contacts is first retrieved
(before returning from any pending calls to
<tp:member-ref>RequestBlockedContacts</tp:member-ref>), and
whenever the list of blocked contacts subsequently changes.</p>
</tp:docstring>
<arg name="Blocked_Contacts" type="a{us}" tp:type="Handle_Identifier_Map">
<tp:docstring>Contacts added to the result of
<tp:member-ref>RequestBlockedContacts</tp:member-ref>.</tp:docstring>
</arg>
<arg name="Unblocked_Contacts" type="a{us}"
tp:type="Handle_Identifier_Map">
<tp:docstring>Contacts removed from the result of
<tp:member-ref>RequestBlockedContacts</tp:member-ref>.</tp:docstring>
</arg>
</signal>
<tp:contact-attribute name="blocked" type="b">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p><code>True</code> if the contact would be in the result of
<tp:member-ref>RequestBlockedContacts</tp:member-ref>;
<code>False</code> or omitted if the contact is not blocked, or if it
is unknown whether the contact is blocked.</p>
</tp:docstring>
</tp:contact-attribute>
<property name="ContactBlockingCapabilities"
tp:name-for-bindings="Contact_Blocking_Capabilities"
tp:type="Contact_Blocking_Capabilities" type="u" access="read"
tp:immutable="yes">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>Additional capabilities for contact blocking; currently, this is
limited to whether contacts may be reported as abusive.</p>
<p>Note that there is no capability for supporting blocking itself:
the presence of this interface on a <tp:dbus-ref
namespace='ofdT'>Connection</tp:dbus-ref> indicates that blocking
contacts is supported.</p>
</tp:docstring>
</property>
<tp:flags name="Contact_Blocking_Capabilities" type="u"
value-prefix="Contact_Blocking_Capability">
<tp:flag suffix="Can_Report_Abusive" value="1">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
When calling <tp:member-ref>BlockContacts</tp:member-ref>, the
contacts may be reporting as abusive to the server administrators by
setting <var>Report_Abusive</var> to <code>True</code>.
</tp:docstring>
</tp:flag>
</tp:flags>
</interface>
</node>
<!-- vim:set sw=2 sts=2 et ft=xml: -->
|