1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-15 17:57:29 +08:00
Commit Graph

58 Commits

Author SHA1 Message Date
Dean Herbert
3a5324c947 Fix aborting an APIRequest potentially resulting in incorrect success 2021-07-29 13:01:52 +09:00
Dean Herbert
1ed4fdd5f5 Avoid deserialisation JSON request content when error is not present (or not relevant) 2021-07-28 20:13:40 +09:00
Dean Herbert
57e5f5575a Fix derived API request types firing success when they shouldn't
The usual case of `virtual`/`override` being dangerous when logic is
added to the base implementation. As such, I've removed this completely.
2021-07-22 14:23:27 +09:00
Dean Herbert
80c2b1449b Fix API request potentially firing failed events after completion
Specifically, `Cancel()` calls were not thread safe. Due to a series of
events, `ListPollingComponent` could call `Cancel` from a non-update
thread, leading to a race condition where both a `Success` and `Fail`
event can be fired.

This is intended to be the simplest fix possible, locking and guarding
specifically on the callbacks. Further work could be done in the future
to improve the flow surrounding `pendingFailure`, potentially reducing
redundant work and cleaning up the code, but that's not happening here.

Closes https://github.com/ppy/osu/issues/13632.
2021-07-19 20:27:01 +09:00
Dean Herbert
ce452565f4 Avoid firing any kind of failures after success 2021-03-23 17:50:31 +09:00
Dean Herbert
f5ba746ae5 Fail all API requests sent to DummyAPIAccess
Until now, API requests sent to dummy API were just lost in the void. In most cases this somehow worked as expected, but any logic which is waiting on a request to finish will potentially never get a response.

Going forward, I'm not 100% sure that every `Wait` on a web response will have local timeout logic (I think there is a certain amount of assumption that this is being managed for us by `APIAccess`), so I've made this change to better handle such cases going forward. Now, rather than nothing happening, requests will trigger a failure via the existing exception logic rather than silently pretending the request never arrived.
2021-03-23 17:37:45 +09:00
Dean Herbert
323da82477 Add website root URL and update most links to use it
For what it's worth, I intentionally didn't include news / changelog /
supporter, because these should never change.
2020-12-24 18:11:42 +09:00
smoogipoo
8e8a11bb72 Add APIRequest.TriggerFailure() for testing 2020-07-31 20:55:26 +09:00
Dean Herbert
7fe69bb199 Fix some web requests retrieving the user too early 2020-07-14 13:07:17 +09:00
alex
0e2ccac33b Add spaces to comments 2020-05-04 18:36:24 -07:00
Dean Herbert
801f02a3d7 Fix inline executions of APIRequest.Perform not getting result populated early enough 2020-04-20 17:48:02 +09:00
Dean Herbert
1c8a71b284 Exception instead of assert 2020-04-13 21:24:47 +09:00
Dean Herbert
c96df97586 Add support for non-generic requests 2020-04-11 18:02:49 +09:00
Dean Herbert
415adecdf6 Add support for Result fetching 2020-04-11 18:02:43 +09:00
Dean Herbert
832822858c Add basic request / response support 2020-04-11 17:48:23 +09:00
Dean Herbert
7ecce713bb Keep provided IDs where possible if not online 2020-03-30 15:07:39 +09:00
smoogipoo
2187523bf3 Fix json web requests having incorrect user agents 2020-01-17 19:21:27 +09:00
Dean Herbert
0d8b4e7c3e Fix user agent missing in registration 2020-01-16 12:51:43 +09:00
Roman Kapustin
e8bcb52612 Set UserAgent for API requests 2019-12-28 18:07:55 +03:00
Huo Yaoyuan
d7b3578cc6 CA2201: throw correct exception type. 2019-12-17 13:00:02 +08:00
Dean Herbert
45514ff660 Apply fixes 2019-11-25 11:30:55 +09:00
Dean Herbert
19dfbb0a45 Update obsolete usages 2019-11-21 10:55:31 +09:00
Dean Herbert
58df6930b2 Get error message from server 2019-11-12 19:34:20 +09:00
Dean Herbert
c83db94eb7 Use isolated storage/api 2019-09-25 15:00:08 +09:00
Dean Herbert
90acc9b6ca Avoid calling api request callback after user cancel 2019-06-25 13:52:43 +09:00
Dean Herbert
f0114d776d Use interface to access API
Allows for better testability.
2019-03-13 12:58:18 +09:00
Dean Herbert
26d53d06a9 Fix remaining issues 2019-02-28 13:31:40 +09:00
Dean Herbert
8617aaa2a7 Update licence header (and remove year) 2019-01-24 17:43:03 +09:00
Dean Herbert
bfbd7e5106 Merge remote-tracking branch 'upstream/master' into timeshift-wip 2018-12-26 22:42:24 +09:00
smoogipoo
bee4e8ad28 Fix cancelled webrequests triggering exceptions 2018-12-26 21:17:10 +09:00
smoogipoo
5d59a1ffca Merge remote-tracking branch 'origin/master' into timeshift-wip
# Conflicts:
#	osu.Game.Tests/Visual/TestCasePollingComponent.cs
#	osu.Game/Online/API/APIRequest.cs
#	osu.Game/osu.Game.csproj
2018-12-21 12:51:31 +09:00
Dean Herbert
6088612a26 Remove all retry logic and simplify overall handling of API requests 2018-12-18 20:20:17 +09:00
smoogipoo
87ebb00f1c Make Target abstract (should absolutely always be set) 2018-12-12 19:03:27 +09:00
Dean Herbert
21c8ef576c Expose result for synchronous consumption 2018-06-08 14:37:48 +09:00
Dean Herbert
b265f02d56 Add comment about scheduled invocation 2018-06-08 14:37:27 +09:00
Dean Herbert
645f6efce7 Fix web request failures not being correctly handled at an APIRequest level 2018-06-03 13:01:52 +09:00
Dean Herbert
32a74f95a5 Normalize all the line endings 2018-04-13 18:26:38 +09:00
Dean Herbert
ce2997419a Expose API scheduling internally 2018-03-14 11:37:50 +09:00
Dean Herbert
e0d28564d0 Move import logic to shared implementation 2018-02-15 14:22:39 +09:00
Dean Herbert
37d393bca0 Update licence headers 2018-01-05 20:21:19 +09:00
smoogipoo
cd5324f1d1 Update API code to use the new Add* methods on requests 2017-10-30 21:33:44 +09:00
smoogipoo
f94505243d Use AllowRetryOnTimeout where to maintain previous functionality 2017-10-30 17:28:53 +09:00
smoogipoo
b59401357e Remove singular RetryCount usage, update framework 2017-10-27 12:53:08 +09:00
smoogipoo
bfee3317aa Update WebRequest usage in-line with framework 2017-10-26 16:37:44 +09:00
Dean Herbert
8fab6abf90 Update WebRequest usage in line with framework changes 2017-10-23 14:46:17 +09:00
Huo Yaoyuan
2b11ecec13 Remove usings to extensions. 2017-09-24 06:03:52 +08:00
Huo Yaoyuan
c5aebf6401 Use TimeSpan to represent time. 2017-09-24 03:23:31 +08:00
Huo Yaoyuan
d277952e0f Use DateTimeOffset.ToUnixTime 2017-09-24 00:42:46 +08:00
Dean Herbert
314108146a Add a download API request 2017-08-24 20:14:17 +09:00
Dean Herbert
2b82f256d2
More resilient API cancel/fail logic. 2017-03-15 20:08:12 +09:00