// OpenAI, Copyright LifeEXE. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Provider/OpenAIProvider.h" #include "OpenAIProviderFake.generated.h" class FFakeHttpResponse : public IHttpResponse { public: FFakeHttpResponse(const FString& ResponseStr) : ReponseData(ResponseStr) {} virtual int32 GetResponseCode() const override { return static_cast(EHttpResponseCodes::Ok); } virtual FString GetContentAsString() const override { return ReponseData; } virtual FString GetURL() const override { return FString(); } virtual FString GetURLParameter(const FString& ParameterName) const override { return FString(); } virtual FString GetHeader(const FString& HeaderName) const override { return FString(); } virtual TArray GetAllHeaders() const override { return TArray(); } virtual FString GetContentType() const override { return FString(); } virtual uint64 GetContentLength() const override { return uint64(); } virtual const TArray& GetContent() const override { static TArray None; return None; } private: FString ReponseData; }; class FFakeHttpRequest : public IHttpRequest { public: FFakeHttpRequest(const FString& ResponseStr) : ReponseData(ResponseStr) {} virtual FString GetURL() const override { return FString(); } virtual FHttpRequestWillRetryDelegate& OnRequestWillRetry() override { return HttpRequestWillRetryDelegate; } virtual FString GetURLParameter(const FString& ParameterName) const override { return FString(); } virtual FString GetHeader(const FString& HeaderName) const override { return FString(); } virtual TArray GetAllHeaders() const override { return TArray(); } virtual FString GetContentType() const override { return FString(); } virtual uint64 GetContentLength() const override { return uint64(); } virtual const TArray& GetContent() const override { static TArray None; return None; } virtual FString GetVerb() const override { return FString{}; } virtual void SetVerb(const FString& Verb) override {} virtual void SetURL(const FString& URL) override {} virtual void SetContent(const TArray& ContentPayload) override {} virtual void SetContent(TArray&& ContentPayload) override {} virtual void SetContentAsString(const FString& ContentString) override {} virtual bool SetContentAsStreamedFile(const FString& Filename) override { return false; } virtual bool SetContentFromStream(TSharedRef Stream) override { return false; } virtual void SetHeader(const FString& HeaderName, const FString& HeaderValue) override {} virtual void AppendToHeader(const FString& HeaderName, const FString& AdditionalHeaderValue) override {} virtual void SetTimeout(float InTimeoutSecs) override {} virtual void ClearTimeout() override {} virtual TOptional GetTimeout() const override { return TOptional(); } virtual bool ProcessRequest() override { HttpRequestCompleteDelegate.Execute(SharedThis(this), GetResponse(), true); return true; } virtual FHttpRequestCompleteDelegate& OnProcessRequestComplete() override { return HttpRequestCompleteDelegate; } virtual FHttpRequestProgressDelegate& OnRequestProgress() override { return HttpRequestProgressDelegate; } virtual FHttpRequestHeaderReceivedDelegate& OnHeaderReceived() override { return HttpHeaderReceivedDelegate; } virtual void CancelRequest() override {} virtual EHttpRequestStatus::Type GetStatus() const override { return EHttpRequestStatus::Type::NotStarted; } virtual const FHttpResponsePtr GetResponse() const override { return MakeShareable(new FFakeHttpResponse(ReponseData)); } virtual void Tick(float DeltaSeconds) override {} virtual float GetElapsedTime() const override { return float{}; } virtual bool SetResponseBodyReceiveStream(TSharedRef Stream) override { return false; } virtual void SetDelegateThreadPolicy(EHttpRequestDelegateThreadPolicy InThreadPolicy) override {} virtual EHttpRequestDelegateThreadPolicy GetDelegateThreadPolicy() const override { return EHttpRequestDelegateThreadPolicy::CompleteOnGameThread; } public: FHttpRequestProgressDelegate HttpRequestProgressDelegate; FHttpRequestCompleteDelegate HttpRequestCompleteDelegate; FHttpRequestHeaderReceivedDelegate HttpHeaderReceivedDelegate; FHttpRequestWillRetryDelegate HttpRequestWillRetryDelegate; private: FString ReponseData; }; UCLASS() class OPENAITESTRUNNER_API UOpenAIProviderFake : public UOpenAIProvider { GENERATED_BODY() public: void SetResponse(const FString& ResponseStr) { ReponseData = ResponseStr; }; private: FString ReponseData; virtual TSharedRef CreateRequest() const override { // return MakeShareable(new FFakeHttpRequest(ReponseData)); } };