aboutsummaryrefslogtreecommitdiff
path: root/lib/jobs/basejob.cpp
AgeCommit message (Collapse)Author
2020-03-30BaseJob: validate the connection health before running the requestKitsune Ral
2020-03-30BaseJob: shutdown timers on abandoning and destructionKitsune Ral
A part of the fix for #398.
2020-03-25BaseJob: Only send access token when neededKitsune Ral
This is a basic fix for #358, without a workaround added in 5937127b (such workaround would break API compatibility).
2020-03-25BaseJob: support M_USER_DEACTIVATED error codeKitsune Ral
Backport for #344.
2020-03-25Support for server notices rooms (MSC1452)Kitsune Ral
Fixes #326.
2019-04-16BaseJob: preserve the calculated error code if JSON error code is unknownKitsune Ral
Resetting the code to IncorrectRequestError has been a part of the cause for the incorrect Quaternion behaviour on expired tokens.
2019-04-15BaseJob: fix a possible crash upon logoutKitsune Ral
See https://github.com/QMatrixClient/Quaternion/issues/566 for details.
2019-04-04Clean up on clang-tidy/clazy analysisKitsune Ral
2019-03-14Fix read receipts and redactions on v3 roomsKitsune Ral
Previously slashes in eventIds (that come plenty in v3 due to base64 encoding) were not properly encoded - they are now.
2019-02-27BaseJob::abandon() fixesKitsune Ral
1. It should work with non-started jobs now (Closes #289). 2. It should allow clients to still handle `finished()` instead of cutting them off right before emitting the signal.
2019-02-20BaseJob: M_UNSUPPORTED_ROOM_VERSION & M_INCOMPATIBLE_ROOM_VERSIONKitsune Ral
2018-11-19BaseJob::rawDataSample()Kitsune Ral
A new recommended (and localisable) way of getting a piece of raw response to display next to error messages as "details". BaseJob::rawData() returns exactly the trimmed piece of data, no "truncated" suffix there anymore.
2018-10-10add http2 and pipelining for all JobsKrombel
2018-09-16BaseJob::rawData: only add "truncated" when actually truncatedKitsune Ral
2018-07-04Use QStringLiteral() and operator"" _ls() in network jobsKitsune Ral
2018-07-04Connection: Trim raw data in emitted signalsKitsune Ral
If the payload is too large, an attempt to allocate a QString out of QByteArray may end with qBadAlloc(). So by default the data emitted in case of error are trimmed to 64KiB, and this can be overridden to a different value (or switched off entirely with <n>=0) by adding - DTRIM_RAW_DATA=<n> to CPP_FLAGS.
2018-06-11BaseJob: Drop 'error' from methods that work in normal job state tooKitsune Ral
2018-06-02BaseJob: fix error handling for M_CONSENT_NOT_GIVENKitsune Ral
2018-05-30BaseJob::setStatus: Don't try to remove access token if it's emptyKitsune Ral
Closes #210.
2018-05-29BaseJob: Treat M_CONSENT_NOT_GIVEN separately from other content access errorsKitsune Ral
Closes #207.
2018-05-29BaseJob: "background" switch; more extensive error reportingKitsune Ral
Running a request in background, aside from some tweaks on the network layer (see QNetworkRequest::BackgroundRequestAttribute), allows to distinguish jobs not immediately caused by user interaction (such as fetching thumbnails). This can be used to show or not show certain notifications in UI of clients. Error reporting has been extended with more methods: errorCaption() - a human-readable phrase calculated from the status code; intended to be shown as a dialog caption and in similar situations. errorRawData() - former errorDetails(), returns the raw response from the server. errorUrl() - returns a URL that may be useful with the error (e.g. for the upcoming "consent not given" error, this will have the policy URL). Connection::resultFailed() - a new signal emitted when _any_ BaseJob::failure() is emitted (enables centralised error handling across all network requests in clients). As a part of matching changes in Connection, callApi has an overload that allows to specify the policy; a custom enum instead of bool has been chosen for the parameter type, to avoid clashes with (arbitrary) types of job parameters.
2018-05-28BaseJob: support status trackingKitsune Ral
The newly introduced statusChanged() signal allows clients to be notified about the job state transitions.
2018-05-28BaseJob: refresh rotten comments about kill()Kitsune Ral
There is no more BaseJob::kill() for a very long time; we have abandon() instead, with a bit different meaning. Which, by the way, now emits finished() because that's what finished() has been for.
2018-05-23BaseJob: more careful error handling; unify and extend error signals in ↵Kitsune Ral
Connection (Note: this commit breaks back-compatibility.) BaseJob::gotReply() had a bold assumption that whenever there's no reasonable JSON body in case of error, that meant IncorrectRequestError (which of course was incorrect). This led to syncs dying in Quaternion because it (correctly) considered IncorrectRequestError to be grave enough to not retry. Closes #206. Also: don't dump the whole payload to logs, limit with initial 500 characters (closes #205)
2018-05-06Optimise #includes, eliminate some excess blank lines in lib/csapiKitsune Ral
2018-04-29Merge branch 'master' into kitsune-gtadKitsune Ral
2018-04-25BaseJob::doCheckReply: catch non-HTTP errors tooKitsune Ral
2018-04-25BaseJob: rewrite error detection using genuine HTTP codesKitsune Ral
Qt Network error codes don't represent well some cases. Closes #200.
2018-04-13Merge branch 'master' into kitsune-gtadKitsune Ral
2018-04-02BaseJob: set the status upon headers arrivalKitsune Ral
So that DownloadFileJob could figure if it should save the incoming payload to the file or it's the JSON details about the error.
2018-03-31Merge branch 'kitsune-install-target'Kitsune Ral
Closes #113.
2018-03-31Move source files to a separate folderKitsune Ral
It's been long overdue to separate them from the rest of the stuff (docs etc.). Also, this allows installing to a directory within the checked out git tree (say, ./install/, similar to ./build/).