125 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			125 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								// Copyright (c) 2022 Sentry. All Rights Reserved.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#pragma once
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "Kismet/BlueprintFunctionLibrary.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "SentryDataTypes.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "SentryLibrary.generated.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class USentryTransactionContext;
							 | 
						||
| 
								 | 
							
								class USentryEvent;
							 | 
						||
| 
								 | 
							
								class USentryBreadcrumb;
							 | 
						||
| 
								 | 
							
								class USentryUser;
							 | 
						||
| 
								 | 
							
								class USentryUserFeedback;
							 | 
						||
| 
								 | 
							
								class USentryId;
							 | 
						||
| 
								 | 
							
								class USentryAttachment;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Utility functions for Sentry.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								UCLASS()
							 | 
						||
| 
								 | 
							
								class SENTRY_API USentryLibrary : public UBlueprintFunctionLibrary
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									GENERATED_BODY()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								public:
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Creates the event.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param Message Message to sent.
							 | 
						||
| 
								 | 
							
									 * @param Level Level of the event.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry",
							 | 
						||
| 
								 | 
							
										Meta = (DeprecatedFunction, DeprecationMessage="Function has been deprecated. Use SentryEvent CreateEventWithMessageAndLevel instead"))
							 | 
						||
| 
								 | 
							
									static USentryEvent* CreateSentryEvent(const FString& Message, ESentryLevel Level);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Creates user.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param Email Email address of the user.
							 | 
						||
| 
								 | 
							
									 * @param Id Id of the user.
							 | 
						||
| 
								 | 
							
									 * @param Username Username of the user.
							 | 
						||
| 
								 | 
							
									 * @param IpAddress IP address of the user.
							 | 
						||
| 
								 | 
							
									 * @param Data Additional arbitrary fields related to the user.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry", Meta = (AutoCreateRefTerm = "Data"))
							 | 
						||
| 
								 | 
							
									static USentryUser* CreateSentryUser(const FString& Email, const FString& Id, const FString& Username, const FString& IpAddress,
							 | 
						||
| 
								 | 
							
										const TMap<FString, FString>& Data);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Creates user feedback for the event.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param EventId Id of the event to which user feedback is associated.
							 | 
						||
| 
								 | 
							
									 * @param Name Name of the user.
							 | 
						||
| 
								 | 
							
									 * @param Email Email of the user.
							 | 
						||
| 
								 | 
							
									 * @param Comments Comments of the user about what happened.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									static USentryUserFeedback* CreateSentryUserFeedback(USentryId* EventId, const FString& Name, const FString& Email, const FString& Comments);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Creates breadcrumb.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param Message Message of the breadcrumb.
							 | 
						||
| 
								 | 
							
									 * @param Type Type of the breadcrumb.
							 | 
						||
| 
								 | 
							
									 * @param Category Category of the breadcrumb.
							 | 
						||
| 
								 | 
							
									 * @param Data Data associated with the breadcrumb.
							 | 
						||
| 
								 | 
							
									 * @param Level Level of the breadcrumb.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry", Meta = (AutoCreateRefTerm = "Data"))
							 | 
						||
| 
								 | 
							
									static USentryBreadcrumb* CreateSentryBreadcrumb(const FString& Message, const FString& Type, const FString& Category,
							 | 
						||
| 
								 | 
							
										const TMap<FString, FString>& Data, ESentryLevel Level = ESentryLevel::Info);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Creates attachment with bytes and a filename.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param Data The data for the attachment.
							 | 
						||
| 
								 | 
							
									 * @param Filename The name of the attachment to display in Sentry.
							 | 
						||
| 
								 | 
							
									 * @param ContentType The content type of the attachment. Default is "application/octet-stream".
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									static USentryAttachment* CreateSentryAttachmentWithData(const TArray<uint8>& Data, const FString& Filename,
							 | 
						||
| 
								 | 
							
										const FString& ContentType = FString(TEXT("application/octet-stream")));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Creates attachment with a path and a filename.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param Path The path string of the file to upload as an attachment.
							 | 
						||
| 
								 | 
							
									 * @param Filename The name of the attachment to display in Sentry.
							 | 
						||
| 
								 | 
							
									 * @param ContentType The content type of the attachment. Default is "application/octet-stream".
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									static USentryAttachment* CreateSentryAttachmentWithPath(const FString& Path, const FString& Filename,
							 | 
						||
| 
								 | 
							
										const FString& ContentType = FString(TEXT("application/octet-stream")));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Creates transaction context.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param Name Transaction name.
							 | 
						||
| 
								 | 
							
									 * @param Operation Transaction operation.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									static USentryTransactionContext* CreateSentryTransactionContext(const FString& Name, const FString& Operation);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Converts string to byte array. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									static TArray<uint8> StringToBytesArray(const FString& InString);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/** Converts byte array to string. */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									static FString ByteArrayToString(const TArray<uint8>& Array);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * Saves string to a file.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @param InString Content of a file.
							 | 
						||
| 
								 | 
							
									 * @param Filename Name of a file to be saved.
							 | 
						||
| 
								 | 
							
									 *
							 | 
						||
| 
								 | 
							
									 * @return Absolute path to a file with specified name and content.
							 | 
						||
| 
								 | 
							
									 */
							 | 
						||
| 
								 | 
							
									UFUNCTION(BlueprintCallable, Category = "Sentry")
							 | 
						||
| 
								 | 
							
									static FString SaveStringToFile(const FString& InString, const FString& Filename);
							 | 
						||
| 
								 | 
							
								};
							 |