@@ -69,7 +69,71 @@ FHttpRequestCompleteDelegate& URequestHandler::Process() const
6969 return Request->OnProcessRequestComplete ();
7070}
7171
72- void URequestHandler::ProcessAndThen (TFunction<void (UTexture2D*)> OnSuccess, FFailureCallback OnFailure)
72+
73+ void URequestHandler::ProcessAndThen (UResponseSignatureValidator& Validator, const TSuccessCallback<FString>& OnSuccess, const FFailureCallback& OnFailure, bool bUseValidator) const
74+ {
75+ if (bUseValidator && Validator.HasFoundTamperedResponse ())
76+ {
77+ UE_LOG (LogTemp, Error, TEXT (" Validator is null!" ));
78+ OnFailure (FSequenceError (RequestFail, " Validator is null." ));
79+ return ;
80+ }
81+
82+ Process ().BindLambda ([&Validator, bUseValidator, OnSuccess, OnFailure](FHttpRequestPtr Req, const FHttpResponsePtr& Response, const bool bWasSuccessful)
83+ {
84+ if (bWasSuccessful)
85+ {
86+ if (!bUseValidator || Validator.ValidateResponseSignature (Response))
87+ {
88+ UE_LOG (LogTemp, Log, TEXT (" Valid Signature or Validator skipped" ));
89+ OnSuccess (Response->GetContentAsString ());
90+ }
91+ else
92+ {
93+ UE_LOG (LogTemp, Log, TEXT (" Invalid Signature" ));
94+ OnFailure (FSequenceError (RequestFail, " Invalid response Signature" ));
95+ }
96+ }
97+ else
98+ {
99+ if (Response.IsValid ())
100+ {
101+ OnFailure (FSequenceError (RequestFail, " Request is invalid: " + Response->GetContentAsString ()));
102+ }
103+ else
104+ {
105+ OnFailure (FSequenceError (RequestFail, " Request failed: No response received!" ));
106+ }
107+ }
108+ });
109+ }
110+
111+ void URequestHandler::ProcessAndThen (const TSuccessCallback<FHttpResponsePtr>& OnSuccess,
112+ const FFailureCallback& OnFailure) const
113+ {
114+ Process ().BindLambda ([OnSuccess, OnFailure](FHttpRequestPtr Req, const FHttpResponsePtr& Response, const bool bWasSuccessful)
115+ {
116+ if (bWasSuccessful)
117+ {
118+ OnSuccess (Response);
119+ }
120+ else
121+ {
122+ if (!Response.IsValid ())
123+ OnFailure (FSequenceError (RequestFail, " The Request is invalid!" ));
124+ else
125+ {
126+ if (Response.IsValid ())
127+ OnFailure (FSequenceError (RequestFail, " The Request is invalid!" ));
128+ else
129+ OnFailure (FSequenceError (RequestFail, " Request failed: " + Response->GetContentAsString ()));
130+ }
131+ }
132+ });
133+ }
134+
135+
136+ void URequestHandler::ProcessAndThen (const TSuccessCallback<UTexture2D*>& OnSuccess, const FFailureCallback OnFailure) const
73137{
74138 Process ().BindLambda ([OnSuccess, OnFailure](FHttpRequestPtr Req, FHttpResponsePtr Response, bool bWasSuccessful)
75139 {
@@ -130,55 +194,3 @@ void URequestHandler::ProcessAndThen(TFunction<void(UTexture2D*)> OnSuccess, FFa
130194 OnFailure (FSequenceError (RequestFail, " Failed to build QR Image data" ));
131195 });// lambda
132196}
133-
134- void URequestHandler::ProcessAndThen (TFunction<void (FString)> OnSuccess, FFailureCallback OnFailure) const
135- {
136- Process ().BindLambda ([OnSuccess, OnFailure](FHttpRequestPtr Req, const FHttpResponsePtr& Response, const bool bWasSuccessful)
137- {
138- FString CurlCommand = FString::Printf (
139- TEXT (" curl -X %s \" %s\" -H \" Content-Type: application/json\" -H \" Accept: application/json\" -H \" X-Access-Key: %s\" --data \" %s\" " ),
140- *Req->GetVerb (),
141- *Req->GetURL (),
142- *Req->GetHeader (" X-Access-Key" ),
143- *FString (UTF8_TO_TCHAR (Req->GetContent ().GetData ())).Replace (TEXT (" \" " ), TEXT (" \\\" " ))
144- );
145-
146- SEQ_LOG_EDITOR (Log, TEXT (" %s" ), *CurlCommand);
147- SEQ_LOG_EDITOR (Log, TEXT (" %s" ), *Response->GetContentAsString ());
148-
149- if (bWasSuccessful)
150- {
151- OnSuccess (Response->GetContentAsString ());
152- }
153- else
154- {
155- if (Response.IsValid ())
156- {
157- OnFailure (FSequenceError (RequestFail, " Request is invalid: " + Response->GetContentAsString ()));
158- }
159- else
160- {
161- OnFailure (FSequenceError (RequestFail, " Request failed: No response received!" ));
162- }
163- }
164- });
165- }
166-
167- void URequestHandler::ProcessAndThen (TSuccessCallback<FHttpResponsePtr> OnSuccess,
168- const FFailureCallback& OnFailure) const
169- {
170- Process ().BindLambda ([OnSuccess, OnFailure](FHttpRequestPtr Req, const FHttpResponsePtr& Response, const bool bWasSuccessful)
171- {
172- if (bWasSuccessful)
173- {
174- OnSuccess (Response);
175- }
176- else
177- {
178- if (!Response.IsValid ())
179- OnFailure (FSequenceError (RequestFail, " The Request is invalid!" ));
180- else
181- OnFailure (FSequenceError (RequestFail, " Request failed: " + Response->GetContentAsString ()));
182- }
183- });
184- }
0 commit comments