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 ); }
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(); }