http_client.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #pragma once
  2. #include "fwd.h"
  3. #include <yt/cpp/mapreduce/interface/fwd.h>
  4. #include <util/datetime/base.h>
  5. #include <util/generic/maybe.h>
  6. #include <util/generic/string.h>
  7. #include <util/stream/fwd.h>
  8. namespace NYT::NHttpClient {
  9. ////////////////////////////////////////////////////////////////////////////////
  10. struct THttpConfig
  11. {
  12. TDuration SocketTimeout = TDuration::Zero();
  13. };
  14. ////////////////////////////////////////////////////////////////////////////////
  15. class IHttpResponse
  16. {
  17. public:
  18. virtual ~IHttpResponse() = default;
  19. virtual int GetStatusCode() = 0;
  20. virtual IInputStream* GetResponseStream() = 0;
  21. virtual TString GetResponse() = 0;
  22. virtual TString GetRequestId() const = 0;
  23. };
  24. class IHttpRequest
  25. {
  26. public:
  27. virtual ~IHttpRequest() = default;
  28. virtual IOutputStream* GetStream() = 0;
  29. virtual IHttpResponsePtr Finish() = 0;
  30. };
  31. class IHttpClient
  32. {
  33. public:
  34. virtual ~IHttpClient() = default;
  35. virtual IHttpResponsePtr Request(const TString& url, const TString& requestId, const THttpConfig& config, const THttpHeader& header, TMaybe<TStringBuf> body = {}) = 0;
  36. virtual IHttpResponsePtr Request(const TString& url, const TString& requestId, const THttpHeader& header, TMaybe<TStringBuf> body = {})
  37. {
  38. return Request(url, requestId, /*config*/ {}, header, body);
  39. }
  40. virtual IHttpRequestPtr StartRequest(const TString& url, const TString& requestId, const THttpConfig& config, const THttpHeader& header) = 0;
  41. virtual IHttpRequestPtr StartRequest(const TString& url, const TString& requestId, const THttpHeader& header)
  42. {
  43. return StartRequest(url, requestId, /*config*/ {}, header);
  44. }
  45. };
  46. ////////////////////////////////////////////////////////////////////////////////
  47. IHttpClientPtr CreateDefaultHttpClient();
  48. IHttpClientPtr CreateCoreHttpClient(bool useTLS, const TConfigPtr& config);
  49. ////////////////////////////////////////////////////////////////////////////////
  50. } // namespace NYT::NHttpClient