#pragma once #include #include #include #include #include #include #include #include namespace NYql { class IFetchResult: public TThrRefBase { public: virtual THttpInput& GetStream() = 0; virtual unsigned GetRetCode() = 0; virtual THttpURL GetRedirectURL(const THttpURL& baseUrl) = 0; }; using TFetchResultPtr = TIntrusivePtr; THttpURL ParseURL(TStringBuf addr); IRetryPolicy::TPtr GetDefaultPolicy(); ERetryErrorClass DefaultClassifyHttpCode(unsigned code); THttpURL AppendUrlPath(const THttpURL& url, const TString& part); TFetchResultPtr Fetch(const THttpURL& url, const THttpHeaders& additionalHeaders = {}, const TDuration& timeout = TDuration::Max(), size_t redirects = 10, const IRetryPolicy::TPtr& policy = nullptr); TFetchResultPtr FetchEx(const THttpURL& url, TStringBuf method = "GET"_sb, TStringBuf body = {}, const THttpHeaders& additionalHeaders = {}, const TDuration& timeout = TDuration::Max(), size_t redirects = 10, const IRetryPolicy::TPtr& policy = nullptr); } // namespace NYql