diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetRobotAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetRobotAction.java new file mode 100755 index 00000000..38926f25 --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/admin/GetRobotAction.java @@ -0,0 +1,63 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.admin; + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputGetUserInfo; +import cn.wildfirechat.pojos.InputOutputUserInfo; +import cn.wildfirechat.pojos.InputRobotId; +import cn.wildfirechat.pojos.OutputRobot; +import cn.wildfirechat.proto.WFCMessage; +import com.xiaoleilu.loServer.RestResult; +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 io.netty.handler.codec.http.FullHttpRequest; +import io.netty.util.internal.StringUtil; + +@Route(APIPath.User_Get_Robot_Info) +@HttpMethod("POST") +public class GetRobotAction extends AdminAction { + + @Override + public boolean isTransactionAction() { + return true; + } + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + InputRobotId inputUserId = getRequestBody(request.getNettyRequest(), InputRobotId.class); + if (inputUserId != null + && (!StringUtil.isNullOrEmpty(inputUserId.getRobotId()))) { + + WFCMessage.User user = messagesStore.getUserInfo(inputUserId.getRobotId()); + WFCMessage.Robot robot = messagesStore.getRobot(inputUserId.getRobotId()); + + RestResult result; + if (user == null || robot == null) { + result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST); + } else { + OutputRobot outputRobot = new OutputRobot(); + outputRobot.fromUser(user); + outputRobot.fromRobot(robot, true); + result = RestResult.ok(outputRobot); + } + + setResponseContent(result, response); + } else { + setResponseContent(RestResult.resultOf(ErrorCode.INVALID_PARAMETER), response); + } + + } + return true; + } +} diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetProfileAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetProfileAction.java new file mode 100755 index 00000000..9ea05947 --- /dev/null +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/robot/GetProfileAction.java @@ -0,0 +1,46 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package com.xiaoleilu.loServer.action.robot; + +import cn.wildfirechat.common.APIPath; +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.pojos.InputGetUserInfo; +import cn.wildfirechat.pojos.InputOutputUserInfo; +import cn.wildfirechat.pojos.OutputRobot; +import cn.wildfirechat.proto.WFCMessage; +import com.xiaoleilu.loServer.RestResult; +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 io.netty.handler.codec.http.FullHttpRequest; +import io.netty.util.internal.StringUtil; + +@Route(APIPath.Robot_Get_Profile) +@HttpMethod("POST") +public class GetProfileAction extends RobotAction { + + @Override + public boolean action(Request request, Response response) { + if (request.getNettyRequest() instanceof FullHttpRequest) { + WFCMessage.User user = messagesStore.getUserInfo(robot.getUid()); + RestResult result; + if (user == null) { + result = RestResult.resultOf(ErrorCode.ERROR_CODE_NOT_EXIST); + } else { + OutputRobot outputRobot = new OutputRobot(); + outputRobot.fromUser(user); + outputRobot.fromRobot(robot, false); + result = RestResult.ok(outputRobot); + } + setResponseContent(result, response); + } + return true; + } +} diff --git a/common/src/main/java/cn/wildfirechat/common/APIPath.java b/common/src/main/java/cn/wildfirechat/common/APIPath.java index cabd6f83..94d2fc32 100644 --- a/common/src/main/java/cn/wildfirechat/common/APIPath.java +++ b/common/src/main/java/cn/wildfirechat/common/APIPath.java @@ -26,6 +26,7 @@ public interface APIPath { String User_Get_Token = "/admin/user/get_token"; String User_Update_Block_Status = "/admin/user/update_block_status"; String User_Get_Info = "/admin/user/get_info"; + String User_Get_Robot_Info = "/admin/user/get_robot_info"; String User_Get_Blocked_List = "/admin/user/get_blocked_list"; String User_Check_Block_Status = "/admin/user/check_block_status"; String User_Get_Online_Status = "/admin/user/onlinestatus"; @@ -94,6 +95,7 @@ public interface APIPath { String Channel_Verify_Application_UserInfo = "/channel/user/verify"; String Robot_User_Info = "/robot/user_info"; + String Robot_Get_Profile = "/robot/profile"; String Robot_Message_Send = "/robot/message/send"; String Robot_Set_Callback = "/robot/set_callback"; String Robot_Get_Callback = "/robot/get_callback"; diff --git a/common/src/main/java/cn/wildfirechat/pojos/InputRobotId.java b/common/src/main/java/cn/wildfirechat/pojos/InputRobotId.java new file mode 100755 index 00000000..1a02350c --- /dev/null +++ b/common/src/main/java/cn/wildfirechat/pojos/InputRobotId.java @@ -0,0 +1,21 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package cn.wildfirechat.pojos; + +public class InputRobotId { + private String robotId; + + public String getRobotId() { + return robotId; + } + + public void setRobotId(String robotId) { + this.robotId = robotId; + } +} diff --git a/common/src/main/java/cn/wildfirechat/pojos/OutputRobot.java b/common/src/main/java/cn/wildfirechat/pojos/OutputRobot.java new file mode 100755 index 00000000..b93a7383 --- /dev/null +++ b/common/src/main/java/cn/wildfirechat/pojos/OutputRobot.java @@ -0,0 +1,192 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package cn.wildfirechat.pojos; + + +import cn.wildfirechat.proto.WFCMessage; + +public class OutputRobot { + 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; + + private String owner; + private String secret; + private String callback; + private String robotExtra; + + 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; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public String getSecret() { + return secret; + } + + public void setSecret(String secret) { + this.secret = secret; + } + + public String getCallback() { + return callback; + } + + public void setCallback(String callback) { + this.callback = callback; + } + + public String getRobotExtra() { + return robotExtra; + } + + public void setRobotExtra(String robotExtra) { + this.robotExtra = robotExtra; + } + + public void fromUser(WFCMessage.User user) { + userId = user.getUid(); + name = user.getName(); + displayName = user.getDisplayName(); + portrait = user.getPortrait(); + gender = user.getGender(); + mobile = user.getMobile(); + email = user.getEmail(); + address = user.getAddress(); + company = user.getCompany(); + social = user.getSocial(); + extra = user.getExtra(); + updateDt = user.getUpdateDt(); + } + public void fromRobot(WFCMessage.Robot robot, boolean withSecret) { + setOwner(robot.getOwner()); + if(withSecret) { + setSecret(robot.getSecret()); + } + setCallback(robot.getCallback()); + setRobotExtra(robot.getExtra()); + } +} diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java index 125abc42..7210f42a 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/Main.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/Main.java @@ -95,6 +95,14 @@ public class Main { System.exit(-1); } + IMResult outputRobotIMResult = UserAdmin.getRobotInfo("robot1"); + if(outputRobotIMResult != null && outputRobotIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + System.out.println("Get robot success"); + } else { + System.out.println("Get robot failure"); + System.exit(-1); + } + IMResult destroyResult = UserAdmin.destroyRobot("robot1"); if(destroyResult != null && destroyResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("success"); @@ -1003,8 +1011,8 @@ public class Main { //**** 机器人API //*********************************************** - IMResult userInfoIMResult = robotService.getProfile(robotId); - if(userInfoIMResult != null && userInfoIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { + IMResult robotProfileIMResult = robotService.getProfile(); + if(robotProfileIMResult != null && robotProfileIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS) { System.out.println("get profile success"); } else { System.out.println("get profile failure"); @@ -1019,8 +1027,8 @@ public class Main { System.out.println("modify profile failure"); System.exit(-1); } - userInfoIMResult = robotService.getProfile(robotId); - if(userInfoIMResult != null && userInfoIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && displayName.equals(userInfoIMResult.getResult().getDisplayName())) { + robotProfileIMResult = robotService.getProfile(); + if(robotProfileIMResult != null && robotProfileIMResult.getErrorCode() == ErrorCode.ERROR_CODE_SUCCESS && displayName.equals(robotProfileIMResult.getResult().getDisplayName())) { System.out.println("get profile success"); } else { System.out.println("get profile failure"); diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java b/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java index 67db481c..75021f56 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/RobotService.java @@ -3,6 +3,7 @@ package cn.wildfirechat.sdk; import cn.wildfirechat.common.APIPath; import cn.wildfirechat.pojos.*; import cn.wildfirechat.sdk.model.IMResult; +import cn.wildfirechat.sdk.utilities.AdminHttpUtils; import cn.wildfirechat.sdk.utilities.RobotHttpUtils; import java.util.List; @@ -58,8 +59,9 @@ public class RobotService { return robotHttpUtils.httpJsonPost(path, null, Void.class); } - public IMResult getProfile(String robotId) throws Exception { - return getUserInfo(robotId); + public IMResult getProfile() throws Exception { + String path = APIPath.Robot_Get_Profile; + return robotHttpUtils.httpJsonPost(path, null, OutputRobot.class); } /* diff --git a/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java b/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java index 89ab582c..e52f6697 100644 --- a/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java +++ b/sdk/src/main/java/cn/wildfirechat/sdk/UserAdmin.java @@ -52,6 +52,13 @@ public class UserAdmin { return AdminHttpUtils.httpJsonPost(path, inputDestroyUser, Void.class); } + public static IMResult getRobotInfo(String robotId) throws Exception { + String path = APIPath.User_Get_Robot_Info; + InputRobotId getRobotInfo = new InputRobotId(); + getRobotInfo.setRobotId(robotId); + return AdminHttpUtils.httpJsonPost(path, getRobotInfo, OutputRobot.class); + } + public static IMResult getUserToken(String userId, String clientId, int platform) throws Exception { String path = APIPath.User_Get_Token; InputGetToken getToken = new InputGetToken(userId, clientId, platform);