// Copyright 2017 David Romanski(Socke). All Rights Reserved. #include "UAsyncNodeHttpDownloadUpload.h" UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Download_REQUEST(FString url, TMap 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(); 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(), url, header, ActionIfFileExists, DirectoryType, filePathWithFileName, instance->requestID); if (result == 400) { instance->httpRequestDownloadUploadComplete("", TArray(), TArray(), 400, instance->requestID); } return instance; } UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Low_RAM_Download_REQUEST(FString url, TMap header, EHTTPWebComFileDownloadResumeType ActionIfFileExists, EHTTPWebComFileUpload DirectoryType, FString filePathWithFileName, FString optionalRequestID, int32 FileSizeStepsInBytes) { UAsyncNodeHttpDownloadUpload* instance = NewObject(); 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(), url, header, ActionIfFileExists, DirectoryType, filePathWithFileName, FileSizeStepsInBytes, instance->requestID); if (result == 400) { instance->httpRequestDownloadUploadComplete("", TArray(), TArray(), 400, instance->requestID); } return instance; } UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Upload_POST_REQUEST(FString url, TMap header, EHTTPWebComFileUpload DirectoryType, FString filePath, FString fileID, TMap POSTData, FString optionalRequestID) { UAsyncNodeHttpDownloadUpload* instance = NewObject(); if (optionalRequestID.IsEmpty()) { instance->requestID = FGuid::NewGuid().ToString(); } else { instance->requestID = optionalRequestID; } UWebCommunicationBPLibrary::getWebCommunicationTarget()->registerUAsyncNodeHttpRequest(instance->requestID, instance); int32 result = UWebCommunicationBPLibrary::getWebCommunicationTarget()->CreateHttpRequestFileUploadPOST(TArray(), url, header, DirectoryType, filePath, fileID, POSTData, instance->requestID, instance->httpRequests, instance->requestID); if (result == 400) { instance->httpRequestDownloadUploadComplete("", TArray(), TArray(), 400, instance->requestID); } return instance; } UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Multi_Upload_POST_REQUEST(FString url, TMap header, EHTTPWebComFileUpload DirectoryType, TArray filePaths, TArray fileIDs, TMap POSTData, FString optionalRequestID) { UAsyncNodeHttpDownloadUpload* instance = NewObject(); if (optionalRequestID.IsEmpty()) { instance->requestID = FGuid::NewGuid().ToString(); } else { instance->requestID = optionalRequestID; } UWebCommunicationBPLibrary::getWebCommunicationTarget()->registerUAsyncNodeHttpRequest(instance->requestID, instance); int32 result = UWebCommunicationBPLibrary::getWebCommunicationTarget()->CreateHttpRequestFileMultiUploadPOST(TArray(), url, header, DirectoryType, filePaths, fileIDs, POSTData, instance->requestID, instance->httpRequests, instance->requestID); if (result == 400) { instance->httpRequestDownloadUploadComplete("", TArray(), TArray(), 400, instance->requestID); } return instance; } UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Upload_PUT_REQUEST(FString url, TMap header, EHTTPWebComFileUpload DirectoryType, FString filePath, FString fileID, EHTTPWebComFileUploadType uploadType, FString optionalRequestID) { UAsyncNodeHttpDownloadUpload* instance = NewObject(); if (optionalRequestID.IsEmpty()) { instance->requestID = FGuid::NewGuid().ToString(); } else { instance->requestID = optionalRequestID; } UWebCommunicationBPLibrary::getWebCommunicationTarget()->registerUAsyncNodeHttpRequest(instance->requestID, instance); int32 result = UWebCommunicationBPLibrary::getWebCommunicationTarget()->CreateHttpRequestFileUploadPUT(TArray(), url, header, DirectoryType, filePath, fileID, uploadType, instance->requestID, instance->httpRequests, instance->requestID); if (result == 400) { instance->httpRequestDownloadUploadComplete("", TArray(), TArray(), 400, instance->requestID); } return instance; } UAsyncNodeHttpDownloadUpload* UAsyncNodeHttpDownloadUpload::AsyncExecuteHTTP_Multi_Upload_PUT_REQUEST(FString url, TMap header, EHTTPWebComFileUpload DirectoryType, TArray filePaths, TArray fileIDs, FString optionalRequestID) { UAsyncNodeHttpDownloadUpload* instance = NewObject(); if (optionalRequestID.IsEmpty()) { instance->requestID = FGuid::NewGuid().ToString(); } else { instance->requestID = optionalRequestID; } UWebCommunicationBPLibrary::getWebCommunicationTarget()->registerUAsyncNodeHttpRequest(instance->requestID, instance); int32 result = UWebCommunicationBPLibrary::getWebCommunicationTarget()->CreateHttpRequestFileMultiUploadPUT(TArray(), url, header, DirectoryType, filePaths, fileIDs, instance->requestID, instance->httpRequests, instance->requestID); if (result == 400) { instance->httpRequestDownloadUploadComplete("", TArray(), TArray(), 400, instance->requestID); } return instance; } void UAsyncNodeHttpDownloadUpload::Activate(){ UWebCommunicationBPLibrary::webcom->startRequests(httpRequests); } void UAsyncNodeHttpDownloadUpload::httpRequestDownloadUploadComplete(const FString dataString, const TArray& dataArray, const TArray& 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(); }