All classes that inherit from User and need "username" property have it.

UserFullConstructor Read changed to not to parse User (by default it parses a UserSelfConstructor, now uses UserRequestConstructor).
In Dictionary UserContactConstructor was signed with 0xf2fb8319 now 0xcab35e18 (That is the real one given by Telegram)
This commit is contained in:
Jesus 2016-05-13 10:58:25 +02:00
parent f30f328604
commit 5120b77b81

View file

@ -330,7 +330,7 @@ namespace TLSharp.Core.MTProto
{0x200250ba, typeof (UserEmptyConstructor)}, {0x200250ba, typeof (UserEmptyConstructor)},
{0x720535EC, typeof (UserSelfConstructor)}, {0x720535EC, typeof (UserSelfConstructor)},
{0x7007b451, typeof (UserSelfConstructor)}, {0x7007b451, typeof (UserSelfConstructor)},
{0xf2fb8319, typeof (UserContactConstructor)}, {0xcab35e18, typeof (UserContactConstructor)}, //before signed as 0xf2fb8319
{0x22e8ceb0, typeof (UserRequestConstructor)}, {0x22e8ceb0, typeof (UserRequestConstructor)},
{0x5214c89d, typeof (UserForeignConstructor)}, {0x5214c89d, typeof (UserForeignConstructor)},
{0xb29ad7cc, typeof (UserDeletedConstructor)}, {0xb29ad7cc, typeof (UserDeletedConstructor)},
@ -523,7 +523,7 @@ namespace TLSharp.Core.MTProto
{0x34e794bd, typeof (InputMediaUploadedDocumentConstructor)}, {0x34e794bd, typeof (InputMediaUploadedDocumentConstructor)},
{0x3e46de5d, typeof (InputMediaUploadedThumbDocumentConstructor)}, {0x3e46de5d, typeof (InputMediaUploadedThumbDocumentConstructor)},
{0xd184e841, typeof (InputMediaDocumentConstructor)}, {0xd184e841, typeof (InputMediaDocumentConstructor)},
{0x2fda2204 , typeof (MessageMediaDocumentConstructor)}, {0x2fda2204, typeof (MessageMediaDocumentConstructor)},
{0xc6b68300, typeof (MessageMediaAudioConstructor)}, {0xc6b68300, typeof (MessageMediaAudioConstructor)},
{0xd95adc84, typeof (InputAudioEmptyConstructor)}, {0xd95adc84, typeof (InputAudioEmptyConstructor)},
{0x77d440ff, typeof (InputAudioConstructor)}, {0x77d440ff, typeof (InputAudioConstructor)},
@ -844,33 +844,33 @@ namespace TLSharp.Core.MTProto
return new UserEmptyConstructor(id); return new UserEmptyConstructor(id);
} }
public static User userSelf(int id, string first_name, string last_name, string phone, UserProfilePhoto photo, public static User userSelf(int id, string first_name, string last_name, string username, string phone, UserProfilePhoto photo,
UserStatus status, bool inactive) UserStatus status, bool inactive)
{ {
return new UserSelfConstructor(id, first_name, last_name, phone, photo, status, inactive); return new UserSelfConstructor(id, first_name, last_name, username, phone, photo, status, inactive);
} }
public static User userContact(int id, string first_name, string last_name, long access_hash, string phone, public static User userContact(int id, string first_name, string last_name, string username, long access_hash, string phone,
UserProfilePhoto photo, UserStatus status) UserProfilePhoto photo, UserStatus status)
{ {
return new UserContactConstructor(id, first_name, last_name, access_hash, phone, photo, status); return new UserContactConstructor(id, first_name, last_name, username, access_hash, phone, photo, status);
} }
public static User userRequest(int id, string first_name, string last_name, long access_hash, string phone, public static User userRequest(int id, string first_name, string last_name, string username, long access_hash, string phone,
UserProfilePhoto photo, UserStatus status) UserProfilePhoto photo, UserStatus status)
{ {
return new UserRequestConstructor(id, first_name, last_name, access_hash, phone, photo, status); return new UserRequestConstructor(id, first_name, last_name, username, access_hash, phone, photo, status);
} }
public static User userForeign(int id, string first_name, string last_name, long access_hash, UserProfilePhoto photo, public static User userForeign(int id, string first_name, string last_name, string username, long access_hash, UserProfilePhoto photo,
UserStatus status) UserStatus status)
{ {
return new UserForeignConstructor(id, first_name, last_name, access_hash, photo, status); return new UserForeignConstructor(id, first_name, last_name, username, access_hash, photo, status);
} }
public static User userDeleted(int id, string first_name, string last_name) public static User userDeleted(int id, string first_name, string last_name, string username)
{ {
return new UserDeletedConstructor(id, first_name, last_name); return new UserDeletedConstructor(id, first_name, last_name, username);
} }
public static UserProfilePhoto userProfilePhotoEmpty() public static UserProfilePhoto userProfilePhotoEmpty()
@ -4282,11 +4282,12 @@ namespace TLSharp.Core.MTProto
} }
public class UserSelfConstructor : User public class UserSelfConstructor : User //userSelf#7007b451 id:int first_name:string last_name:string username:string phone:string photo:UserProfilePhoto status:UserStatus inactive:Bool = User;
{ {
public int id; public int id;
public string first_name; public string first_name;
public string last_name; public string last_name;
public string username;
public string phone; public string phone;
public UserProfilePhoto photo; public UserProfilePhoto photo;
public UserStatus status; public UserStatus status;
@ -4297,12 +4298,13 @@ namespace TLSharp.Core.MTProto
} }
public UserSelfConstructor(int id, string first_name, string last_name, string phone, UserProfilePhoto photo, public UserSelfConstructor(int id, string first_name, string last_name, string username, string phone, UserProfilePhoto photo,
UserStatus status, bool inactive) UserStatus status, bool inactive)
{ {
this.id = id; this.id = id;
this.first_name = first_name; this.first_name = first_name;
this.last_name = last_name; this.last_name = last_name;
this.username = username;
this.phone = phone; this.phone = phone;
this.photo = photo; this.photo = photo;
this.status = status; this.status = status;
@ -4321,9 +4323,10 @@ namespace TLSharp.Core.MTProto
writer.Write(this.id); writer.Write(this.id);
Serializers.String.write(writer, this.first_name); Serializers.String.write(writer, this.first_name);
Serializers.String.write(writer, this.last_name); Serializers.String.write(writer, this.last_name);
Serializers.String.write(writer, this.username);
Serializers.String.write(writer, this.phone); Serializers.String.write(writer, this.phone);
//this.photo.Write(writer); this.photo.Write(writer);
//this.status.Write(writer); this.status.Write(writer);
writer.Write(this.inactive ? 0x997275b5 : 0xbc799737); writer.Write(this.inactive ? 0x997275b5 : 0xbc799737);
} }
@ -4332,26 +4335,28 @@ namespace TLSharp.Core.MTProto
this.id = reader.ReadInt32(); this.id = reader.ReadInt32();
this.first_name = Serializers.String.read(reader); this.first_name = Serializers.String.read(reader);
this.last_name = Serializers.String.read(reader); this.last_name = Serializers.String.read(reader);
this.username = Serializers.String.read(reader);
this.phone = Serializers.String.read(reader); this.phone = Serializers.String.read(reader);
//this.photo = TL.Parse<UserProfilePhoto>(reader); this.photo = TL.Parse<UserProfilePhoto>(reader);
//this.status = TL.Parse<UserStatus>(reader); this.status = TL.Parse<UserStatus>(reader);
this.inactive = reader.ReadUInt32() == 0x997275b5; this.inactive = reader.ReadUInt32() == 0x997275b5;
} }
public override string ToString() public override string ToString()
{ {
return return
String.Format("(userSelf id:{0} first_name:'{1}' last_name:'{2}' phone:'{3}' photo:{4} status:{5} inactive:{6})", id, String.Format("(userSelf id:{0} first_name:'{1}' last_name:'{2}' username: '{3}' phone:'{4}' photo:{5} status:{6} inactive:{7})", id,
first_name, last_name, phone, photo, status, inactive); first_name, last_name, username, phone, photo, status, inactive);
} }
} }
public class UserContactConstructor : User public class UserContactConstructor : User //userContact#cab35e18 id:int first_name:string last_name:string username:string access_hash:long phone:string photo:UserProfilePhoto status:UserStatus = User;
{ {
public int id; public int id;
public string first_name; public string first_name;
public string last_name; public string last_name;
public string username;
public long access_hash; public long access_hash;
public string phone; public string phone;
public UserProfilePhoto photo; public UserProfilePhoto photo;
@ -4362,12 +4367,13 @@ namespace TLSharp.Core.MTProto
} }
public UserContactConstructor(int id, string first_name, string last_name, long access_hash, string phone, public UserContactConstructor(int id, string first_name, string last_name, string username, long access_hash, string phone,
UserProfilePhoto photo, UserStatus status) UserProfilePhoto photo, UserStatus status)
{ {
this.id = id; this.id = id;
this.first_name = first_name; this.first_name = first_name;
this.last_name = last_name; this.last_name = last_name;
this.username = username;
this.access_hash = access_hash; this.access_hash = access_hash;
this.phone = phone; this.phone = phone;
this.photo = photo; this.photo = photo;
@ -4382,10 +4388,11 @@ namespace TLSharp.Core.MTProto
public override void Write(BinaryWriter writer) public override void Write(BinaryWriter writer)
{ {
writer.Write(0xf2fb8319); writer.Write(0xcab35e18);
writer.Write(this.id); writer.Write(this.id);
Serializers.String.write(writer, this.first_name); Serializers.String.write(writer, this.first_name);
Serializers.String.write(writer, this.last_name); Serializers.String.write(writer, this.last_name);
Serializers.String.write(writer, this.username);
writer.Write(this.access_hash); writer.Write(this.access_hash);
Serializers.String.write(writer, this.phone); Serializers.String.write(writer, this.phone);
this.photo.Write(writer); this.photo.Write(writer);
@ -4397,6 +4404,7 @@ namespace TLSharp.Core.MTProto
this.id = reader.ReadInt32(); this.id = reader.ReadInt32();
this.first_name = Serializers.String.read(reader); this.first_name = Serializers.String.read(reader);
this.last_name = Serializers.String.read(reader); this.last_name = Serializers.String.read(reader);
this.username = Serializers.String.read(reader);
this.access_hash = reader.ReadInt64(); this.access_hash = reader.ReadInt64();
this.phone = Serializers.String.read(reader); this.phone = Serializers.String.read(reader);
this.photo = TL.Parse<UserProfilePhoto>(reader); this.photo = TL.Parse<UserProfilePhoto>(reader);
@ -4407,17 +4415,18 @@ namespace TLSharp.Core.MTProto
{ {
return return
String.Format( String.Format(
"(userContact id:{0} first_name:'{1}' last_name:'{2}' access_hash:{3} phone:'{4}' photo:{5} status:{6})", id, "(userContact id:{0} first_name:'{1}' last_name:'{2}' username: '{3}' access_hash:{4} phone:'{5}' photo:{6} status:{7})", id,
first_name, last_name, access_hash, phone, photo, status); first_name, last_name, username, access_hash, phone, photo, status);
} }
} }
public class UserRequestConstructor : User public class UserRequestConstructor : User //userRequest#d9ccc4ef id:int first_name:string last_name:string username:string access_hash:long phone:string photo:UserProfilePhoto status:UserStatus = User;
{ {
public int id; public int id;
public string first_name; public string first_name;
public string last_name; public string last_name;
public string username;
public long access_hash; public long access_hash;
public string phone; public string phone;
public UserProfilePhoto photo; public UserProfilePhoto photo;
@ -4428,12 +4437,13 @@ namespace TLSharp.Core.MTProto
} }
public UserRequestConstructor(int id, string first_name, string last_name, long access_hash, string phone, public UserRequestConstructor(int id, string first_name, string last_name, string username, long access_hash, string phone,
UserProfilePhoto photo, UserStatus status) UserProfilePhoto photo, UserStatus status)
{ {
this.id = id; this.id = id;
this.first_name = first_name; this.first_name = first_name;
this.last_name = last_name; this.last_name = last_name;
this.username = username;
this.access_hash = access_hash; this.access_hash = access_hash;
this.phone = phone; this.phone = phone;
this.photo = photo; this.photo = photo;
@ -4452,6 +4462,7 @@ namespace TLSharp.Core.MTProto
writer.Write(this.id); writer.Write(this.id);
Serializers.String.write(writer, this.first_name); Serializers.String.write(writer, this.first_name);
Serializers.String.write(writer, this.last_name); Serializers.String.write(writer, this.last_name);
Serializers.String.write(writer, this.username);
writer.Write(this.access_hash); writer.Write(this.access_hash);
Serializers.String.write(writer, this.phone); Serializers.String.write(writer, this.phone);
this.photo.Write(writer); this.photo.Write(writer);
@ -4463,6 +4474,7 @@ namespace TLSharp.Core.MTProto
this.id = reader.ReadInt32(); this.id = reader.ReadInt32();
this.first_name = Serializers.String.read(reader); this.first_name = Serializers.String.read(reader);
this.last_name = Serializers.String.read(reader); this.last_name = Serializers.String.read(reader);
this.username = Serializers.String.read(reader);
this.access_hash = reader.ReadInt64(); this.access_hash = reader.ReadInt64();
this.phone = Serializers.String.read(reader); this.phone = Serializers.String.read(reader);
this.photo = TL.Parse<UserProfilePhoto>(reader); this.photo = TL.Parse<UserProfilePhoto>(reader);
@ -4473,17 +4485,18 @@ namespace TLSharp.Core.MTProto
{ {
return return
String.Format( String.Format(
"(userRequest id:{0} first_name:'{1}' last_name:'{2}' access_hash:{3} phone:'{4}' photo:{5} status:{6})", id, "(userRequest id:{0} first_name:'{1}' last_name:'{2}' username:'{3}' access_hash:{4} phone:'{5}' photo:{6} status:{7})", id,
first_name, last_name, access_hash, phone, photo, status); first_name, last_name, username, access_hash, phone, photo, status);
} }
} }
public class UserForeignConstructor : User public class UserForeignConstructor : User //userForeign#75cf7a8 id:int first_name:string last_name:string username:string access_hash:long photo:UserProfilePhoto status:UserStatus = User;
{ {
public int id; public int id;
public string first_name; public string first_name;
public string last_name; public string last_name;
public string username;
public long access_hash; public long access_hash;
public UserProfilePhoto photo; public UserProfilePhoto photo;
public UserStatus status; public UserStatus status;
@ -4493,12 +4506,12 @@ namespace TLSharp.Core.MTProto
} }
public UserForeignConstructor(int id, string first_name, string last_name, long access_hash, UserProfilePhoto photo, public UserForeignConstructor(int id, string first_name, string last_name, string username, long access_hash, UserProfilePhoto photo, UserStatus status)
UserStatus status)
{ {
this.id = id; this.id = id;
this.first_name = first_name; this.first_name = first_name;
this.last_name = last_name; this.last_name = last_name;
this.username = username;
this.access_hash = access_hash; this.access_hash = access_hash;
this.photo = photo; this.photo = photo;
this.status = status; this.status = status;
@ -4516,6 +4529,7 @@ namespace TLSharp.Core.MTProto
writer.Write(this.id); writer.Write(this.id);
Serializers.String.write(writer, this.first_name); Serializers.String.write(writer, this.first_name);
Serializers.String.write(writer, this.last_name); Serializers.String.write(writer, this.last_name);
Serializers.String.write(writer, this.username);
writer.Write(this.access_hash); writer.Write(this.access_hash);
this.photo.Write(writer); this.photo.Write(writer);
this.status.Write(writer); this.status.Write(writer);
@ -4526,35 +4540,39 @@ namespace TLSharp.Core.MTProto
this.id = reader.ReadInt32(); this.id = reader.ReadInt32();
this.first_name = Serializers.String.read(reader); this.first_name = Serializers.String.read(reader);
this.last_name = Serializers.String.read(reader); this.last_name = Serializers.String.read(reader);
this.username = Serializers.String.read(reader);
this.access_hash = reader.ReadInt64(); this.access_hash = reader.ReadInt64();
this.photo = TL.Parse<UserProfilePhoto>(reader); this.photo = TL.Parse<UserProfilePhoto>(reader);
this.status = TL.Parse<UserStatus>(reader); this.status = TL.Parse<UserStatus>(reader);
long tamano = reader.BaseStream.Length;
} }
public override string ToString() public override string ToString()
{ {
return String.Format("(userForeign id:{0} first_name:'{1}' last_name:'{2}' access_hash:{3} photo:{4} status:{5})", id, return String.Format("(userForeign id:{0} first_name:'{1}' last_name:'{2}' username:'{3}' access_hash:{4} photo:{5} status:{6})", id,
first_name, last_name, access_hash, photo, status); first_name, last_name, username, access_hash, photo, status);
} }
} }
public class UserDeletedConstructor : User public class UserDeletedConstructor : User //userDeleted#d6016d7a id:int first_name:string last_name:string username:string = User;
{ {
public int id; public int id;
public string first_name; public string first_name;
public string last_name; public string last_name;
public string username;
public UserDeletedConstructor() public UserDeletedConstructor()
{ {
} }
public UserDeletedConstructor(int id, string first_name, string last_name) public UserDeletedConstructor(int id, string first_name, string last_name, string username)
{ {
this.id = id; this.id = id;
this.first_name = first_name; this.first_name = first_name;
this.last_name = last_name; this.last_name = last_name;
this.username = username;
} }
@ -4569,6 +4587,7 @@ namespace TLSharp.Core.MTProto
writer.Write(this.id); writer.Write(this.id);
Serializers.String.write(writer, this.first_name); Serializers.String.write(writer, this.first_name);
Serializers.String.write(writer, this.last_name); Serializers.String.write(writer, this.last_name);
Serializers.String.write(writer, this.username);
} }
public override void Read(BinaryReader reader) public override void Read(BinaryReader reader)
@ -4576,11 +4595,12 @@ namespace TLSharp.Core.MTProto
this.id = reader.ReadInt32(); this.id = reader.ReadInt32();
this.first_name = Serializers.String.read(reader); this.first_name = Serializers.String.read(reader);
this.last_name = Serializers.String.read(reader); this.last_name = Serializers.String.read(reader);
this.username = Serializers.String.read(reader);
} }
public override string ToString() public override string ToString()
{ {
return String.Format("(userDeleted id:{0} first_name:'{1}' last_name:'{2}')", id, first_name, last_name); return String.Format("(userDeleted id:{0} first_name:'{1}' last_name:'{2}' username: '{3}')", id, first_name, last_name, username);
} }
} }
@ -4593,8 +4613,6 @@ namespace TLSharp.Core.MTProto
} }
public override Constructor Constructor public override Constructor Constructor
{ {
get { return Constructor.userProfilePhotoEmpty; } get { return Constructor.userProfilePhotoEmpty; }
@ -7061,7 +7079,7 @@ namespace TLSharp.Core.MTProto
} }
public class UserFullConstructor : UserFull public class UserFullConstructor : UserFull //userFull#771095da user:User link:contacts.Link profile_photo:Photo notify_settings:PeerNotifySettings blocked:Bool real_first_name:string real_last_name:string = UserFull;
{ {
public User user; public User user;
public contacts_Link link; public contacts_Link link;
@ -7108,7 +7126,10 @@ namespace TLSharp.Core.MTProto
public override void Read(BinaryReader reader) public override void Read(BinaryReader reader)
{ {
this.user = TL.Parse<User>(reader); this.user = new UserRequestConstructor();
uint dataCode = reader.ReadUInt32();
this.user.Read(reader);
this.link = TL.Parse<contacts_Link>(reader); this.link = TL.Parse<contacts_Link>(reader);
this.profile_photo = TL.Parse<Photo>(reader); this.profile_photo = TL.Parse<Photo>(reader);
this.notify_settings = TL.Parse<PeerNotifySettings>(reader); this.notify_settings = TL.Parse<PeerNotifySettings>(reader);