ExpansionUtils.smali
.class public Lio/rong/common/ExpansionUtils;
.super Ljava/lang/Object;
.source "ExpansionUtils.java"
# static fields
.field private static final EXPANSION_SINGLE_MAX_COUNT:I = 0x14
.field private static final TAG:Ljava/lang/String; = "ExpansionUtils"
# direct methods
.method public constructor <init>()V
.registers 1
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static filterSendMessage(Lio/rong/imlib/model/Message;)Lio/rong/imlib/RongIMClient$ErrorCode;
.registers 5
.line 1
invoke-virtual {p0}, Lio/rong/imlib/model/Message;->getExpansion()Ljava/util/Map;
move-result-object v0
.line 2
invoke-virtual {p0}, Lio/rong/imlib/model/Message;->isCanIncludeExpansion()Z
move-result v1
const-string v2, "ExpansionUtils"
if-eqz v1, :cond_47
.line 3
invoke-virtual {p0}, Lio/rong/imlib/model/Message;->getConversationType()Lio/rong/imlib/model/Conversation$ConversationType;
move-result-object v1
sget-object v3, Lio/rong/imlib/model/Conversation$ConversationType;->PRIVATE:Lio/rong/imlib/model/Conversation$ConversationType;
if-eq v1, v3, :cond_24
.line 4
invoke-virtual {p0}, Lio/rong/imlib/model/Message;->getConversationType()Lio/rong/imlib/model/Conversation$ConversationType;
move-result-object p0
sget-object v1, Lio/rong/imlib/model/Conversation$ConversationType;->GROUP:Lio/rong/imlib/model/Conversation$ConversationType;
if-eq p0, v1, :cond_24
const-string p0, "filterSendMessage : only private or group support expansion!"
.line 5
invoke-static {v2, p0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 6
sget-object p0, Lio/rong/imlib/RongIMClient$ErrorCode;->RC_MESSAGE_CANT_EXPAND:Lio/rong/imlib/RongIMClient$ErrorCode;
return-object p0
.line 7
:cond_24
invoke-static {v0}, Lio/rong/common/ExpansionUtils;->judgeKVExceedLimit(Ljava/util/Map;)Z
move-result p0
if-nez p0, :cond_3f
invoke-static {v0}, Lio/rong/common/ExpansionUtils;->judgeExpansionExceedLimitSingleMsg(Ljava/util/Map;)Z
move-result p0
if-eqz p0, :cond_31
goto :goto_3f
.line 8
:cond_31
invoke-static {v0}, Lio/rong/common/ExpansionUtils;->judgeKVIllegality(Ljava/util/Map;)Z
move-result p0
if-eqz p0, :cond_57
const-string p0, "filterSendMessage : key contains illegal characters!"
.line 9
invoke-static {v2, p0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 10
sget-object p0, Lio/rong/imlib/RongIMClient$ErrorCode;->PARAMETER_ERROR:Lio/rong/imlib/RongIMClient$ErrorCode;
return-object p0
:cond_3f
:goto_3f
const-string p0, "filterSendMessage : key exceeds 32 bytes or value exceeds 64 bytes !"
.line 11
invoke-static {v2, p0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 12
sget-object p0, Lio/rong/imlib/RongIMClient$ErrorCode;->RC_MSG_EXPANSION_SIZE_LIMIT_EXCEED:Lio/rong/imlib/RongIMClient$ErrorCode;
return-object p0
:cond_47
if-eqz v0, :cond_57
.line 13
invoke-interface {v0}, Ljava/util/Map;->size()I
move-result p0
if-lez p0, :cond_57
const-string p0, "filterSendMessage : isCanIncludeExpansion is false, but expansion is not null!"
.line 14
invoke-static {v2, p0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
.line 15
sget-object p0, Lio/rong/imlib/RongIMClient$ErrorCode;->RC_MESSAGE_CANT_EXPAND:Lio/rong/imlib/RongIMClient$ErrorCode;
return-object p0
:cond_57
const/4 p0, 0x0
return-object p0
.end method
.method private static judgeExpansionExceedLimitSingleMsg(Ljava/util/Map;)Z
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;)Z"
}
.end annotation
const/4 v0, 0x0
if-nez p0, :cond_4
return v0
.line 1
:cond_4
invoke-interface {p0}, Ljava/util/Map;->size()I
move-result p0
const/16 v1, 0x14
if-le p0, v1, :cond_e
const/4 p0, 0x1
return p0
:cond_e
return v0
.end method
.method public static judgeKVExceedLimit(Ljava/util/Map;)Z
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;)Z"
}
.end annotation
const/4 v0, 0x0
if-nez p0, :cond_4
return v0
.line 1
:cond_4
invoke-interface {p0}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object p0
.line 2
invoke-interface {p0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object p0
:cond_c
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_49
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/util/Map$Entry;
.line 3
invoke-interface {v1}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/String;
.line 4
invoke-interface {v1}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
.line 5
invoke-static {v2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v3
if-nez v3, :cond_32
invoke-virtual {v2}, Ljava/lang/String;->length()I
move-result v2
const/16 v3, 0x20
if-gt v2, v3, :cond_40
:cond_32
invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v2
if-nez v2, :cond_c
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v1
const/16 v2, 0x40
if-le v1, v2, :cond_c
:cond_40
const-string p0, "ExpansionUtils"
const-string v0, "key exceeds 32 bytes or value exceeds 64 bytes !"
.line 6
invoke-static {p0, v0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
const/4 p0, 0x1
return p0
:cond_49
return v0
.end method
.method public static judgeKVIllegality(Ljava/util/Map;)Z
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/String;",
">;)Z"
}
.end annotation
const/4 v0, 0x0
if-nez p0, :cond_4
return v0
.line 1
:cond_4
invoke-interface {p0}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object p0
.line 2
invoke-interface {p0}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object p0
:cond_c
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_2f
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/util/Map$Entry;
.line 3
invoke-interface {v1}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
const-string v2, "^[A-Za-z0-9+_=-]+$"
.line 4
invoke-virtual {v1, v2}, Ljava/lang/String;->matches(Ljava/lang/String;)Z
move-result v1
if-nez v1, :cond_c
const-string p0, "ExpansionUtils"
const-string v0, "key contains illegal characters!"
.line 5
invoke-static {p0, v0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
const/4 p0, 0x1
return p0
:cond_2f
return v0
.end method