#ifndef COMPONENTS_DATA_SHARING_PUBLIC_DATA_SHARING_NETWORK_LOADER_H_
#define COMPONENTS_DATA_SHARING_PUBLIC_DATA_SHARING_NETWORK_LOADER_H_
#include <memory>
#include <string>
#include <vector>
#include "base/functional/callback_forward.h"
#include "components/data_sharing/public/group_data.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
class GURL;
namespace data_sharing {
class DataSharingNetworkLoader {
public:
enum class NetworkLoaderStatus {
kUnknown = 0,
kSuccess = 1,
kTransientFailure = 2,
kPersistentFailure = 3
};
enum class DataSharingRequestType {
kUnknown = 0,
kCreateGroup = 1,
kReadGroups = 2,
kReadAllGroups = 3,
kUpdateGroup = 4,
kDeleteGroups = 5,
kTestRequest = 6,
kWarmup = 7,
kAutocomplete = 8,
kLookup = 9,
kMutateConnectionLabel = 10,
kBlockPerson = 11,
kLeaveGroup = 12,
kJoinGroup = 13,
};
struct LoadResult {
LoadResult();
LoadResult(std::string result_bytes,
NetworkLoaderStatus status,
int network_error_code);
~LoadResult();
std::string result_bytes;
NetworkLoaderStatus status;
int network_error_code;
};
using NetworkLoaderCallback =
base::OnceCallback<void(std::unique_ptr<LoadResult>)>;
DataSharingNetworkLoader() = default;
virtual ~DataSharingNetworkLoader() = default;
DataSharingNetworkLoader(const DataSharingNetworkLoader&) = delete;
DataSharingNetworkLoader& operator=(const DataSharingNetworkLoader&) = delete;
virtual void LoadUrl(const GURL& gurl,
const std::string& post_data,
DataSharingRequestType requestType,
NetworkLoaderCallback callback) = 0;
};
}
#endif