128 lines
7.2 KiB
C++
128 lines
7.2 KiB
C++
|
|
// Copyright 2017 David Romanski(Socke). All Rights Reserved.
|
||
|
|
|
||
|
|
#include "UAsyncNodeHttpDownloadUpload.h"
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Download_REQUEST(FString url, TMap<FString, FString> header, EHTTPWebComFileDownloadResumeType ActionIfFileExists, EHTTPWebComFileUpload DirectoryType, FString filePathWithFileName, FString optionalRequestID) {
|
||
|
|
//The node is only visible in Blueprints if the function is declared in a UBlueprintAsyncActionBase class.
|
||
|
|
//Therefore an instance of itself is created here.
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* instance = NewObject<UAsyncNodeHttpDownloadUpload>();
|
||
|
|
if (optionalRequestID.IsEmpty()) {
|
||
|
|
instance->requestID = FGuid::NewGuid().ToString();
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
instance->requestID = optionalRequestID;
|
||
|
|
}
|
||
|
|
//save it in the main class to use it everywhere
|
||
|
|
UWebCommunicationBPLibrary::getWebCommunicationTarget()->registerUAsyncNodeHttpRequest(instance->requestID, instance);
|
||
|
|
int32 result = UWebCommunicationBPLibrary::getWebCommunicationTarget()->CreateHttpRequestGETDownload(instance->httpRequests, instance->requestID, TArray<struct FhttpRequest>(), url, header, ActionIfFileExists, DirectoryType, filePathWithFileName, instance->requestID);
|
||
|
|
if (result == 400) {
|
||
|
|
instance->httpRequestDownloadUploadComplete("", TArray<FString>(), TArray<FString>(), 400, instance->requestID);
|
||
|
|
}
|
||
|
|
return instance;
|
||
|
|
}
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Low_RAM_Download_REQUEST(FString url, TMap<FString, FString> header, EHTTPWebComFileDownloadResumeType ActionIfFileExists, EHTTPWebComFileUpload DirectoryType, FString filePathWithFileName, FString optionalRequestID, int32 FileSizeStepsInBytes) {
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* instance = NewObject<UAsyncNodeHttpDownloadUpload>();
|
||
|
|
if (optionalRequestID.IsEmpty()) {
|
||
|
|
instance->requestID = FGuid::NewGuid().ToString();
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
instance->requestID = optionalRequestID;
|
||
|
|
}
|
||
|
|
UWebCommunicationBPLibrary::getWebCommunicationTarget()->registerUAsyncNodeHttpRequest(instance->requestID, instance);
|
||
|
|
int32 result = UWebCommunicationBPLibrary::getWebCommunicationTarget()->CreateHttpRequestGETLowRamDownload(instance->httpRequests, instance->requestID,TArray<struct FhttpRequest>(), url, header, ActionIfFileExists, DirectoryType, filePathWithFileName, FileSizeStepsInBytes, instance->requestID);
|
||
|
|
if (result == 400) {
|
||
|
|
instance->httpRequestDownloadUploadComplete("", TArray<FString>(), TArray<FString>(), 400, instance->requestID);
|
||
|
|
}
|
||
|
|
return instance;
|
||
|
|
}
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Upload_POST_REQUEST(FString url, TMap<FString, FString> header, EHTTPWebComFileUpload DirectoryType, FString filePath, FString fileID, TMap<FString, FString> POSTData, FString optionalRequestID) {
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* instance = NewObject<UAsyncNodeHttpDownloadUpload>();
|
||
|
|
if (optionalRequestID.IsEmpty()) {
|
||
|
|
instance->requestID = FGuid::NewGuid().ToString();
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
instance->requestID = optionalRequestID;
|
||
|
|
}
|
||
|
|
UWebCommunicationBPLibrary::getWebCommunicationTarget()->registerUAsyncNodeHttpRequest(instance->requestID, instance);
|
||
|
|
int32 result = UWebCommunicationBPLibrary::getWebCommunicationTarget()->CreateHttpRequestFileUploadPOST(TArray<struct FhttpRequest>(), url, header, DirectoryType, filePath, fileID, POSTData, instance->requestID, instance->httpRequests, instance->requestID);
|
||
|
|
if (result == 400) {
|
||
|
|
instance->httpRequestDownloadUploadComplete("", TArray<FString>(), TArray<FString>(), 400, instance->requestID);
|
||
|
|
}
|
||
|
|
return instance;
|
||
|
|
}
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Multi_Upload_POST_REQUEST(FString url, TMap<FString, FString> header, EHTTPWebComFileUpload DirectoryType, TArray<FString> filePaths, TArray<FString> fileIDs, TMap<FString, FString> POSTData, FString optionalRequestID) {
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* instance = NewObject<UAsyncNodeHttpDownloadUpload>();
|
||
|
|
if (optionalRequestID.IsEmpty()) {
|
||
|
|
instance->requestID = FGuid::NewGuid().ToString();
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
instance->requestID = optionalRequestID;
|
||
|
|
}
|
||
|
|
UWebCommunicationBPLibrary::getWebCommunicationTarget()->registerUAsyncNodeHttpRequest(instance->requestID, instance);
|
||
|
|
int32 result = UWebCommunicationBPLibrary::getWebCommunicationTarget()->CreateHttpRequestFileMultiUploadPOST(TArray<struct FhttpRequest>(), url, header, DirectoryType, filePaths, fileIDs, POSTData, instance->requestID, instance->httpRequests, instance->requestID);
|
||
|
|
if (result == 400) {
|
||
|
|
instance->httpRequestDownloadUploadComplete("", TArray<FString>(), TArray<FString>(), 400, instance->requestID);
|
||
|
|
}
|
||
|
|
return instance;
|
||
|
|
}
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Upload_PUT_REQUEST(FString url, TMap<FString, FString> header, EHTTPWebComFileUpload DirectoryType, FString filePath, FString fileID, EHTTPWebComFileUploadType uploadType, FString optionalRequestID) {
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* instance = NewObject<UAsyncNodeHttpDownloadUpload>();
|
||
|
|
if (optionalRequestID.IsEmpty()) {
|
||
|
|
instance->requestID = FGuid::NewGuid().ToString();
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
instance->requestID = optionalRequestID;
|
||
|
|
}
|
||
|
|
UWebCommunicationBPLibrary::getWebCommunicationTarget()->registerUAsyncNodeHttpRequest(instance->requestID, instance);
|
||
|
|
int32 result = UWebCommunicationBPLibrary::getWebCommunicationTarget()->CreateHttpRequestFileUploadPUT(TArray<struct FhttpRequest>(), url, header, DirectoryType, filePath, fileID, uploadType, instance->requestID, instance->httpRequests, instance->requestID);
|
||
|
|
if (result == 400) {
|
||
|
|
instance->httpRequestDownloadUploadComplete("", TArray<FString>(), TArray<FString>(), 400, instance->requestID);
|
||
|
|
}
|
||
|
|
return instance;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Multi_Upload_PUT_REQUEST(FString url, TMap<FString, FString> header, EHTTPWebComFileUpload DirectoryType, TArray<FString> filePaths, TArray<FString> fileIDs, FString optionalRequestID) {
|
||
|
|
|
||
|
|
UAsyncNodeHttpDownloadUpload* instance = NewObject<UAsyncNodeHttpDownloadUpload>();
|
||
|
|
if (optionalRequestID.IsEmpty()) {
|
||
|
|
instance->requestID = FGuid::NewGuid().ToString();
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
instance->requestID = optionalRequestID;
|
||
|
|
}
|
||
|
|
UWebCommunicationBPLibrary::getWebCommunicationTarget()->registerUAsyncNodeHttpRequest(instance->requestID, instance);
|
||
|
|
int32 result = UWebCommunicationBPLibrary::getWebCommunicationTarget()->CreateHttpRequestFileMultiUploadPUT(TArray<struct FhttpRequest>(), url, header, DirectoryType, filePaths, fileIDs, instance->requestID, instance->httpRequests, instance->requestID);
|
||
|
|
if (result == 400) {
|
||
|
|
instance->httpRequestDownloadUploadComplete("", TArray<FString>(), TArray<FString>(), 400, instance->requestID);
|
||
|
|
}
|
||
|
|
return instance;
|
||
|
|
}
|
||
|
|
|
||
|
|
void UAsyncNodeHttpDownloadUpload::Activate(){
|
||
|
|
UWebCommunicationBPLibrary::webcom->startRequests(httpRequests);
|
||
|
|
}
|
||
|
|
|
||
|
|
void UAsyncNodeHttpDownloadUpload::httpRequestDownloadUploadComplete(const FString dataString, const TArray<FString>& dataArray, const TArray<FString>& headerP, const int32 statusCode, const FString requestIDP){
|
||
|
|
|
||
|
|
UWebCommunicationBPLibrary::getWebCommunicationTarget()->unregisterUAsyncNodeHttpRequest(requestIDP);
|
||
|
|
|
||
|
|
if (statusCode >= 400 || statusCode == 0) {
|
||
|
|
OnFail.Broadcast(dataString, dataArray,headerP, statusCode, requestIDP);
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
OnSuccess.Broadcast(dataString, dataArray, headerP, statusCode, requestIDP);
|
||
|
|
}
|
||
|
|
|
||
|
|
RemoveFromRoot();
|
||
|
|
SetReadyToDestroy();
|
||
|
|
}
|