コード例 #1
0
        public static void TestSerializeRequest()
        {
            SendmsgRequest request = new SendmsgRequest(
                Enums.MessageType.group_, 123, new Messages.Message(
                    new ElementText("te st1"),
                    new ElementFace("234")
                    )
                );

            Config.is_send_json = false;
            Assert.Equal(
                @"{""message_type"":""group"",""group_id"":123,""message"":""te st1[CQ:face,id=234]""}",
                request.content
                );
            Config.is_send_json = true;
            Assert.Equal(
                @"{""message_type"":""group"",""group_id"":123,""message"":[{""type"":""text"",""data"":{""text"":""te st1""}},{""type"":""face"",""data"":{""id"":""234""}}]}",
                request.content
                );
        }
コード例 #2
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            SendmsgRequest request = value as SendmsgRequest;

            writer.WriteStartObject();
            writer.WritePropertyName("message_type");
            switch (request.messageType)
            {
            case MessageType.discuss_:
                writer.WriteValue("discuss");
                writer.WritePropertyName("discuss_id");
                break;

            case MessageType.group_:
                writer.WriteValue("group");
                writer.WritePropertyName("group_id");
                break;

            case MessageType.private_:
                writer.WriteValue("private");
                writer.WritePropertyName("user_id");
                break;

            default:
                throw new Exceptions.ErrorApicallException("what?");
            }
            writer.WriteValue(request.target_id);
            writer.WritePropertyName("message");

            if (Config.is_send_json)
            {
                writer.WriteRawValue(JsonConvert.SerializeObject(request.message));
            }
            else
            {
                writer.WriteValue(request.message.ToString());
            }
            writer.WriteEndObject();
        }