Skip to content

Commit

Permalink
Merge pull request #113 from mormegil-cz/bugfix/long-revids
Browse files Browse the repository at this point in the history
Revision IDs need to be long everywhere
  • Loading branch information
CXuesong committed Jun 10, 2024
2 parents 85d9730 + b640983 commit cd4e6ca
Show file tree
Hide file tree
Showing 10 changed files with 28 additions and 28 deletions.
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

0 comments on commit cd4e6ca

Please sign in to comment.