From ee2f0bfee127cdf993e8f952f47726be6d4a439a Mon Sep 17 00:00:00 2001 From: Wizou <11647984+wiz0u@users.noreply.github.com> Date: Sun, 23 Apr 2023 14:35:08 +0200 Subject: [PATCH] added Document.GetAttribute<> helpers, setters on Input* classes and more --- .github/dev.yml | 3 +- src/TL.Helpers.cs | 8 ++++- src/TL.Schema.cs | 72 +++++++++++++++++++------------------- src/WTelegramClient.csproj | 5 --- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/.github/dev.yml b/.github/dev.yml index 1eff107..d2d7e8e 100644 --- a/.github/dev.yml +++ b/.github/dev.yml @@ -2,7 +2,7 @@ pr: none trigger: - master -name: 3.4.1-dev.$(Rev:r) +name: 3.4.2-dev.$(Rev:r) pool: vmImage: ubuntu-latest @@ -35,4 +35,3 @@ steps: publishPackageMetadata: true nuGetFeedType: 'external' publishFeedCredentials: 'nuget.org' - diff --git a/src/TL.Helpers.cs b/src/TL.Helpers.cs index 1fb8141..bfc0217 100644 --- a/src/TL.Helpers.cs +++ b/src/TL.Helpers.cs @@ -456,10 +456,11 @@ namespace TL { public override long ID => id; public override string ToString() => Filename is string filename ? base.ToString() + ": " + filename : base.ToString(); - public string Filename => attributes.OfType().FirstOrDefault()?.file_name; + public string Filename => GetAttribute()?.file_name; protected override InputDocument ToInputDocument() => new() { id = id, access_hash = access_hash, file_reference = file_reference }; public InputDocumentFileLocation ToFileLocation(PhotoSizeBase thumbSize = null) => new() { id = id, access_hash = access_hash, file_reference = file_reference, thumb_size = thumbSize?.Type }; public PhotoSizeBase LargestThumbSize => thumbs?.Aggregate((agg, next) => (long)next.Width * next.Height > (long)agg.Width * agg.Height ? next : agg); + public T GetAttribute() where T : DocumentAttribute => attributes.OfType().FirstOrDefault(); } partial class SendMessageAction @@ -490,6 +491,9 @@ namespace TL partial class StickerSet { public static implicit operator InputStickerSetID(StickerSet stickerSet) => new() { id = stickerSet.id, access_hash = stickerSet.access_hash }; + [System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060")] + public InputStickerSetThumb ToFileLocation(PhotoSizeBase thumbSize) => new() { stickerset = this, thumb_version = thumb_version }; + public PhotoSizeBase LargestThumbSize => thumbs?.Aggregate((agg, next) => (long)next.Width * next.Height > (long)agg.Width * agg.Height ? next : agg); } partial class MessageEntity @@ -569,6 +573,8 @@ namespace TL partial class Messages_PeerDialogs { public IPeerInfo UserOrChat(DialogBase dialog) => dialog.Peer?.UserOrChat(users, chats); } partial class Game { public static implicit operator InputGameID(Game game) => new() { id = game.id, access_hash = game.access_hash }; } + + partial class WebDocumentBase { public T GetAttribute() where T : DocumentAttribute => Attributes.OfType().FirstOrDefault(); } partial class WebDocument { public static implicit operator InputWebFileLocation(WebDocument doc) => new() { url = doc.url, access_hash = doc.access_hash }; } partial class PhoneCallBase { public static implicit operator InputPhoneCall(PhoneCallBase call) => new() { id = call.ID, access_hash = call.AccessHash }; } diff --git a/src/TL.Schema.cs b/src/TL.Schema.cs index 36f144e..445e53f 100644 --- a/src/TL.Schema.cs +++ b/src/TL.Schema.cs @@ -132,11 +132,11 @@ namespace TL public abstract partial class InputFileBase : IObject { /// Random file identifier created by the client - public virtual long ID { get; } + public virtual long ID { get; set; } /// Number of parts saved - public virtual int Parts { get; } + public virtual int Parts { get; set; } /// Full name of the file - public virtual string Name { get; } + public virtual string Name { get; set; } } /// Defines a file saved in parts using the method Upload_SaveFilePart. See [TLDef(0xF52FF27F)] @@ -152,11 +152,11 @@ namespace TL public byte[] md5_checksum; /// Random file identifier created by the client - public override long ID => id; + public override long ID { get => id; set => id = value; } /// Number of parts saved - public override int Parts => parts; + public override int Parts { get => parts; set => parts = value; } /// Full name of the file - public override string Name => name; + public override string Name { get => name; set => name = value; } } /// Assigns a big file (over 10 MB in size), saved in part using the method Upload_SaveBigFilePart. See [TLDef(0xFA4F0BB5)] @@ -170,11 +170,11 @@ namespace TL public string name; /// Random file id, created by the client - public override long ID => id; + public override long ID { get => id; set => id = value; } /// Number of parts saved - public override int Parts => parts; + public override int Parts { get => parts; set => parts = value; } /// Full file name - public override string Name => name; + public override string Name { get => name; set => name = value; } } /// Defines media content of a message. See Derived classes: , , , , , , , , , , , , , @@ -5312,7 +5312,7 @@ namespace TL public abstract class InputEncryptedFileBase : IObject { /// Random file ID created by client - public virtual long ID { get; } + public virtual long ID { get; set; } } /// Sets new encrypted file saved by parts using upload.saveFilePart method. See [TLDef(0x64BD0306)] @@ -5328,7 +5328,7 @@ namespace TL public int key_fingerprint; /// Random file ID created by client - public override long ID => id; + public override long ID { get => id; set => id = value; } } /// Sets forwarded encrypted file for attachment. See [TLDef(0x5A17B5E5)] @@ -5340,7 +5340,7 @@ namespace TL public long access_hash; /// File ID, value of id parameter from - public override long ID => id; + public override long ID { get => id; set => id = value; } } /// Assigns a new big encrypted file (over 10 MB in size), saved in parts using the method Upload_SaveBigFilePart. See [TLDef(0x2DC173C8)] @@ -5354,7 +5354,7 @@ namespace TL public int key_fingerprint; /// Random file id, created by the client - public override long ID => id; + public override long ID { get => id; set => id = value; } } /// Object contains encrypted message. See Derived classes: , @@ -6883,7 +6883,7 @@ namespace TL public abstract class InputChannelBase : IObject { /// Channel ID - public virtual long ChannelId { get; } + public virtual long ChannelId { get; set; } } /// Represents a channel See [TLDef(0xF35AEC28)] @@ -6895,7 +6895,7 @@ namespace TL public long access_hash; /// Channel ID - public override long ChannelId => channel_id; + public override long ChannelId { get => channel_id; set => channel_id = value; } } /// Defines a min channel that was seen in a certain message of a certain chat. See [TLDef(0x5B934F9D)] @@ -6909,7 +6909,7 @@ namespace TL public long channel_id; /// The channel ID - public override long ChannelId => channel_id; + public override long ChannelId { get => channel_id; set => channel_id = value; } } /// Resolved peer See @@ -7445,9 +7445,9 @@ namespace TL public abstract class InputBotInlineResultBase : IObject { /// ID of result - public virtual string ID { get; } + public virtual string ID { get; set; } /// Message to send when the result is selected - public virtual InputBotInlineMessage SendMessage { get; } + public virtual InputBotInlineMessage SendMessage { get; set; } } /// An inline bot result See [TLDef(0x88BF9319)] @@ -7487,9 +7487,9 @@ namespace TL } /// ID of result - public override string ID => id; + public override string ID { get => id; set => id = value; } /// Message to send when the result is selected - public override InputBotInlineMessage SendMessage => send_message; + public override InputBotInlineMessage SendMessage { get => send_message; set => send_message = value; } } /// Photo See [TLDef(0xA8D864A7)] @@ -7505,9 +7505,9 @@ namespace TL public InputBotInlineMessage send_message; /// Result ID - public override string ID => id; + public override string ID { get => id; set => id = value; } /// Message to send when the result is selected - public override InputBotInlineMessage SendMessage => send_message; + public override InputBotInlineMessage SendMessage { get => send_message; set => send_message = value; } } /// Document (media of any type except for photos) See [TLDef(0xFFF8FDC4)] @@ -7537,9 +7537,9 @@ namespace TL } /// Result ID - public override string ID => id; + public override string ID { get => id; set => id = value; } /// Message to send when the result is selected - public override InputBotInlineMessage SendMessage => send_message; + public override InputBotInlineMessage SendMessage { get => send_message; set => send_message = value; } } /// Game See [TLDef(0x4FA417F2)] @@ -7553,9 +7553,9 @@ namespace TL public InputBotInlineMessage send_message; /// Result ID - public override string ID => id; + public override string ID { get => id; set => id = value; } /// Message to send when the result is selected - public override InputBotInlineMessage SendMessage => send_message; + public override InputBotInlineMessage SendMessage { get => send_message; set => send_message = value; } } /// Inline message See Derived classes: , , , , , @@ -8073,9 +8073,9 @@ namespace TL public abstract class InputBotInlineMessageIDBase : IObject { /// DC ID to use when working with this inline message - public virtual int DcId { get; } + public virtual int DcId { get; set; } /// Access hash of message - public virtual long AccessHash { get; } + public virtual long AccessHash { get; set; } } /// Represents a sent inline message from the perspective of a bot (legacy constructor) See [TLDef(0x890C3D89)] @@ -8089,9 +8089,9 @@ namespace TL public long access_hash; /// DC ID to use when working with this inline message - public override int DcId => dc_id; + public override int DcId { get => dc_id; set => dc_id = value; } /// Access hash of message - public override long AccessHash => access_hash; + public override long AccessHash { get => access_hash; set => access_hash = value; } } /// Represents a sent inline message from the perspective of a bot See [TLDef(0xB6D915D7)] @@ -8107,9 +8107,9 @@ namespace TL public long access_hash; /// DC ID to use when working with this inline message - public override int DcId => dc_id; + public override int DcId { get => dc_id; set => dc_id = value; } /// Access hash of message - public override long AccessHash => access_hash; + public override long AccessHash { get => access_hash; set => access_hash = value; } } /// The bot requested the user to message them in private See @@ -9049,7 +9049,7 @@ namespace TL } /// Remote document See Derived classes: , - public abstract class WebDocumentBase : IObject + public abstract partial class WebDocumentBase : IObject { /// Document URL public virtual string Url { get; } @@ -10611,7 +10611,7 @@ namespace TL public abstract class InputSecureFileBase : IObject { /// Secure file ID - public virtual long ID { get; } + public virtual long ID { get; set; } } /// Uploaded secure file, for more info see the passport docs » See [TLDef(0x3334B0F0)] @@ -10629,7 +10629,7 @@ namespace TL public byte[] secret; /// Secure file ID - public override long ID => id; + public override long ID { get => id; set => id = value; } } /// Pre-uploaded passport file, for more info see the passport docs » See [TLDef(0x5367E5BE)] @@ -10641,7 +10641,7 @@ namespace TL public long access_hash; /// Secure file ID - public override long ID => id; + public override long ID { get => id; set => id = value; } } /// Secure passport file, for more info see the passport docs » See diff --git a/src/WTelegramClient.csproj b/src/WTelegramClient.csproj index 46d77cb..1f36516 100644 --- a/src/WTelegramClient.csproj +++ b/src/WTelegramClient.csproj @@ -28,11 +28,6 @@ TRACE;OBFUSCATION - - - - -