aboutsummaryrefslogtreecommitdiffstats
path: root/extensions/Connection_Interface_Contact_Blocking.xml
blob: 543d43a5c465e2b8a114c4176bad7ed627566d2b (plain) (blame)
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
<?xml version="1.0" ?>
<node name="/Connection_Interface_Contact_Blocking" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
  <tp:copyright>Copyright © 2009-2010 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.DRAFT"
    tp:causes-havoc="experimental">
    <tp:requires interface="org.freedesktop.Telepathy.Connection"/>

    <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.</p>

      <p>When this interface becomes stable, it will replace the <tp:dbus-ref
          namespace="org.freedesktop.Telepathy.Channel.Type"
          >ContactList</tp:dbus-ref> channel with TargetHandleType
        Handle_Type_List and TargetID 'deny'.</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>

        <p><em>FIXME: do we need to allow this on protocols where it won't
            persist, or where we can't edit the block lists?</em></p>
      </tp:docstring>

      <arg name="Contacts" type="au" direction="in" tp:type="Contact_Handle[]">
        <tp:docstring>Some contacts to block.</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 the capability is not present and this argument is
            true, the error <tp:error-ref>NotCapable</tp:error-ref> SHOULD
            be raised.</p>

          <tp:rationale>
            Some protocol libraries, in their conformance requirements,
            require the ability to report blocked contacts as abusive.
          </tp:rationale>
        </tp:docstring>
      </arg>

      <tp:possible-errors>
        <tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
        <tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
        <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
        <tp:error name="org.freedesktop.Telepathy.Error.NotCapable"/>
      </tp:possible-errors>
    </method>

    <method name="UnblockContacts" tp:name-for-bindings="Unblock_Contacts">
      <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
        <p>Reverse the effects of a previous call to
          <tp:member-ref>BlockContacts</tp:member-ref>.</p>
      </tp:docstring>

      <arg name="Contacts" type="au" direction="in" tp:type="Contact_Handle[]">
        <tp:docstring>Some contacts to unblock.</tp:docstring>
      </arg>

      <tp:possible-errors>
        <tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
        <tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
        <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
      </tp:possible-errors>
    </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="au" direction="out" tp:type="Contact_Handle[]">
        <tp:docstring>The list of blocked contacts.</tp:docstring>
      </arg>

      <tp:possible-errors>
        <tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
        <tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
        <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
      </tp:possible-errors>
    </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="BlockedContacts" type="au" tp:type="Contact_Handle[]">
        <tp:docstring>Contacts added to the result of
          <tp:member-ref>RequestBlockedContacts</tp:member-ref>.</tp:docstring>
      </arg>

      <arg name="UnblockedContacts" type="au" tp:type="Contact_Handle[]">
        <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>True if the contact would be in the result of
          <tp:member-ref>RequestBlockedContacts</tp:member-ref>;
          False 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 (i.e. whether we can
          report abusive contacts).</p>

        <p><b>Note:</b> there is no capability for supporting blocking itself,
          the presence of this interface indicates that contact blocking 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>
          This protocol is capable of reporting abusive contacts to the server
          administrators.
        </tp:docstring>
      </tp:flag>
    </tp:flags>

  </interface>
</node>
<!-- vim:set sw=2 sts=2 et ft=xml: -->