blob: b2b1adc3040c203f9a74ff0545a4151b2015a524 [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ASH_QUICK_PAIR_REPOSITORY_HTTP_FETCHER_H_
#define ASH_QUICK_PAIR_REPOSITORY_HTTP_FETCHER_H_
#include "ash/quick_pair/common/fast_pair/fast_pair_http_result.h"
#include "base/callback.h"
#include "base/memory/weak_ptr.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "url/gurl.h"
namespace ash {
namespace quick_pair {
using FetchCompleteCallback =
base::OnceCallback<void(std::unique_ptr<std::string>,
std::unique_ptr<FastPairHttpResult>)>;
// Makes HTTP GET requests and returns the response.
class HttpFetcher {
public:
HttpFetcher();
HttpFetcher(const HttpFetcher&) = delete;
HttpFetcher& operator=(const HttpFetcher&) = delete;
virtual ~HttpFetcher();
// Performs a GET request to the desired URL and returns the response, if
// available, as a string to the provided |callback|.
virtual void ExecuteGetRequest(const GURL& url,
FetchCompleteCallback callback) = 0;
// Performs a POST request to the desired URL and returns the response, if
// available, as a string to the provided |callback|.
virtual void ExecutePostRequest(const GURL& url,
const std::string& body,
FetchCompleteCallback callback);
// Performs a DELETE request to the desired URL and returns the response, if
// available, as a string to the provided |callback|.
virtual void ExecuteDeleteRequest(const GURL& url,
FetchCompleteCallback callback);
protected:
enum class RequestType {
GET = 0,
POST = 1,
DELETE = 2,
};
};
} // namespace quick_pair
} // namespace ash
#endif // ASH_QUICK_PAIR_REPOSITORY_HTTP_FETCHER_H_