syntax = "proto3"; package wcf; option java_package = "com.iamteer.wcf"; /* service Wcf { rpc RpcIsLogin(Empty) returns (Response) {} rpc RpcGetSelfWxid(Empty) returns (String) {} rpc RpcEnableRecvMsg(Empty) returns (stream WxMsg) {} rpc RpcDisableRecvMsg(Empty) returns (Response) {} rpc RpcSendTextMsg(TextMsg) returns (Response) {} rpc RpcSendPathMsg(PathMsg) returns (Response) {} rpc RpcGetMsgTypes(Empty) returns (MsgTypes) {} rpc RpcGetContacts(Empty) returns (Contacts) {} rpc RpcGetDbNames(Empty) returns (DbNames) {} rpc RpcGetDbTables(String) returns (DbTables) {} rpc RpcExecDbQuery(DbQuery) returns (DbRows) {} rpc RpcAcceptNewFriend(Verification) returns (Response) {} } */ enum Functions { FUNC_RESERVED = 0x00; FUNC_IS_LOGIN = 0x01; FUNC_GET_SELF_WXID = 0x10; FUNC_GET_MSG_TYPES = 0x11; FUNC_GET_CONTACTS = 0x12; FUNC_GET_DB_NAMES = 0x13; FUNC_GET_DB_TABLES = 0x14; FUNC_SEND_TXT = 0x20; FUNC_SEND_IMG = 0x21; FUNC_ENABLE_RECV_TXT = 0x30; FUNC_DISABLE_RECV_TXT = 0x40; FUNC_EXEC_DB_QUERY = 0x50; FUNC_ACCEPT_FRIEND = 0x51; } message Request { Functions func = 1; oneof msg { Empty empty = 2; string str = 3; TextMsg txt = 4; PathMsg file = 5; DbQuery query = 6; Verification v = 7; } } message Response { Functions func = 1; oneof msg { int32 status = 2; string str = 3; WxMsg wxmsg = 4; MsgTypes types = 5; RpcContacts contacts = 6; DbNames dbs = 7; DbTables tables = 8; DbRows rows = 9; }; } message Empty { } message WxMsg { bool is_self = 1; // 是否自己发送的 bool is_group = 2; // 是否群消息 int32 type = 3; // 消息类型 string id = 4; // 消息 id string xml = 5; // 消息 xml string sender = 6; // 消息发送者 string roomid = 7; // 群 id(如果是群消息的话) string content = 8; // 消息内容 } message TextMsg { string msg = 1; // 要发送的消息内容 string receiver = 2; // 消息接收人,当为群时可@ string aters = 3; // 要@的人列表,逗号分隔 } message PathMsg { string path = 1; // 要发送的图片的路径 string receiver = 2; // 消息接收人 } message MsgTypes { map types = 1; } message RpcContact { string wxid = 1; // 微信 id string code = 2; // 微信号 string name = 3; // 微信昵称 string country = 4; // 国家 string province = 5; // 省/州 string city = 6; // 城市 int32 gender = 7; // 性别 } message RpcContacts { repeated RpcContact contacts = 1; } message DbNames { repeated string names = 1; } message DbTable { string name = 1; // 表名 string sql = 2; // 建表 SQL } message DbTables { repeated DbTable tables = 1; } message DbQuery { string db = 1; // 目标数据库 string sql = 2; // 查询 SQL } message DbField { int32 type = 1; // 字段类型 string column = 2; // 字段名称 bytes content = 3; // 字段内容 } message DbRow { repeated DbField fields = 1; } message DbRows { repeated DbRow rows = 1; } message Verification { string v3 = 1; string v4 = 2; }