CXuesong / WikiClientLibrary

/*🌻*/ Wiki Client Library is an asynchronous MediaWiki API client library targeting modern .NET platforms
https://github.com/CXuesong/WikiClientLibrary/wiki
Apache License 2.0
80 stars 16 forks source link

unknown_action seems to be merged into badvalue since 1.35.0-wmf.19 #65

Closed CXuesong closed 4 years ago

CXuesong commented 4 years ago

This is causing WCL throwing OperationFailedException (badvalue) instead of InvalidActionException upon invalid action= value.

Endpoint

https://test2.wikipedia.org/w/api.php on wikimedia/mediawiki@73e5f38771863f3b16d0c8ae65ebb131dc84d648.

Failed CI run

https://github.com/CXuesong/WikiClientLibrary/commit/c0037a6ab9bf99123151f0c93b00fa15ad1a74e1/checks?check_suite_id=461980978

Failed output

2020-02-17T15:04:09.0469117Z   X WikiClientLibrary.Tests.UnitTestProject1.Tests.WebClientTests.TestMethod2 [559ms]
2020-02-17T15:04:09.0469810Z   Error Message:
2020-02-17T15:04:09.0470143Z    Assert.Throws() Failure
2020-02-17T15:04:09.0470383Z Expected: typeof(WikiClientLibrary.InvalidActionException)
2020-02-17T15:04:09.0470635Z Actual:   typeof(WikiClientLibrary.OperationFailedException): badvalue: Unrecognized value for parameter "action": invalid_action_test.
2020-02-17T15:04:09.0471527Z ---- WikiClientLibrary.OperationFailedException : badvalue: Unrecognized value for parameter "action": invalid_action_test.
2020-02-17T15:04:09.0471883Z   Stack Trace:
2020-02-17T15:04:09.0472140Z      at WikiClientLibrary.Client.MediaWikiJsonResponseParser.OnApiError(String errorCode, String errorMessage, JToken errorNode, JToken responseNode, WikiResponseParsingContext context) in /home/runner/work/WikiClientLibrary/WikiClientLibrary/WikiClientLibrary/Client/MediaWikiJsonResponseParser.cs:line 210
2020-02-17T15:04:09.0472475Z    at WikiClientLibrary.Client.MediaWikiJsonResponseParser.ParseResponseAsync(HttpResponseMessage response, WikiResponseParsingContext context) in /home/runner/work/WikiClientLibrary/WikiClientLibrary/WikiClientLibrary/Client/MediaWikiJsonResponseParser.cs:line 88
2020-02-17T15:04:09.0472786Z    at WikiClientLibrary.Client.WikiResponseMessageParser`1.WikiClientLibrary.Client.IWikiResponseMessageParser<T>.ParseResponseAsync(HttpResponseMessage response, WikiResponseParsingContext context)
2020-02-17T15:04:09.0473078Z    at WikiClientLibrary.Client.WikiClient.SendAsync[T](String endPointUrl, WikiRequestMessage message, IWikiResponseMessageParser`1 responseParser, CancellationToken cancellationToken) in /home/runner/work/WikiClientLibrary/WikiClientLibrary/WikiClientLibrary/Client/WikiClient.cs:line 269
2020-02-17T15:04:09.0473383Z    at WikiClientLibrary.Client.WikiClient.SendAsync[T](String endPointUrl, WikiRequestMessage message, IWikiResponseMessageParser`1 responseParser, CancellationToken cancellationToken) in /home/runner/work/WikiClientLibrary/WikiClientLibrary/WikiClientLibrary/Client/WikiClient.cs:line 285
2020-02-17T15:04:09.0473674Z    at WikiClientLibrary.Client.WikiClient.InvokeAsync[T](String endPointUrl, WikiRequestMessage message, IWikiResponseMessageParser`1 responseParser, CancellationToken cancellationToken)
2020-02-17T15:04:09.0474135Z ----- Inner Stack Trace -----
2020-02-17T15:04:09.0474473Z    at WikiClientLibrary.Client.MediaWikiJsonResponseParser.OnApiError(String errorCode, String errorMessage, JToken errorNode, JToken responseNode, WikiResponseParsingContext context) in /home/runner/work/WikiClientLibrary/WikiClientLibrary/WikiClientLibrary/Client/MediaWikiJsonResponseParser.cs:line 210
2020-02-17T15:04:09.0474794Z    at WikiClientLibrary.Client.MediaWikiJsonResponseParser.ParseResponseAsync(HttpResponseMessage response, WikiResponseParsingContext context) in /home/runner/work/WikiClientLibrary/WikiClientLibrary/WikiClientLibrary/Client/MediaWikiJsonResponseParser.cs:line 88
2020-02-17T15:04:09.0475083Z    at WikiClientLibrary.Client.WikiResponseMessageParser`1.WikiClientLibrary.Client.IWikiResponseMessageParser<T>.ParseResponseAsync(HttpResponseMessage response, WikiResponseParsingContext context)
2020-02-17T15:04:09.0475383Z    at WikiClientLibrary.Client.WikiClient.SendAsync[T](String endPointUrl, WikiRequestMessage message, IWikiResponseMessageParser`1 responseParser, CancellationToken cancellationToken) in /home/runner/work/WikiClientLibrary/WikiClientLibrary/WikiClientLibrary/Client/WikiClient.cs:line 269
2020-02-17T15:04:09.0475684Z    at WikiClientLibrary.Client.WikiClient.SendAsync[T](String endPointUrl, WikiRequestMessage message, IWikiResponseMessageParser`1 responseParser, CancellationToken cancellationToken) in /home/runner/work/WikiClientLibrary/WikiClientLibrary/WikiClientLibrary/Client/WikiClient.cs:line 285
2020-02-17T15:04:09.0476188Z    at WikiClientLibrary.Client.WikiClient.InvokeAsync[T](String endPointUrl, WikiRequestMessage message, IWikiResponseMessageParser`1 responseParser, CancellationToken cancellationToken)
2020-02-17T15:04:09.0476438Z   Standard Output Messages:
2020-02-17T15:04:09.0476726Z  Warning: WikiClientLibrary.Client.WikiClient
2020-02-17T15:04:09.0477613Z            -> WikiClient#32964808 -> ::InvokeAsync(29CC16930000024A)
2020-02-17T15:04:09.0478191Z           API error: badvalue - Unrecognized value for parameter "action": invalid_action_test.
2020-02-17T15:04:09.0478498Z  Warning: WikiClientLibrary.Client.WikiClient
2020-02-17T15:04:09.0479142Z            -> WikiClient#32964808 -> ::InvokeAsync(29CC16930000024A)
2020-02-17T15:04:09.0479683Z           Parser WikiClientLibrary.Client.MediaWikiJsonResponseParser throws an Exception.
2020-02-17T15:04:09.0480414Z           WikiClientLibrary.OperationFailedException: badvalue: Unrecognized value for parameter "action": invalid_action_test.
2020-02-17T15:04:09.0480813Z     at WikiClientLibrary.Client.MediaWikiJsonResponseParser.OnApiError(String errorCode, String errorMessage, JToken errorNode, JToken responseNode, WikiResponseParsingContext context) in /home/runner/work/WikiClientLibrary/WikiClientLibrary/WikiClientLibrary/Client/MediaWikiJsonResponseParser.cs:line 210
2020-02-17T15:04:09.0481233Z     at WikiClientLibrary.Client.MediaWikiJsonResponseParser.ParseResponseAsync(HttpResponseMessage response, WikiResponseParsingContext context) in /home/runner/work/WikiClientLibrary/WikiClientLibrary/WikiClientLibrary/Client/MediaWikiJsonResponseParser.cs:line 88
2020-02-17T15:04:09.0481615Z     at WikiClientLibrary.Client.WikiResponseMessageParser`1.WikiClientLibrary.Client.IWikiResponseMessageParser<T>.ParseResponseAsync(HttpResponseMessage response, WikiResponseParsingContext context)
2020-02-17T15:04:09.0482016Z     at WikiClientLibrary.Client.WikiClient.SendAsync[T](String endPointUrl, WikiRequestMessage message, IWikiResponseMessageParser`1 responseParser, CancellationToken cancellationToken) in /home/runner/work/WikiClientLibrary/WikiClientLibrary/WikiClientLibrary/Client/WikiClient.cs:line 269
CXuesong commented 4 years ago

Related announcement: https://lists.wikimedia.org/pipermail/mediawiki-api-announce/2020-February/000151.html

The error codes that may be changing are some of those representing invalid values for API parameters. Notably, the following will change:

  • "noX", indicating that a required parameter was not specified, becomes "missingparam".
  • "unknown_X", indicating that an unrecognized value was specified for an enumerated-value parameter, becomes "badvalue".
  • "too-many-X", indicating that too many values were supplied to a multi-valued parameter, becomes "toomanyvalues".
  • "baduser_X", "badtimestamp_X", and so on become "baduser", "badtimestamp", and so on.

Note this is not a comprehensive list, other codes may be changing as well.