A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
XAPIExtension.h
Go to the documentation of this file.
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Templates/SharedPointer.h"
7#include "Dom/JsonValue.h"
8#include "XAPIBase.h"
9#include "XAPIExtension.generated.h"
10
11USTRUCT(BlueprintType)
12struct APEXSDK_API FXAPIExtension : public FXAPIBase
13{
16 TMap<FString, TSharedPtr<FJsonValue>> Fields;
18public:
20 void Clone(const FXAPIExtension& InExtension)
21 {
22 Fields.Empty();
23 Fields.Append(InExtension.Fields);
24 }
25
27
28 virtual ~FXAPIExtension() {}
30 FXAPIExtension(const FXAPIExtension& InExtension)
31 {
32 Fields.Append(InExtension.Fields);
33 }
34
35 FXAPIExtension& operator=(const FXAPIExtension& InExtension)
36 {
37 Clone(InExtension);
38 return *this;
39 }
40
41 // String
42 TSharedPtr<FJsonValue>& AddString(FString InKey, const FString& InValue)
43 {
44 TSharedPtr<FJsonValueString> ValuePtr(new FJsonValueString(InValue));
45 return Add(InKey, ValuePtr);
46 }
47
48 TSharedPtr<FJsonValue>& AddCustomString(FString InKey, const FString& InValue)
49 {
50 TSharedPtr<FJsonValueString> ValuePtr(new FJsonValueString(InValue));
51 return AddCustom(InKey, ValuePtr);
52 }
53
54 // Numbers
55 TSharedPtr<FJsonValue>& AddNumber(FString InKey, const int& InValue)
56 {
57 TSharedPtr<FJsonValue> ValuePtr(new FJsonValueNumber(InValue));
58 return Add(InKey, ValuePtr);
59 }
60
61 TSharedPtr<FJsonValue>& AddCustomNumber(FString InKey, const int& InValue)
62 {
63 TSharedPtr<FJsonValue> ValuePtr(new FJsonValueNumber(InValue));
64 return AddCustom(InKey, ValuePtr);
65 }
66
67 // Boolean
68 TSharedPtr<FJsonValue>& AddBoolean(FString InKey, const bool& InValue)
69 {
70 TSharedPtr<FJsonValue> ValuePtr(new FJsonValueBoolean(InValue));
71 return Add(InKey, ValuePtr);
72 }
73
74 TSharedPtr<FJsonValue>& AddCustomBoolean(FString InKey, const bool& InValue)
75 {
76 TSharedPtr<FJsonValue> ValuePtr(new FJsonValueBoolean(InValue));
77 return AddCustom(InKey, ValuePtr);
78 }
79
80 // Custom
81 TSharedPtr<FJsonValue>& Add(FString InKey, const TSharedPtr<FJsonValue>& InValue)
82 {
83 return Fields.Add("https://pixovr.com/xapi/extension/" + InKey, InValue);
84 }
85
86 TSharedPtr<FJsonValue>& AddCustom(FString InKey, const TSharedPtr<FJsonValue>& InValue)
87 {
88 return Fields.Add(InKey, InValue);
89 }
90
91 virtual bool IsEmpty() const override
92 {
93 return Fields.Num() == 0;
94 }
95
96 virtual TSharedPtr<FJsonObject> ToJsonObject() const override
97 {
98 TSharedPtr<FJsonObject> Result(new FJsonObject);
100 for (const TPair<FString, TSharedPtr<FJsonValue>>& Pair : Fields)
101 {
102 Result->SetField(Pair.Key, Pair.Value);
103 }
104
105 return Result;
106 }
107};
virtual TSharedPtr< FJsonObject > ToJsonObject() const
Definition ApexJSON.h:23
USTRUCT()
Definition XAPIBase.h:13
virtual bool IsEmpty() const
Definition XAPIBase.h:18
USTRUCT(BlueprintType)
TSharedPtr< FJsonValue > & AddCustomBoolean(FString InKey, const bool &InValue)
virtual ~FXAPIExtension()
TSharedPtr< FJsonValue > & Add(FString InKey, const TSharedPtr< FJsonValue > &InValue)
void Clone(const FXAPIExtension &InExtension)
TSharedPtr< FJsonValue > & AddString(FString InKey, const FString &InValue)
TSharedPtr< FJsonValue > & AddCustom(FString InKey, const TSharedPtr< FJsonValue > &InValue)
TMap< FString, TSharedPtr< FJsonValue > > Fields
FXAPIExtension(const FXAPIExtension &InExtension)
TSharedPtr< FJsonValue > & AddCustomString(FString InKey, const FString &InValue)
TSharedPtr< FJsonValue > & AddNumber(FString InKey, const int &InValue)
TSharedPtr< FJsonValue > & AddBoolean(FString InKey, const bool &InValue)
FXAPIExtension & operator=(const FXAPIExtension &InExtension)
TSharedPtr< FJsonValue > & AddCustomNumber(FString InKey, const int &InValue)
virtual bool IsEmpty() const override
virtual TSharedPtr< FJsonObject > ToJsonObject() const override