1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*!********************************************************************
Audacity: A Digital Audio Editor
NetworkUtils.h
Dmitry Vedenko
**********************************************************************/
#pragma once
#include <chrono>
#include <string>
namespace audacity::network_manager
{
class IResponse;
class Request;
} // namespace audacity::network_manager
namespace audacity::cloud::audiocom
{
struct CLOUD_AUDIOCOM_API TransferStats final
{
using Duration = std::chrono::milliseconds;
int64_t BytesTransferred {};
int64_t BlocksTransferred {};
int64_t ProjectFilesTransferred {};
Duration TransferDuration {};
TransferStats& SetBytesTransferred(int64_t bytesTransferred);
TransferStats& SetBlocksTransferred(int64_t blocksTransferred);
TransferStats& SetProjectFilesTransferred(int64_t projectFilesTransferred);
TransferStats& SetTransferDuration(Duration transferDuration);
}; // struct TransferStats
enum class SyncResultCode
{
Success,
Cancelled,
Expired,
Conflict,
ConnectionFailed,
PaymentRequired,
TooLarge,
Unauthorized,
Forbidden,
NotFound,
UnexpectedResponse,
InternalClientError,
InternalServerError,
SyncImpossible,
UnknownError,
}; // enum class ResponseResultCode
struct ResponseResult final
{
SyncResultCode Code { SyncResultCode::Success };
std::string Content;
}; // struct ResponseResult
[[nodiscard]] ResponseResult GetResponseResult(
audacity::network_manager::IResponse& response, bool readBody);
void SetCommonHeaders(audacity::network_manager::Request& request);
void SetOptionalHeaders(audacity::network_manager::Request& request);
bool IsUploadRecoverable(SyncResultCode code);
} // namespace audacity::cloud::audiocom
|