mirror of
https://github.com/Theaninova/BeatLanguageMapper.git
synced 2026-01-20 00:43:10 +00:00
Mk2
uh stuff. i'm putting it in the readme.
This commit is contained in:
80
Source/MediocreMapper/FileDownloader.h
Normal file
80
Source/MediocreMapper/FileDownloader.h
Normal file
@@ -0,0 +1,80 @@
|
||||
// Fill out your copyright notice in the Description page of Project Settings.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Http.h"
|
||||
#include "FileDownloader.generated.h"
|
||||
|
||||
/**
|
||||
* Possible results from a download request.
|
||||
*/
|
||||
UENUM(BlueprintType, Category = "HTTP")
|
||||
enum class EDownloadResult : uint8
|
||||
{
|
||||
Success,
|
||||
DownloadFailed,
|
||||
SaveFailed,
|
||||
DirectoryCreationFailed
|
||||
};
|
||||
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnResult, const EDownloadResult, Result);
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOnProgress, const int32, BytesSent, const int32, BytesReceived, const int32, ContentLength);
|
||||
|
||||
/**
|
||||
* Download a file from a URL and save it locally.
|
||||
*/
|
||||
UCLASS(BlueprintType, Category = "HTTP")
|
||||
class MEDIOCREMAPPER_API UFileDownloader : public UObject
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
/**
|
||||
* Bind to know when the download is complete (even if it fails).
|
||||
*/
|
||||
UPROPERTY(BlueprintAssignable, Category = "HTTP")
|
||||
FOnResult OnResult;
|
||||
/**
|
||||
* Bind to know when the download is complete (even if it fails).
|
||||
*/
|
||||
UPROPERTY(BlueprintAssignable, Category = "HTTP")
|
||||
FOnProgress OnProgress;
|
||||
|
||||
/**
|
||||
* The URL used to start this download.
|
||||
*/
|
||||
UPROPERTY(BlueprintReadOnly, Category = "HTTP")
|
||||
FString FileUrl;
|
||||
/**
|
||||
* The path set to save the downloaded file.
|
||||
*/
|
||||
UPROPERTY(BlueprintReadOnly, Category = "HTTP")
|
||||
FString FileSavePath;
|
||||
|
||||
UFileDownloader();
|
||||
~UFileDownloader();
|
||||
|
||||
/**
|
||||
* Instantiates a FileDownloader object, starts downloading and saves it when done.
|
||||
*
|
||||
* @return The FileDownloader object. Bind to it's OnResult event to know when it's done downloading.
|
||||
*/
|
||||
UFUNCTION(BlueprintCallable, Meta = (DisplayName = "Create Downloader"), Category = "HTTP")
|
||||
static UFileDownloader* MakeDownloader();
|
||||
|
||||
/**
|
||||
* Starts downloading a file and saves it when done. Bind to the OnResult
|
||||
* event to know when the download is done (preferrably, before calling this function).
|
||||
*
|
||||
* @param Url The file Url to be downloaded.
|
||||
* @param SavePath The absolute path and file name to save the downloaded file.
|
||||
* @return Returns itself.
|
||||
*/
|
||||
UFUNCTION(BlueprintCallable, Category = "HTTP")
|
||||
UFileDownloader* DownloadFile(const FString& Url, FString SavePath);
|
||||
|
||||
private:
|
||||
|
||||
void OnReady(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);
|
||||
void OnProgress_Internal(FHttpRequestPtr Request, int32 BytesSent, int32 BytesReceived);
|
||||
};
|
||||
Reference in New Issue
Block a user