A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
ApexLibrary.h
Go to the documentation of this file.
1// Copyright 2022 PixoVR Corp. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Kismet/BlueprintFunctionLibrary.h"
7#include "VaRestJsonValue.h"
8#include "Dom/JsonValue.h"
9#include "ApexJSON.h"
10#include "XAPIExtension.h"
11#include "VaRestSubsystem.h"
12#include "ApexLibrary.generated.h"
13
17UCLASS()
18class APEXSDK_API UApexLibrary : public UBlueprintFunctionLibrary
19{
20 GENERATED_BODY()
21
22public:
23 UFUNCTION(BlueprintCallable, Category = "Apex|API")
24 static FXAPIExtension CreateExtensionData(const TMap<FString, UVaRestJsonValue*>& Data);
25
26public:
27 static TArray<TSharedPtr<FJsonValue>> ConvertToJsonValueStringArray(const TArray<FString>& Array)
28 {
29 TArray<TSharedPtr<FJsonValue>> ConvertedArray;
30 for (const FString& Item : Array)
31 {
32 TSharedPtr<FJsonValueString> ItemPtr(new FJsonValueString(Item));
33 ConvertedArray.Add(ItemPtr);
34 }
35
36 return ConvertedArray;
37 }
38
39 static TArray<TSharedPtr<FJsonValue>> ConvertToJsonValueObjectArray(const TArray<FJsonable>& Array)
40 {
41 TArray<TSharedPtr<FJsonValue>> ConvertedArray;
42 for (const FJsonable& Item : Array)
43 {
44 TSharedPtr<FJsonValueObject> ItemPtr(new FJsonValueObject(Item.ToJsonObject()));
45 ConvertedArray.Add(ItemPtr);
46 }
47
48 return ConvertedArray;
49 }
50
51 static bool TryFillFromStringField(const TSharedPtr<FJsonObject>& JObject, const FString Field, FString& ValueToFill)
52 {
53 if (JObject->HasField(Field))
54 {
55 ValueToFill = JObject->GetStringField(Field);
56 return true;
57 }
58
59 return false;
60 }
61
62 static bool TryFillFromBoolField(const TSharedPtr<FJsonObject>& JObject, const FString Field, bool& ValueToFill)
63 {
64 if (JObject->HasField(Field))
65 {
66 ValueToFill = JObject->GetBoolField(Field);
67 return true;
68 }
69
70 return false;
71 }
72
73 static bool TryFillFromNumberField(const TSharedPtr<FJsonObject>& JObject, const FString Field, float& ValueToFill)
74 {
75 if (JObject->HasField(Field))
76 {
77 ValueToFill = JObject->GetNumberField(Field);
78 return true;
79 }
80
81 return false;
82 }
83
84 static bool TryFillFromIntegerField(const TSharedPtr<FJsonObject>& JObject, const FString Field, int& ValueToFill)
85 {
86 if (JObject->HasField(Field))
87 {
88 ValueToFill = JObject->GetIntegerField(Field);
89 return true;
90 }
91
92 return false;
93 }
94
95 static bool TryFillFromObjectField(const TSharedPtr<FJsonObject>& JObject, const FString Field, FJsonable& ValueToFill)
96 {
97 if (JObject->HasField(Field))
98 {
99 ValueToFill.FromJsonObject(JObject->GetObjectField(Field));
100 return true;
101 }
102
103 return false;
104 }
105
106 static bool TryFillFromObjectArrayField(const TSharedPtr<FJsonObject>& JObject, const FString Field, TArray<FJsonable>& ArrayToFill)
107 {
108 if (JObject->HasField(Field))
109 {
110 TArray<TSharedPtr<FJsonValue>> Array = JObject->GetArrayField(Field);
111 FJsonable Jsonable;
112 for (TSharedPtr<FJsonValue> Value : Array)
113 {
114 Jsonable.FromJsonObject(Value->AsObject());
115 ArrayToFill.Add(Jsonable);
116 }
117 return true;
118 }
119
120 return false;
121 }
122
123 static bool TryFillFromStringArrayField(const TSharedPtr<FJsonObject>& JObject, const FString Field, TArray<FString>& ArrayToFill)
124 {
125 if (JObject->HasField(Field))
126 {
127 TArray<TSharedPtr<FJsonValue>> Array = JObject->GetArrayField(Field);
128 for (TSharedPtr<FJsonValue> Value : Array)
129 {
130 ArrayToFill.Add(Value->AsString());
131 }
132 return true;
133 }
134
135 return false;
136 }
137
138 static bool TryFillFromNumberArrayField(const TSharedPtr<FJsonObject>& JObject, const FString Field, TArray<float>& ArrayToFill)
139 {
140 if (JObject->HasField(Field))
141 {
142 TArray<TSharedPtr<FJsonValue>> Array = JObject->GetArrayField(Field);
143 for (TSharedPtr<FJsonValue> Value : Array)
144 {
145 ArrayToFill.Add(Value->AsNumber());
146 }
147 return true;
148 }
149
150 return false;
151 }
152
153 static bool TryFillFromIntegerArrayField(const TSharedPtr<FJsonObject>& JObject, const FString Field, TArray<int>& ArrayToFill)
154 {
155 if (JObject->HasField(Field))
156 {
157 TArray<TSharedPtr<FJsonValue>> Array = JObject->GetArrayField(Field);
158 for (TSharedPtr<FJsonValue> Value : Array)
159 {
160 ArrayToFill.Add(Value->AsNumber());
161 }
162 return true;
163 }
164
165 return false;
166 }
167
168 static bool TryFillFromBoolArrayField(const TSharedPtr<FJsonObject>& JObject, const FString Field, TArray<bool>& ArrayToFill)
169 {
170 if (JObject->HasField(Field))
171 {
172 TArray<TSharedPtr<FJsonValue>> Array = JObject->GetArrayField(Field);
173 for (TSharedPtr<FJsonValue> Value : Array)
174 {
175 ArrayToFill.Add(Value->AsBool());
176 }
177 return true;
178 }
179
180 return false;
181 }
182
183 static UVaRestSubsystem* GetRestSubsystem()
184 {
185 static UVaRestSubsystem* VaRestSubsystem = GEngine->GetEngineSubsystem<UVaRestSubsystem>();
186 return VaRestSubsystem;
187 }
189 static FString GetApexSDKVersion();
190};
UCLASS()
Definition ApexLibrary.h:21
static bool TryFillFromObjectArrayField(const TSharedPtr< FJsonObject > &JObject, const FString Field, TArray< FJsonable > &ArrayToFill)
static TArray< TSharedPtr< FJsonValue > > ConvertToJsonValueObjectArray(const TArray< FJsonable > &Array)
Definition ApexLibrary.h:44
static bool TryFillFromIntegerArrayField(const TSharedPtr< FJsonObject > &JObject, const FString Field, TArray< int > &ArrayToFill)
static bool TryFillFromNumberArrayField(const TSharedPtr< FJsonObject > &JObject, const FString Field, TArray< float > &ArrayToFill)
static bool TryFillFromIntegerField(const TSharedPtr< FJsonObject > &JObject, const FString Field, int &ValueToFill)
Definition ApexLibrary.h:89
static bool TryFillFromObjectField(const TSharedPtr< FJsonObject > &JObject, const FString Field, FJsonable &ValueToFill)
static TArray< TSharedPtr< FJsonValue > > ConvertToJsonValueStringArray(const TArray< FString > &Array)
Definition ApexLibrary.h:32
static bool TryFillFromBoolField(const TSharedPtr< FJsonObject > &JObject, const FString Field, bool &ValueToFill)
Definition ApexLibrary.h:67
static bool TryFillFromNumberField(const TSharedPtr< FJsonObject > &JObject, const FString Field, float &ValueToFill)
Definition ApexLibrary.h:78
static bool TryFillFromStringField(const TSharedPtr< FJsonObject > &JObject, const FString Field, FString &ValueToFill)
Definition ApexLibrary.h:56
static bool TryFillFromBoolArrayField(const TSharedPtr< FJsonObject > &JObject, const FString Field, TArray< bool > &ArrayToFill)
static UVaRestSubsystem * GetRestSubsystem()
static bool TryFillFromStringArrayField(const TSharedPtr< FJsonObject > &JObject, const FString Field, TArray< FString > &ArrayToFill)
UCLASS(BlueprintType, Blueprintable)
USTRUCT()
Definition ApexJSON.h:13
virtual void FromJsonObject(const TSharedPtr< FJsonObject > &JObject)
Definition ApexJSON.h:18
USTRUCT(BlueprintType)