PublishOptions.java

 1package eu.siacs.conversations.xmpp.pep;
 2
 3import android.os.Bundle;
 4
 5import eu.siacs.conversations.xml.Element;
 6import eu.siacs.conversations.xml.Namespace;
 7import eu.siacs.conversations.xmpp.stanzas.IqPacket;
 8
 9public class PublishOptions {
10
11    private PublishOptions() {
12
13    }
14
15    public static Bundle openAccess() {
16        final Bundle options = new Bundle();
17        options.putString("pubsub#access_model", "open");
18        return options;
19    }
20
21    public static Bundle persistentWhitelistAccess() {
22        final Bundle options = new Bundle();
23        options.putString("pubsub#persist_items", "true");
24        options.putString("pubsub#access_model", "whitelist");
25        return options;
26    }
27
28    public static Bundle persistentWhitelistAccessMaxItems() {
29        final Bundle options = new Bundle();
30        options.putString("pubsub#persist_items", "true");
31        options.putString("pubsub#access_model", "whitelist");
32        options.putString("pubsub#send_last_published_item", "never");
33        options.putString("pubsub#max_items", "max");
34
35        options.putString("pubsub#notify_delete", "true");
36        options.putString("pubsub#notify_retract", "true"); //one could also set notify=true on the retract
37
38        return options;
39    }
40
41    public static boolean preconditionNotMet(IqPacket response) {
42        final Element error = response.getType() == IqPacket.TYPE.ERROR ? response.findChild("error") : null;
43        return error != null && error.hasChild("precondition-not-met", Namespace.PUBSUB_ERROR);
44    }
45
46}