6 #include "HttpModule.h" 8 #include "Misc/FileHelper.h" 18 if (FileManager.FileExists(*FilePath))
21 if (FFileHelper::LoadFileToString(FileContent, *FilePath, FFileHelper::EHashOptions::None))
23 UE_LOG(LogCarla, Warning, TEXT(
"FileManipulation: Text From File: %s"), *FilePath);
27 UE_LOG(LogCarla, Warning, TEXT(
"FileManipulation: Did not load text from file"));
32 UE_LOG(LogCarla, Warning, TEXT(
"File: %s does not exist"), *FilePath);
35 std::string OsmFile = std::string(TCHAR_TO_UTF8(*FileContent));
37 osm2odr::OSM2ODRSettings Settings;
38 Settings.proj_string +=
" +lat_0=" + std::to_string(Lat_0) +
" +lon_0=" + std::to_string(Lon_0);
39 Settings.center_map =
false;
40 std::string OpenDriveFile = osm2odr::ConvertOSMToOpenDRIVE(OsmFile, Settings);
42 FilePath.RemoveFromEnd(
".osm", ESearchCase::Type::IgnoreCase);
46 if (FFileHelper::SaveStringToFile(FString(OpenDriveFile.c_str()), *FilePath))
48 UE_LOG(LogCarla, Warning, TEXT(
"FileManipulation: Sucsesfuly Written: \"%s\" to the text file"), *FilePath);
52 UE_LOG(LogCarla, Warning, TEXT(
"FileManipulation: Failed to write FString to file."));
58 UE_LOG(LogCarla, Log, TEXT(
"FHttpDownloader CREATED"));
64 : Verb(InVerb),
Url(InUrl), Filename(InFilename), DelegateToCall(Delegate)
70 UE_LOG(LogCarla, Log, TEXT(
"Starting download [%s] Url=[%s]"), *
Verb, *
Url);
71 TSharedPtr<IHttpRequest, ESPMode::ThreadSafe> Request =
FHttpModule::Get().CreateRequest();
74 Request->SetVerb(
Verb);
75 Request->ProcessRequest();
80 if (!HttpResponse.IsValid())
82 UE_LOG(LogCarla, Log, TEXT(
"Download failed. NULL response"));
87 if (HttpResponse->GetResponseCode() < 200 || 300 <= HttpResponse->GetResponseCode())
89 UE_LOG(LogCarla, Error, TEXT(
"Error during download [%s] Url=[%s] Response=[%d]"),
90 *HttpRequest->GetVerb(),
91 *HttpRequest->GetURL(),
92 HttpResponse->GetResponseCode());
97 UE_LOG(LogCarla, Log, TEXT(
"Completed download [%s] Url=[%s] Response=[%d]"),
98 *HttpRequest->GetVerb(),
99 *HttpRequest->GetURL(),
100 HttpResponse->GetResponseCode());
102 HttpRequest->OnProcessRequestComplete().Unbind();
104 FString CurrentFile = FPaths::ProjectContentDir() +
"CustomMaps/" +
Filename +
"/OpenDrive/";
108 if (!FileManager.DirectoryExists(*CurrentFile))
110 FileManager.CreateDirectory(*CurrentFile);
114 FString StringToWrite = HttpResponse->GetContentAsString();
117 if (FFileHelper::SaveStringToFile(StringToWrite, *CurrentFile, FFileHelper::EEncodingOptions::ForceUTF8WithoutBOM))
119 UE_LOG(LogCarla, Warning, TEXT(
"FileManipulation: Sucsesfuly Written "));
123 UE_LOG(LogCarla, Warning, TEXT(
"FileManipulation: Failed to write FString to file."));
FHttpDownloader(const FString &InVerb, const FString &InUrl, const FString &InFilename, FDownloadComplete &Delegate)
void ConvertOSMInOpenDrive(FString FilePath, float Lat_0=0, float Lon_0=0)
static T Get(carla::rpc::Response< T > &response)
FDownloadComplete DelegateToCall
FDownloadComplete DownloadDelegate
void RequestComplete(FHttpRequestPtr HttpRequest, FHttpResponsePtr HttpResponse, bool bSucceeded)
Delegate called when the request completes.