This commit is contained in:
heavyrain.lee
2019-05-22 08:38:55 +08:00
parent 721abfe3a5
commit 79bd0c3304
98 changed files with 1017 additions and 132 deletions
@@ -8,7 +8,7 @@
package com.xiaoleilu.loServer;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
public class RestResult {
@@ -10,7 +10,6 @@ package com.xiaoleilu.loServer.action;
import com.google.gson.Gson;
import com.xiaoleilu.loServer.RestResult;
import com.xiaoleilu.loServer.action.admin.GetIMTokenAction;
import com.xiaoleilu.loServer.annotation.RequireAuthentication;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
@@ -21,10 +20,9 @@ import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.DBUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
/**
* 请求处理接口<br>
@@ -25,7 +25,7 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import java.util.Base64;
import java.util.concurrent.Executor;
@@ -26,7 +26,7 @@ import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import java.util.Base64;
import java.util.concurrent.Executor;
@@ -16,15 +16,13 @@ import com.xiaoleilu.loServer.annotation.Route;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputAddGroupMember;
import cn.wildfirechat.pojos.InputCreateGroup;
import cn.wildfirechat.pojos.OutputCreateGroupResult;
import io.moquette.persistence.RPCCenter;
import io.moquette.persistence.TargetEntry;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.concurrent.Executor;
@@ -13,11 +13,10 @@ import com.xiaoleilu.loServer.RestResult;
import com.xiaoleilu.loServer.action.Action;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputCreateUser;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import org.apache.commons.codec.digest.DigestUtils;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.RateLimiter;
abstract public class AdminAction extends Action {
@@ -20,7 +20,7 @@ import io.moquette.persistence.TargetEntry;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
@Route("admin/user/status")
@HttpMethod("POST")
@@ -13,12 +13,11 @@ import com.xiaoleilu.loServer.annotation.Route;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputGetUserInfo;
import cn.wildfirechat.pojos.OutputCreateUser;
import io.moquette.persistence.RPCCenter;
import io.moquette.persistence.TargetEntry;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
@Route("/admin/user/onlinestatus")
@HttpMethod("POST")
@@ -21,7 +21,7 @@ import io.moquette.spi.impl.Utils;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
@Route("/admin/chatroom")
@HttpMethod("PUT")
@@ -23,7 +23,7 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.concurrent.Executor;
@@ -20,7 +20,7 @@ import cn.wildfirechat.pojos.OutputCreateRobot;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.UUIDGenerator;
@Route("admin/robot/create")
@@ -20,7 +20,7 @@ import cn.wildfirechat.pojos.OutputCreateUser;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.UUIDGenerator;
@Route("admin/user/create")
@@ -19,7 +19,7 @@ import io.moquette.spi.impl.Utils;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
@Route("/admin/chatroom")
@HttpMethod("DELETE")
@@ -16,14 +16,13 @@ import com.xiaoleilu.loServer.annotation.Route;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputDismissGroupMember;
import cn.wildfirechat.pojos.InputKickoffGroupMember;
import io.moquette.persistence.RPCCenter;
import io.moquette.persistence.TargetEntry;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.concurrent.Executor;
@@ -16,7 +16,6 @@ import com.xiaoleilu.loServer.annotation.Route;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputFriendRequest;
import cn.wildfirechat.pojos.OutputCreateGroupResult;
import io.moquette.persistence.RPCCenter;
import io.moquette.persistence.TargetEntry;
import io.netty.buffer.ByteBuf;
@@ -24,7 +23,7 @@ import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.concurrent.Executor;
@@ -19,7 +19,7 @@ import cn.wildfirechat.pojos.OutputGetChatroomInfo;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
@Route("/admin/chatroom")
@HttpMethod("GET")
@@ -18,7 +18,7 @@ import cn.wildfirechat.pojos.OutputGetIMTokenData;
import io.moquette.persistence.RPCCenter;
import io.moquette.persistence.TargetEntry;
import io.netty.handler.codec.http.FullHttpRequest;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.Base64;
@@ -17,11 +17,10 @@ import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputCreateUser;
import cn.wildfirechat.pojos.InputGetUserInfo;
import cn.wildfirechat.pojos.OutputCreateUser;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
@Route("admin/user/info")
@HttpMethod("POST")
@@ -15,12 +15,11 @@ import com.xiaoleilu.loServer.annotation.Route;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputGetUserInfo;
import cn.wildfirechat.pojos.OutputCreateUser;
import cn.wildfirechat.pojos.OutputUserStatus;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
@Route("admin/user/checkstatus")
@HttpMethod("POST")
@@ -15,7 +15,6 @@ import com.xiaoleilu.loServer.annotation.HttpMethod;
import com.xiaoleilu.loServer.annotation.Route;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputAddGroupMember;
import cn.wildfirechat.pojos.InputKickoffGroupMember;
import io.moquette.persistence.RPCCenter;
import io.moquette.persistence.TargetEntry;
@@ -23,7 +22,7 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.concurrent.Executor;
@@ -23,7 +23,7 @@ import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.concurrent.Executor;
@@ -24,7 +24,7 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.concurrent.Executor;
@@ -15,10 +15,9 @@ import com.xiaoleilu.loServer.annotation.Route;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputOutputSensitiveWords;
import cn.wildfirechat.pojos.InputOutputUserBlockStatus;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
@Route("admin/sensitive/add")
@HttpMethod("POST")
@@ -17,7 +17,7 @@ import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputOutputSensitiveWords;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
@Route("admin/sensitive/del")
@HttpMethod("POST")
@@ -14,7 +14,7 @@ import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputOutputSensitiveWords;
import io.netty.handler.codec.http.FullHttpRequest;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import java.util.List;
@@ -15,7 +15,6 @@ import com.xiaoleilu.loServer.annotation.HttpMethod;
import com.xiaoleilu.loServer.annotation.Route;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputDismissGroupMember;
import cn.wildfirechat.pojos.InputTransferGroup;
import io.moquette.persistence.RPCCenter;
import io.moquette.persistence.TargetEntry;
@@ -23,7 +22,7 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.concurrent.Executor;
@@ -14,14 +14,13 @@ import com.xiaoleilu.loServer.RestResult;
import com.xiaoleilu.loServer.action.Action;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import io.moquette.persistence.RPCCenter;
import io.moquette.spi.impl.Utils;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import org.apache.commons.codec.digest.DigestUtils;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.RateLimiter;
abstract public class ChannelAction extends Action {
@@ -24,7 +24,7 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.concurrent.Executor;
@@ -17,11 +17,10 @@ import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import cn.wildfirechat.pojos.InputCreateUser;
import cn.wildfirechat.pojos.InputGetUserInfo;
import cn.wildfirechat.pojos.OutputCreateUser;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
@Route("admin/robot/user_info")
@HttpMethod("POST")
@@ -14,14 +14,13 @@ import com.xiaoleilu.loServer.RestResult;
import com.xiaoleilu.loServer.action.Action;
import com.xiaoleilu.loServer.handler.Request;
import com.xiaoleilu.loServer.handler.Response;
import io.moquette.persistence.RPCCenter;
import io.moquette.spi.impl.Utils;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.util.internal.StringUtil;
import org.apache.commons.codec.digest.DigestUtils;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.RateLimiter;
import java.io.UnsupportedEncodingException;
@@ -23,7 +23,7 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.HttpResponseStatus;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.concurrent.Executor;
@@ -12,10 +12,10 @@ import cn.wildfirechat.proto.ProtoConstants;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
import static win.liyufan.im.IMTopic.HandleFriendRequestTopic;
@Handler(IMTopic.AddFriendRequestTopic)
@@ -12,10 +12,10 @@ import cn.wildfirechat.proto.WFCMessage;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
@Handler(value = IMTopic.AddGroupMemberTopic)
public class AddGroupMember extends GroupHandler<WFCMessage.AddGroupMemberRequest> {
@@ -11,10 +11,10 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
@Handler(IMTopic.BlackListUserTopic)
public class BlackListRequestHandler extends GroupHandler<WFCMessage.BlackUserRequest> {
@@ -9,10 +9,9 @@
package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.IMTopic.PutUserSettingTopic;
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.List;
@@ -10,10 +10,9 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import com.hazelcast.util.StringUtil;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.IMTopic.PutUserSettingTopic;
@@ -12,7 +12,7 @@ import cn.wildfirechat.proto.WFCMessage;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(value = IMTopic.CreateGroupTopic)
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(IMTopic.DeleteFriendTopic)
@@ -13,7 +13,7 @@ import cn.wildfirechat.proto.WFCMessage;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import static win.liyufan.im.IMTopic.DismissGroupTopic;
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.IMTopic.PutUserSettingTopic;
@@ -12,7 +12,7 @@ import cn.wildfirechat.proto.WFCMessage;
import com.xiaoleilu.loServer.model.FriendData;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.List;
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.List;
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(IMTopic.ChannelPullTopic)
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(IMTopic.GetChatroomInfoTopic)
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(IMTopic.GetChatroomMemberTopic)
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.List;
@@ -11,13 +11,13 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.ArrayList;
import java.util.List;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
@Handler(IMTopic.GetGroupMemberTopic)
public class GetGroupMemberHandler extends IMHandler<WFCMessage.PullGroupMemberRequest> {
@@ -14,7 +14,7 @@ import com.xiaoleilu.loServer.action.UploadFileAction;
import io.moquette.server.config.MediaServerConfig;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(IMTopic.GetQiniuUploadTokenTopic)
@@ -13,7 +13,7 @@ import io.moquette.persistence.MemorySessionStore;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.moquette.spi.impl.security.TokenAuthenticator;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(IMTopic.GetTokenTopic)
@@ -11,10 +11,10 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
@Handler(IMTopic.GetUserInfoTopic)
public class GetUserInfoHandler extends IMHandler<WFCMessage.PullUserRequest> {
@@ -11,10 +11,10 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
@Handler(IMTopic.GetUserSettingTopic)
public class GetUserSettingHandler extends IMHandler<WFCMessage.Version> {
@@ -12,11 +12,11 @@ import cn.wildfirechat.proto.ProtoConstants;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import win.liyufan.im.MessageShardingUtil;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
@Handler(IMTopic.HandleFriendRequestTopic)
public class HandleFriendRequestHandler extends IMHandler<WFCMessage.HandleFriendRequest> {
@@ -23,24 +23,19 @@ import io.netty.buffer.Unpooled;
import io.netty.util.internal.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.RateLimiter;
import win.liyufan.im.Utility;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.Spliterator;
import java.util.concurrent.ScheduledExecutorService;
import java.util.function.Consumer;
import static win.liyufan.im.ErrorCode.ERROR_CODE_OVER_FREQUENCY;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_OVER_FREQUENCY;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
/**
* 请求处理接口<br>
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@@ -13,7 +13,7 @@ import cn.wildfirechat.proto.WFCMessage;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import static win.liyufan.im.IMTopic.KickoffGroupMemberTopic;
@Handler(value = KickoffGroupMemberTopic)
@@ -8,11 +8,10 @@
package io.moquette.imhandler;
import cn.wildfirechat.proto.ProtoConstants;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(value = IMTopic.LoadRemoteMessagesTopic)
@@ -9,10 +9,9 @@
package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import static win.liyufan.im.IMTopic.ModifyChannelInfoTopic;
@@ -12,10 +12,10 @@ import cn.wildfirechat.proto.WFCMessage;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
@Handler(IMTopic.ModifyGroupAliasTopic)
public class ModifyGroupAliasHandler extends GroupHandler<WFCMessage.ModifyGroupMemberAlias> {
@@ -12,11 +12,11 @@ import cn.wildfirechat.proto.WFCMessage;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import static cn.wildfirechat.proto.ProtoConstants.ModifyGroupInfoType.Modify_Group_Name;
import static cn.wildfirechat.proto.ProtoConstants.ModifyGroupInfoType.Modify_Group_Portrait;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
import static win.liyufan.im.IMTopic.ModifyGroupInfoTopic;
@Handler(value = ModifyGroupInfoTopic)
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(IMTopic.ModifyMyInfoTopic)
@@ -10,10 +10,9 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.ProtoConstants;
import cn.wildfirechat.proto.WFCMessage;
import com.google.protobuf.InvalidProtocolBufferException;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(value = IMTopic.PullMessageTopic)
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(IMTopic.PutUserSettingTopic)
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(IMTopic.QuitChatroomTopic)
@@ -12,7 +12,7 @@ import cn.wildfirechat.proto.WFCMessage;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import static win.liyufan.im.IMTopic.QuitGroupTopic;
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.LinkedHashSet;
@@ -13,7 +13,7 @@ import com.hazelcast.core.Member;
import io.moquette.spi.ClientSession;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static io.moquette.BrokerConstants.HZ_Cluster_Node_External_IP;
@@ -14,10 +14,9 @@ import com.hazelcast.util.StringUtil;
import io.moquette.BrokerConstants;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import win.liyufan.im.MessageShardingUtil;
import win.liyufan.im.SensitiveFilter;
import java.util.Set;
@@ -11,10 +11,10 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
@Handler(IMTopic.SetFriendAliasTopic)
public class SetFriendAliasRequestHandler extends GroupHandler<WFCMessage.AddFriendRequest> {
@@ -11,10 +11,10 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
@Handler(IMTopic.RriendRequestUnreadSyncTopic)
public class SyncFriendRequestUnreadHandler extends GroupHandler<WFCMessage.Version> {
@@ -9,10 +9,9 @@
package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@Handler(IMTopic.TransferChannelInfoTopic)
@@ -12,10 +12,10 @@ import cn.wildfirechat.proto.WFCMessage;
import cn.wildfirechat.pojos.GroupNotificationBinaryContent;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
@Handler(IMTopic.TransferGroupTopic)
public class TransferGroupHandler extends GroupHandler<WFCMessage.TransferGroupRequest> {
@@ -13,7 +13,7 @@ import cn.wildfirechat.proto.WFCMessage;
import io.moquette.persistence.MemorySessionStore;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
@@ -11,7 +11,7 @@ package io.moquette.imhandler;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.spi.impl.Qos1PublishHandler;
import io.netty.buffer.ByteBuf;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import java.util.List;
@@ -23,6 +23,7 @@ import com.hazelcast.core.*;
import com.hazelcast.util.StringUtil;
import com.xiaoleilu.loServer.model.FriendData;
import cn.wildfirechat.pojos.InputOutputUserBlockStatus;
import common.cn.wildfirechat.ErrorCode;
import io.moquette.server.Server;
import io.moquette.spi.IMatchingCondition;
import io.moquette.spi.IMessagesStore;
@@ -23,12 +23,9 @@ import io.moquette.spi.ClientSession;
import io.moquette.spi.IMessagesStore.StoredMessage;
import io.moquette.spi.ISessionsStore;
import io.netty.util.internal.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import win.liyufan.im.ErrorCode;
import win.liyufan.im.UserSettingScope;
import win.liyufan.im.Utility;
import common.cn.wildfirechat.ErrorCode;
import java.util.*;
import java.util.concurrent.*;
@@ -12,7 +12,7 @@ import io.moquette.persistence.remote.*;
import io.moquette.server.Server;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
@@ -27,7 +27,7 @@ import io.netty.handler.codec.mqtt.MqttMessage;
import io.netty.handler.codec.mqtt.MqttMessageType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import java.util.ArrayList;
import java.util.Collection;
@@ -25,7 +25,7 @@ import io.moquette.spi.impl.subscriptions.Topic;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.handler.codec.mqtt.MqttQoS;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import java.util.Collection;
import java.util.List;
@@ -19,10 +19,9 @@ package io.moquette.spi;
import cn.wildfirechat.proto.WFCMessage;
import io.moquette.persistence.MemorySessionStore.Session;
import io.moquette.spi.IMessagesStore.StoredMessage;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import java.util.Collection;
import java.util.List;
import java.util.Queue;
/**
@@ -19,9 +19,9 @@ package io.moquette.spi.impl;
import static io.moquette.spi.impl.Utils.readBytesAndRewind;
import static io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.from;
import static io.netty.handler.codec.mqtt.MqttQoS.AT_MOST_ONCE;
import static win.liyufan.im.ErrorCode.ERROR_CODE_NOT_IMPLEMENT;
import static win.liyufan.im.ErrorCode.ERROR_CODE_OVER_FREQUENCY;
import static win.liyufan.im.ErrorCode.ERROR_CODE_SUCCESS;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_NOT_IMPLEMENT;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_OVER_FREQUENCY;
import static common.cn.wildfirechat.ErrorCode.ERROR_CODE_SUCCESS;
import java.io.IOException;
import java.util.*;
@@ -56,7 +56,7 @@ import io.netty.channel.Channel;
import io.netty.handler.codec.mqtt.MqttFixedHeader;
import io.netty.handler.codec.mqtt.MqttMessageType;
import io.netty.handler.codec.mqtt.MqttPublishMessage;
import win.liyufan.im.ErrorCode;
import common.cn.wildfirechat.ErrorCode;
import win.liyufan.im.IMTopic;
import win.liyufan.im.RateLimiter;
import win.liyufan.im.Utility;
@@ -6,7 +6,7 @@
* file that was distributed with this source code.
*/
package win.liyufan.im;
package common.cn.wildfirechat;
public enum ErrorCode {
//General error
+2 -1
View File
@@ -35,8 +35,9 @@
<module>broker</module>
<module>wildfire_jmeter</module>
<module>client</module>
<module>distribution</module>
<module>common</module>
<module>sdk</module>
<module>distribution</module>
</modules>
<build>
+93
View File
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>wildfirechat-parent</artifactId>
<groupId>cn.wildfirechat</groupId>
<version>0.20</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>sdk</artifactId>
<dependencies>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>uk.org.lidalia</groupId>
<artifactId>slf4j-test</artifactId>
<version>1.0.0-jdk6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>annotations</artifactId>
<version>2.0.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<type>jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.qcloudsms</groupId>
<artifactId>qcloudsms</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
<dependency>
<groupId>cn.wildfirechat</groupId>
<artifactId>common</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,25 @@
package cn.wildfirechat.sdk;
import cn.wildfirechat.sdk.model.*;
public class ChatAdmin {
public static void init(String url, String secret) {
HttpUtils.init(url, secret);
}
public static IMResult<User> getUserByName(String mobile) throws Exception {
String path = "/admin/user/info";
UserName name = new UserName(mobile);
return HttpUtils.httpJsonPost(path, name, User.class);
}
public static IMResult<UserId> createUser(User user) throws Exception {
String path = "/admin/user/create";
return HttpUtils.httpJsonPost(path, user, UserId.class);
}
public static IMResult<Token> getUserToken(String userId, String clientId) throws Exception {
String path = "/admin/user/token";
return HttpUtils.httpJsonPost(path, new GetTokenRequest(userId, clientId), Token.class);
}
}
@@ -0,0 +1,109 @@
package cn.wildfirechat.sdk;
import cn.wildfirechat.sdk.model.IMResult;
import com.google.gson.Gson;
import ikidou.reflect.TypeBuilder;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.nio.charset.Charset;
public class HttpUtils {
private static final Logger LOG = LoggerFactory.getLogger(HttpUtils.class);
private static String adminUrl;
private static String adminSecret;
static void init(String url, String secret) {
adminUrl = url;
adminSecret = secret;
}
static <T> IMResult<T> httpJsonPost(String path, Object object, Class<T> clazz) throws Exception{
if (isNullOrEmpty(adminUrl) || isNullOrEmpty(path)) {
LOG.error("Not init IM SDK correctly. Do you forget init it?");
throw new Exception("SDK url or secret lack!");
}
String url = adminUrl + path;
HttpPost post = null;
try {
HttpClient httpClient = HttpClientBuilder.create().build();
int nonce = (int)(Math.random() * 100000 + 3);
long timestamp = System.currentTimeMillis();
String str = nonce + "|" + adminSecret + "|" + timestamp;
String sign = DigestUtils.sha1Hex(str);
post = new HttpPost(url);
post.setHeader("Content-type", "application/json; charset=utf-8");
post.setHeader("Connection", "Keep-Alive");
post.setHeader("nonce", nonce + "");
post.setHeader("timestamp", "" + timestamp);
post.setHeader("sign", sign);
String jsonStr = new Gson().toJson(object);
LOG.info("http request content: {}", jsonStr);
StringEntity entity = new StringEntity(jsonStr, Charset.forName("UTF-8"));
entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
post.setEntity(entity);
HttpResponse response = httpClient.execute(post);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode != HttpStatus.SC_OK){
LOG.info("Request error: "+statusCode);
throw new Exception("Http request error with code:" + statusCode);
}else{
BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity()
.getContent(),"utf-8"));
StringBuffer sb = new StringBuffer();
String line;
String NL = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line + NL);
}
in.close();
String content = sb.toString();
LOG.info("http request response content: {}", content);
return fromJsonObject(content, clazz);
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}finally{
if(post != null){
post.releaseConnection();
}
}
}
private static <T> IMResult<T> fromJsonObject(String content, Class<T> clazz) {
Type type = TypeBuilder
.newInstance(IMResult.class)
.addTypeParam(clazz)
.build();
return new Gson().fromJson(content, type);
}
private static boolean isNullOrEmpty(String str) {
return str == null || str.isEmpty();
}
}
@@ -0,0 +1,27 @@
package cn.wildfirechat.sdk.model;
public class GetTokenRequest {
private String userId;
private String clientId;
public GetTokenRequest(String userId, String clientId) {
this.userId = userId;
this.clientId = clientId;
}
public String getClientId() {
return clientId;
}
public void setClientId(String clientId) {
this.clientId = clientId;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}
+38
View File
@@ -0,0 +1,38 @@
package cn.wildfirechat.sdk.model;
import common.cn.wildfirechat.ErrorCode;
public class IMResult<T> {
public int code;
public String msg;
public T result;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public ErrorCode getErrorCode() {
return ErrorCode.fromCode(code);
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getResult() {
return result;
}
public void setResult(T result) {
this.result = result;
}
}
@@ -0,0 +1,30 @@
package cn.wildfirechat.sdk.model;
public class SendMessageResult {
private long messageUid;
private long timestamp;
public SendMessageResult() {
}
public SendMessageResult(long messageUid, long timestamp) {
this.messageUid = messageUid;
this.timestamp = timestamp;
}
public long getMessageUid() {
return messageUid;
}
public void setMessageUid(long messageUid) {
this.messageUid = messageUid;
}
public long getTimestamp() {
return timestamp;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
}
@@ -0,0 +1,22 @@
package cn.wildfirechat.sdk.model;
public class Token {
private String token;
private String userId;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}
@@ -0,0 +1,121 @@
package cn.wildfirechat.sdk.model;
public class User {
private String userId;
private String name;
private String password;
private String displayName;
private String portrait;
private int gender;
private String mobile;
private String email;
private String address;
private String company;
private String social;
private String extra;
private long updateDt;
public String getSocial() {
return social;
}
public void setSocial(String social) {
this.social = social;
}
public long getUpdateDt() {
return updateDt;
}
public void setUpdateDt(long updateDt) {
this.updateDt = updateDt;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public String getPortrait() {
return portrait;
}
public void setPortrait(String portrait) {
this.portrait = portrait;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getExtra() {
return extra;
}
public void setExtra(String extra) {
this.extra = extra;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
}
+17
View File
@@ -0,0 +1,17 @@
package cn.wildfirechat.sdk.model;
public class UserId {
private String userId;
public UserId(String userId) {
this.userId = userId;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
}
+17
View File
@@ -0,0 +1,17 @@
package cn.wildfirechat.sdk.model;
public class UserName {
private String name;
public UserName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
+110
View File
@@ -0,0 +1,110 @@
/*
* Copyright 2016 ikidou
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ikidou.reflect;
import ikidou.reflect.exception.TypeException;
import ikidou.reflect.typeimpl.ParameterizedTypeImpl;
import ikidou.reflect.typeimpl.WildcardTypeImpl;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
public class TypeBuilder {
private final TypeBuilder parent;
private final Class raw;
private final List<Type> args = new ArrayList<>();
private TypeBuilder(Class raw, TypeBuilder parent) {
assert raw != null;
this.raw = raw;
this.parent = parent;
}
public static TypeBuilder newInstance(Class raw) {
return new TypeBuilder(raw, null);
}
private static TypeBuilder newInstance(Class raw, TypeBuilder parent) {
return new TypeBuilder(raw, parent);
}
public TypeBuilder beginSubType(Class raw) {
return newInstance(raw, this);
}
public TypeBuilder endSubType() {
if (parent == null) {
throw new TypeException("expect beginSubType() before endSubType()");
}
parent.addTypeParam(getType());
return parent;
}
public TypeBuilder addTypeParam(Class clazz) {
return addTypeParam((Type) clazz);
}
public TypeBuilder addTypeParamExtends(Class... classes) {
if (classes == null) {
throw new NullPointerException("addTypeParamExtends() expect not null Class");
}
WildcardTypeImpl wildcardType = new WildcardTypeImpl(null, classes);
return addTypeParam(wildcardType);
}
public TypeBuilder addTypeParamSuper(Class... classes) {
if (classes == null) {
throw new NullPointerException("addTypeParamSuper() expect not null Class");
}
WildcardTypeImpl wildcardType = new WildcardTypeImpl(classes, null);
return addTypeParam(wildcardType);
}
public TypeBuilder addTypeParam(Type type) {
if (type == null) {
throw new NullPointerException("addTypeParam expect not null Type");
}
args.add(type);
return this;
}
public Type build() {
if (parent != null) {
throw new TypeException("expect endSubType() before build()");
}
return getType();
}
private Type getType() {
if (args.isEmpty()) {
return raw;
}
return new ParameterizedTypeImpl(raw, args.toArray(new Type[args.size()]), null);
}
}
+39
View File
@@ -0,0 +1,39 @@
/*
* Copyright 2016 ikidou
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ikidou.reflect;
import ikidou.reflect.exception.TypeException;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public abstract class TypeToken<T> {
private final Type type;
public TypeToken() {
Type superclass = getClass().getGenericSuperclass();
if (superclass instanceof Class) {
throw new TypeException("No generics found!");
}
ParameterizedType type = (ParameterizedType) superclass;
this.type = type.getActualTypeArguments()[0];
}
public Type getType() {
return type;
}
}
@@ -0,0 +1,38 @@
/*
* Copyright 2016 ikidou
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ikidou.reflect.exception;
public class TypeException extends RuntimeException {
public TypeException() {
}
public TypeException(String message) {
super(message);
}
public TypeException(String message, Throwable cause) {
super(message, cause);
}
public TypeException(Throwable cause) {
super(cause);
}
public TypeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
@@ -0,0 +1,123 @@
/*
* Copyright 2016 ikidou
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ikidou.reflect.typeimpl;
import ikidou.reflect.exception.TypeException;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.util.Arrays;
@SuppressWarnings("SpellCheckingInspection")
public class ParameterizedTypeImpl implements ParameterizedType {
private final Class raw;
private final Type[] args;
private final Type owner;
public ParameterizedTypeImpl(Class raw, Type[] args, Type owner) {
this.raw = raw;
this.args = args != null ? args : new Type[0];
this.owner = owner;
checkArgs();
}
private void checkArgs() {
if (raw == null) {
throw new TypeException("raw class can't be null");
}
TypeVariable[] typeParameters = raw.getTypeParameters();
if (args.length != 0 && typeParameters.length != args.length) {
throw new TypeException(raw.getName() + " expect " + typeParameters.length + " arg(s), got " + args.length);
}
}
@Override
public Type[] getActualTypeArguments() {
return args;
}
@Override
public Type getRawType() {
return raw;
}
@Override
public Type getOwnerType() {
return owner;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(raw.getName());
if (args.length != 0) {
sb.append('<');
for (int i = 0; i < args.length; i++) {
if (i != 0) {
sb.append(", ");
}
Type type = args[i];
if (type instanceof Class) {
Class clazz = (Class) type;
if (clazz.isArray()) {
int count = 0;
do {
count++;
clazz = clazz.getComponentType();
} while (clazz.isArray());
sb.append(clazz.getName());
for (int j = count; j > 0; j--) {
sb.append("[]");
}
} else {
sb.append(clazz.getName());
}
} else {
sb.append(args[i].toString());
}
}
sb.append('>');
}
return sb.toString();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ParameterizedTypeImpl that = (ParameterizedTypeImpl) o;
if (!raw.equals(that.raw)) return false;
// Probably incorrect - comparing Object[] arrays with Arrays.equals
if (!Arrays.equals(args, that.args)) return false;
return owner != null ? owner.equals(that.owner) : that.owner == null;
}
@Override
public int hashCode() {
int result = raw.hashCode();
result = 31 * result + Arrays.hashCode(args);
result = 31 * result + (owner != null ? owner.hashCode() : 0);
return result;
}
}
@@ -0,0 +1,106 @@
/*
* Copyright 2016 ikidou
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ikidou.reflect.typeimpl;
import java.lang.reflect.Type;
import java.lang.reflect.WildcardType;
import java.util.Arrays;
public class WildcardTypeImpl implements WildcardType {
private final Class[] upper;
private final Class[] lower;
public WildcardTypeImpl(Class[] lower, Class[] upper) {
this.lower = lower != null ? lower : new Class[0];
this.upper = upper != null ? upper : new Class[0];
checkArgs();
}
private void checkArgs() {
if (lower.length == 0 && upper.length == 0) {
throw new IllegalArgumentException("lower or upper can't be null");
}
checkArgs(lower);
checkArgs(upper);
}
private void checkArgs(Class[] args) {
for (int i = 1; i < args.length; i++) {
Class clazz = args[i];
if (!clazz.isInterface()) {
throw new IllegalArgumentException(clazz.getName() + " not a interface!");
}
}
}
@Override
public Type[] getUpperBounds() {
return upper;
}
@Override
public Type[] getLowerBounds() {
return lower;
}
@Override
public String toString() {
if (upper.length > 0) {
if (upper[0] == Object.class) {
return "?";
}
return getTypeString("? extends ", upper);
} else {
return getTypeString("? super ", lower);
}
}
private String getTypeString(String prefix, Class[] type) {
StringBuilder sb = new StringBuilder();
sb.append(prefix);
for (int i = 0; i < type.length; i++) {
if (i != 0) {
sb.append(" & ");
}
sb.append(type[i].getName());
}
return sb.toString();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
WildcardTypeImpl that = (WildcardTypeImpl) o;
return Arrays.equals(upper, that.upper) && Arrays.equals(lower, that.lower);
}
@Override
public int hashCode() {
int result = Arrays.hashCode(upper);
result = 31 * result + Arrays.hashCode(lower);
return result;
}
}