PublishOptions.java

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