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        return options;
16    }
17
18    public static Bundle presenceAccess() {
19        final Bundle options = new Bundle();
20        options.putString("pubsub#access_model", "presence");
21        return options;
22    }
23
24    public static Bundle persistentWhitelistAccess() {
25        final Bundle options = new Bundle();
26        options.putString("pubsub#persist_items", "true");
27        options.putString("pubsub#access_model", "whitelist");
28        return options;
29    }
30
31    public static Bundle persistentWhitelistAccessMaxItems() {
32        final Bundle options = new Bundle();
33        options.putString("pubsub#persist_items", "true");
34        options.putString("pubsub#access_model", "whitelist");
35        options.putString("pubsub#send_last_published_item", "never");
36        options.putString("pubsub#max_items", "max");
37        options.putString("pubsub#notify_delete", "true");
38        options.putString(
39                "pubsub#notify_retract", "true"); // one could also set notify=true on the retract
40
41        return options;
42    }
43
44    public static boolean preconditionNotMet(Iq response) {
45        final Element error =
46                response.getType() == Iq.Type.ERROR ? response.findChild("error") : null;
47        return error != null && error.hasChild("precondition-not-met", Namespace.PUBSUB_ERROR);
48    }
49}