mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-26 00:02:06 +01:00
Merge pull request #244 from vanitasvitae/EmeImprovements
Add EME convenience methods
This commit is contained in:
commit
8011ba96bb
1 changed files with 46 additions and 0 deletions
|
@ -17,6 +17,7 @@
|
||||||
package org.jivesoftware.smackx.eme.element;
|
package org.jivesoftware.smackx.eme.element;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
|
@ -145,4 +146,49 @@ public class ExplicitMessageEncryptionElement implements ExtensionElement {
|
||||||
public static ExplicitMessageEncryptionElement from(Message message) {
|
public static ExplicitMessageEncryptionElement from(Message message) {
|
||||||
return message.getExtension(ELEMENT, NAMESPACE);
|
return message.getExtension(ELEMENT, NAMESPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true, if the {@code message} already contains an EME element with the specified {@code protocolNamespace}.
|
||||||
|
*
|
||||||
|
* @param message message
|
||||||
|
* @param protocolNamespace namespace
|
||||||
|
* @return true if message has EME element for that namespace, otherwise false
|
||||||
|
*/
|
||||||
|
public static boolean hasProtocol(Message message, String protocolNamespace) {
|
||||||
|
List<ExplicitMessageEncryptionElement> emeElements = message.getExtension(
|
||||||
|
ExplicitMessageEncryptionElement.ELEMENT,
|
||||||
|
ExplicitMessageEncryptionElement.NAMESPACE);
|
||||||
|
|
||||||
|
for (ExplicitMessageEncryptionElement e : emeElements) {
|
||||||
|
if (e.getEncryptionNamespace().equals(protocolNamespace)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return true, if the {@code message} already contains an EME element with the specified protocol namespace.
|
||||||
|
*
|
||||||
|
* @param message message
|
||||||
|
* @param protocol protocol
|
||||||
|
* @return true if message has EME element for that namespace, otherwise false
|
||||||
|
*/
|
||||||
|
public static boolean hasProtocol(Message message, ExplicitMessageEncryptionProtocol protocol) {
|
||||||
|
return hasProtocol(message, protocol.namespace);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an EME element containing the specified {@code protocol} namespace to the message.
|
||||||
|
* In case there is already an element with that protocol, we do nothing.
|
||||||
|
*
|
||||||
|
* @param message message
|
||||||
|
* @param protocol encryption protocol
|
||||||
|
*/
|
||||||
|
public static void set(Message message, ExplicitMessageEncryptionProtocol protocol) {
|
||||||
|
if (!hasProtocol(message, protocol.namespace)) {
|
||||||
|
message.addExtension(new ExplicitMessageEncryptionElement(protocol));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue