Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revision IDs need to be long everywhere #113

Merged
merged 1 commit into from
Jun 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions WikiClientLibrary.Wikibase/Entity.Editing.cs
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ public async Task EditAsync(IEnumerable<EntityEditEntry> edits, string summary,
token = WikiSiteToken.Edit,
id = Id,
@new = Id == null ? FormatEntityType(Type) : null,
baserevid = LastRevisionId > 0 ? (int?)LastRevisionId : null,
baserevid = LastRevisionId > 0 ? (long?)LastRevisionId : null,
bot = (options & EntityEditOptions.Bot) == EntityEditOptions.Bot,
summary = summary,
clear = (options & EntityEditOptions.ClearData) == EntityEditOptions.ClearData,
Expand Down Expand Up @@ -258,7 +258,7 @@ private async Task ProgressiveEditAsync(IEnumerable<EntityEditEntry> edits, stri
token = WikiSiteToken.Edit,
id = Id,
@new = Id == null ? FormatEntityType(Type) : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (int?)LastRevisionId : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (long?)LastRevisionId : null,
bot = isBot,
summary = summary,
language = value.Language,
Expand All @@ -279,7 +279,7 @@ private async Task ProgressiveEditAsync(IEnumerable<EntityEditEntry> edits, stri
token = WikiSiteToken.Edit,
id = Id,
@new = Id == null ? FormatEntityType(Type) : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (int?)LastRevisionId : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (long?)LastRevisionId : null,
bot = isBot,
summary = summary,
language = value.Language,
Expand All @@ -306,7 +306,7 @@ private async Task ProgressiveEditAsync(IEnumerable<EntityEditEntry> edits, stri
token = WikiSiteToken.Edit,
id = Id,
@new = Id == null ? FormatEntityType(Type) : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (int?)LastRevisionId : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (long?)LastRevisionId : null,
bot = isBot,
summary = summary,
language = langGroup.Key,
Expand Down Expand Up @@ -344,7 +344,7 @@ private async Task ProgressiveEditAsync(IEnumerable<EntityEditEntry> edits, stri
token = WikiSiteToken.Edit,
id = Id,
@new = Id == null ? FormatEntityType(Type) : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (int?)LastRevisionId : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (long?)LastRevisionId : null,
bot = isBot,
summary = summary,
linksite = siteGroup.Key,
Expand Down Expand Up @@ -389,13 +389,13 @@ private async Task ProgressiveEditAsync(IEnumerable<EntityEditEntry> edits, stri
action = "wbsetclaim",
token = WikiSiteToken.Edit,
@new = Id == null ? FormatEntityType(Type) : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (int?)LastRevisionId : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (long?)LastRevisionId : null,
bot = isBot,
summary = summary,
claim = Utility.WikiJsonSerializer.Serialize(claimContract),
}), cancellationToken);
// jresult["claim"] != null
LastRevisionId = (int)jresult["pageinfo"]["lastrevid"];
LastRevisionId = (long)jresult["pageinfo"]["lastrevid"];
if (!strict) checkbaseRev = false;
}
foreach (var batch in prop.Where(e => e.State == EntityEditEntryState.Removed)
Expand All @@ -407,12 +407,12 @@ private async Task ProgressiveEditAsync(IEnumerable<EntityEditEntry> edits, stri
token = WikiSiteToken.Edit,
id = Id,
@new = Id == null ? FormatEntityType(Type) : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (int?)LastRevisionId : null,
baserevid = checkbaseRev && LastRevisionId > 0 ? (long?)LastRevisionId : null,
bot = isBot,
summary = summary,
claim = MediaWikiHelper.JoinValues(batch),
}), cancellationToken);
LastRevisionId = (int)jresult["pageinfo"]["lastrevid"];
LastRevisionId = (long)jresult["pageinfo"]["lastrevid"];
if (!strict) checkbaseRev = false;
}
break;
Expand All @@ -426,7 +426,7 @@ void LoadEntityMinimal(JToken jentity)
Debug.Assert(jentity != null);
Id = (string)jentity["id"];
Type = SerializableEntity.ParseEntityType((string)jentity["type"]);
LastRevisionId = (int)jentity["lastrevid"];
LastRevisionId = (long)jentity["lastrevid"];
}
}

Expand Down
2 changes: 1 addition & 1 deletion WikiClientLibrary/Generators/BacklinksGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public BacklinksGenerator(WikiSite site, string? targetTitle) : base(site)
/// <summary>
/// List pages linking to this page ID.
/// </summary>
public int? TargetPageId { get; set; }
public long? TargetPageId { get; set; }

/// <summary>
/// Only list pages in these namespaces.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ protected WikiPageGenerator(WikiSite site) : base(site)
/// <inheritdoc />
protected override WikiPageStub ItemFromJson(JToken json)
{
return new WikiPageStub((int)json["pageid"], (string)json["title"], (int)json["ns"]);
return new WikiPageStub((long)json["pageid"], (string)json["title"], (int)json["ns"]);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ protected WikiPagePropertyGenerator(WikiSite site, WikiPageStub pageStub) : base
protected override WikiPageStub ItemFromJson(JToken json, JObject jpage)
{
// pageid can be missing in this case.
return new WikiPageStub((int?)json["pageid"] ?? 0, (string)json["title"], (int)json["ns"]);
return new WikiPageStub((long?)json["pageid"] ?? 0, (string)json["title"], (int)json["ns"]);
}

}
2 changes: 1 addition & 1 deletion WikiClientLibrary/Generators/RandomPageGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public RandomPageGenerator(WikiSite site) : base(site)
protected override WikiPageStub ItemFromJson(JToken json)
{
// Note: page ID is contained in ["id"] rather than ["pageid"].
return new WikiPageStub((int)json["id"], (string)json["title"], (int)json["ns"]);
return new WikiPageStub((long)json["id"], (string)json["title"], (int)json["ns"]);
}

/// <summary>
Expand Down
6 changes: 3 additions & 3 deletions WikiClientLibrary/Infrastructures/MediaWikiHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -186,14 +186,14 @@ public static WikiPageStub PageStubFromJson(JObject jPage)
if (jPage["title"] != null)
return WikiPageStub.NewMissingPage((string)jPage["title"], (int)jPage["ns"]);
if (jPage["pageid"] != null)
return WikiPageStub.NewMissingPage((int)jPage["pageid"]);
return WikiPageStub.NewMissingPage((long)jPage["pageid"]);
return WikiPageStub.NewMissingPage(WikiPageStub.MissingPageIdMask);
}
if (jPage["pageid"] != null)
{
if (jPage["title"] != null)
return new WikiPageStub((int)jPage["pageid"], (string)jPage["title"], (int)jPage["ns"]);
return new WikiPageStub((int)jPage["pageid"]);
return new WikiPageStub((long)jPage["pageid"], (string)jPage["title"], (int)jPage["ns"]);
return new WikiPageStub((long)jPage["pageid"]);
}
if (jPage["title"] != null)
return new WikiPageStub((string)jPage["title"], (int)jPage["ns"]);
Expand Down
14 changes: 7 additions & 7 deletions WikiClientLibrary/Pages/Parsing/WikiSiteExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -131,20 +131,20 @@ public static async Task<ParsedContentInfo> ParsePageAsync(this WikiSite site, i
return parsed;
}

/// <inheritdoc cref="ParseRevisionAsync(WikiSite,int,string,ParsingOptions,CancellationToken)"/>
public static Task<ParsedContentInfo> ParseRevisionAsync(this WikiSite site, int revId)
/// <inheritdoc cref="ParseRevisionAsync(WikiSite,long,string,ParsingOptions,CancellationToken)"/>
public static Task<ParsedContentInfo> ParseRevisionAsync(this WikiSite site, long revId)
{
return ParseRevisionAsync(site, revId, null, ParsingOptions.None, CancellationToken.None);
}

/// <inheritdoc cref="ParseRevisionAsync(WikiSite,int,string,ParsingOptions,CancellationToken)"/>
public static Task<ParsedContentInfo> ParseRevisionAsync(this WikiSite site, int revId, ParsingOptions options)
/// <inheritdoc cref="ParseRevisionAsync(WikiSite,long,string,ParsingOptions,CancellationToken)"/>
public static Task<ParsedContentInfo> ParseRevisionAsync(this WikiSite site, long revId, ParsingOptions options)
{
return ParseRevisionAsync(site, revId, null, options, CancellationToken.None);
}

/// <inheritdoc cref="ParseRevisionAsync(WikiSite,int,string,ParsingOptions,CancellationToken)"/>
public static Task<ParsedContentInfo> ParseRevisionAsync(this WikiSite site, int revId, ParsingOptions options,
/// <inheritdoc cref="ParseRevisionAsync(WikiSite,long,string,ParsingOptions,CancellationToken)"/>
public static Task<ParsedContentInfo> ParseRevisionAsync(this WikiSite site, long revId, ParsingOptions options,
CancellationToken cancellationToken)
{
return ParseRevisionAsync(site, revId, null, options, CancellationToken.None);
Expand All @@ -159,7 +159,7 @@ public static Task<ParsedContentInfo> ParseRevisionAsync(this WikiSite site, int
/// <param name="options">Options for parsing.</param>
/// <param name="cancellationToken">The cancellation token that will be checked prior to completing the returned task.</param>
/// <exception cref="ArgumentOutOfRangeException"><paramref name="revId"/> is zero or negative.</exception>
public static async Task<ParsedContentInfo> ParseRevisionAsync(this WikiSite site, int revId, string? lang, ParsingOptions options,
public static async Task<ParsedContentInfo> ParseRevisionAsync(this WikiSite site, long revId, string? lang, ParsingOptions options,
CancellationToken cancellationToken)
{
if (site == null) throw new ArgumentNullException(nameof(site));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ protected internal PageInfoPropertyGroup(JObject jPage)
else
{
ContentLength = (int)jPage["length"];
LastRevisionId = (int)jPage["lastrevid"];
LastRevisionId = (long)jPage["lastrevid"];
LastTouched = (DateTime)jPage["touched"];
if (jPage["protection"] != null && jPage["protection"].HasValues)
Protections = jPage["protection"].ToObject<IReadOnlyCollection<ProtectionInfo>>(Utility.WikiJsonSerializer);
Expand Down
4 changes: 2 additions & 2 deletions WikiClientLibrary/Pages/WikiPage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -475,11 +475,11 @@ private async Task<bool> EditAsync(WikiPageEditOptions options, string? sectionI
return false;
}
ContentModel = (string)jedit["contentmodel"];
LastRevisionId = (int)jedit["newrevid"];
LastRevisionId = (long)jedit["newrevid"];
LastRevision = null;
pageInfo = null;
// jedit["ns"] == null
PageStub = new WikiPageStub((int)jedit["pageid"], (string)jedit["title"], PageStub.NamespaceId);
PageStub = new WikiPageStub((long)jedit["pageid"], (string)jedit["title"], PageStub.NamespaceId);
Site.Logger.LogInformation("Edited page. New revid={RevisionId}.", LastRevisionId);
return true;
}
Expand Down
2 changes: 1 addition & 1 deletion WikiClientLibrary/Pages/WikiPageStub.cs
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ public static async IAsyncEnumerable<WikiPageStub> FromPageTitles(WikiSite site,
normalizedName = name;
var jpage = pageDict[normalizedName];
if (jpage["missing"] == null)
yield return (new WikiPageStub((int)jpage["pageid"], (string)jpage["title"], (int)jpage["ns"]));
yield return (new WikiPageStub((long)jpage["pageid"], (string)jpage["title"], (int)jpage["ns"]));
else
yield return (new WikiPageStub(MissingPageIdMask, (string)jpage["title"], (int)jpage["ns"]));
}
Expand Down
Loading