62class STREAMCHATAPI_API
FChatApi :
public TSharedFromThis<FChatApi>
65 static TSharedRef<FChatApi> Create(
const FString& InApiKey,
const FString& InHost,
const TSharedPtr<FTokenManager>&);
67#pragma region Moderation
87 const FString& TargetUserId,
88 const FString&
Type = {},
89 const FString&
Id = {},
90 const TOptional<FTimespan>& Timeout = {},
91 const TOptional<FString>& Reason = {},
94 TCallback<FResponseDto> Callback = {})
const;
103 void UnbanUser(
const FString& TargetUserId,
const FString&
Type = {},
const FString&
Id = {}, TCallback<FResponseDto> Callback = {})
const;
119 void QueryBannedUsers(
120 const TSharedRef<FJsonObject>& Filter,
121 const TArray<FSortParamRequestDto>& SortOptions = {},
122 const TOptional<FDateTime> CreatedAtAfterOrEqual = {},
123 const TOptional<FDateTime> CreatedAtAfter = {},
124 const TOptional<FDateTime> CreatedAtBeforeOrEqual = {},
125 const TOptional<FDateTime> CreatedAtBefore = {},
126 TOptional<uint32> Limit = {},
127 TOptional<uint32> Offset = {},
128 TCallback<FQueryBannedUsersResponseDto> Callback = {})
const;
136 void Flag(
const FString& TargetMessageId = {},
const FString& TargetUserId = {}, TCallback<FFlagResponseDto> Callback = {})
const;
144 void MuteUsers(
const TArray<FString>& TargetUserIds, TOptional<FTimespan> Timeout = {}, TCallback<FMuteUserResponseDto> Callback = {})
const;
151 void UnmuteUsers(
const TArray<FString>& TargetUserIds, TCallback<FResponseDto> Callback = {})
const;
159 void MuteChannels(
const TArray<FString>& TargetCids, TOptional<FTimespan> Timeout = {}, TCallback<FMuteChannelResponseDto> Callback = {})
const;
166 void UnmuteChannels(
const TArray<FString>& TargetCids, TCallback<FResponseDto> Callback = {})
const;
177 void BlockUser(
const FString& TargetUserId, TCallback<FBlockUserResponseDto> Callback = {})
const;
184 void UnblockUser(
const FString& TargetUserId, TCallback<FResponseDto> Callback = {})
const;
190 void GetBlockedUsers(TCallback<FGetBlockedUsersResponseDto> Callback = {})
const;
193#pragma endregion Moderation
195#pragma region Channels
215 const FString& ChannelType,
216 const FString& ConnectionId,
219 const TOptional<FString>& ChannelId = {},
220 const TOptional<FMessagePaginationParamsRequestDto> MessagePagination = {},
221 const TOptional<FPaginationParamsRequestDto> MemberPagination = {},
222 const TOptional<FPaginationParamsRequestDto> WatcherPagination = {},
223 TCallback<FChannelStateResponseDto> Callback = {})
const;
231 void DeleteChannel(
const FString& ChannelType,
const FString& ChannelId, TCallback<FDeleteChannelResponseDto> Callback = {})
const;
241 void PartialUpdateChannel(
242 const FString& ChannelType,
243 const FString& ChannelId,
244 const TSharedRef<FJsonObject>& Set,
245 const TArray<FString>& Unset,
246 TCallback<FUpdateChannelPartialResponseDto> Callback = {})
const;
256 const FString& ChannelType,
257 const FString& ChannelId,
259 TCallback<FUpdateChannelResponseDto> Callback = {})
const;
269 void HideChannel(
const FString& ChannelType,
const FString& ChannelId,
bool bClearHistory =
false, TCallback<FResponseDto> Callback = {})
const;
277 void ShowChannel(
const FString& ChannelType,
const FString& ChannelId, TCallback<FResponseDto> Callback = {})
const;
295 const FString& ConnectionId,
297 const TOptional<TSharedRef<FJsonObject>>& Filter = {},
298 const TArray<FSortParamRequestDto>& SortOptions = {},
299 TOptional<uint32> MemberLimit = {},
300 TOptional<uint32> MessageLimit = {},
301 TOptional<uint32> Limit = {},
302 TOptional<uint32> Offset = {},
303 TCallback<FChannelsResponseDto> Callback = {})
const;
312 void StopWatchingChannel(
const FString& ChannelType,
const FString& ChannelId,
const FString& ConnectionId, TCallback<FResponseDto> Callback = {})
const;
330 const TSharedRef<FJsonObject>& ChannelFilter,
331 const TOptional<FString>&
Query = {},
332 const TOptional<TSharedRef<FJsonObject>>& MessageFilter = {},
333 const TArray<FSortParamRequestDto>& Sort = {},
334 TOptional<uint32> MessageLimit = {},
335 TOptional<uint32> Offset = {},
336 TOptional<FString> Next = {},
337 TCallback<FSearchResponseDto> Callback = {})
const;
343 void MarkChannelsRead(TCallback<FMarkReadResponseDto> Callback = {})
const;
352 void MarkChannelRead(
353 const FString& ChannelType,
354 const FString& ChannelId,
355 const TOptional<FString>& MessageId = {},
356 TCallback<FMarkReadResponseDto> Callback = {})
const;
371 const FString& ChannelType,
372 const TOptional<TSharedRef<FJsonObject>>& Filter = {},
373 const TOptional<FString>& ChannelId = {},
374 const TOptional<TArray<FString>>& Members = {},
375 const TArray<FSortParamRequestDto>& SortOptions = {},
377 TCallback<FMembersResponseDto> Callback = {})
const;
389 void TruncateChannel(
390 const FString& ChannelType,
391 const FString& ChannelId,
392 bool bHardDelete =
false,
393 const TOptional<FDateTime>& TruncatedAt = {},
394 const TOptional<FMessageRequestDto>& Message = {},
395 bool bSkipPush =
false,
396 TCallback<FTruncateChannelResponseDto> Callback = {})
const;
399#pragma endregion Channels
401#pragma region Messages
412 void GetMessage(
const FString& MessageId, TCallback<FMessageResponseDto> Callback = {})
const;
423 const FString& ChannelType,
424 const FString& ChannelId,
426 bool bSkipPush =
false,
427 TCallback<FMessageResponseDto> Callback = {})
const;
434 void UpdateMessage(
const FMessageRequestDto& MessageRequest, TCallback<FMessageResponseDto> Callback = {})
const;
442 void DeleteMessage(
const FString&
Id,
bool bHard =
false, TCallback<FMessageResponseDto> Callback = {})
const;
455 const FString& MessageId,
457 bool bEnforceUnique =
true,
458 TOptional<uint32> Score = {},
459 bool bSkipPush =
false,
460 TCallback<FReactionResponseDto> Callback = {})
const;
468 void DeleteReaction(
const FString& MessageId,
const FName&
Type, TCallback<FReactionResponseDto> Callback = {})
const;
477 void GetReactions(
const FString& MessageId, TOptional<uint32> Limit, TOptional<uint32> Offset, TCallback<FGetReactionsResponseDto> Callback = {})
const;
480#pragma endregion Messages
495 template <
class TEvent>
496 void SendChannelEvent(
const FString& ChannelType,
const FString& ChannelId,
const TEvent&, TCallback<FEventResponseDto> Callback = {});
499#pragma endregion Events
508#pragma endregion Files
528 const FString& ConnectionId,
529 bool bPresence =
true,
530 const TOptional<TSharedRef<FJsonObject>>& Filter = {},
531 const TArray<FSortParamRequestDto>& SortOptions = {},
532 TOptional<uint32> Limit = {},
533 TOptional<uint32> Offset = {},
534 TCallback<FUsersResponseDto> Callback = {})
const;
536 void CreateGuest(
const FUserObjectRequestDto& User, TCallback<FGuestResponseDto> Callback = {})
const;
538 struct FPartialUpdateUser
541 const TSharedRef<FJsonObject>& Set;
542 const TArray<FString>& Unset;
550 void PartialUpdateUsers(
const TArray<FPartialUpdateUser>& Users, TCallback<FUpdateUsersResponseDto> Callback = {})
const;
557 void UpsertUsers(
const TMap<FString, FUserObjectRequestDto>& Users, TCallback<FUpdateUsersResponseDto> Callback = {})
const;
560#pragma endregion Users
562#pragma region Devices
574 void AddDevice(
const FString& DeviceId, EPushProvider PushProvider, TCallback<FResponseDto> Callback = {})
const;
581 void RemoveDevice(
const FString& DeviceId, TCallback<FResponseDto> Callback = {})
const;
587 void ListDevices(TCallback<FListDevicesResponseDto> Callback = {})
const;
590#pragma endregion Devices
593 explicit FChatApi(
const FString& InApiKey,
const FString& InHost,
const TSharedPtr<FTokenManager>&);
594 void SendChannelEventInternal(
595 const FString& ChannelType,
596 const FString& ChannelId,
597 const TSharedRef<FJsonObject>& Event,
598 TCallback<FEventResponseDto> Callback = {})
const;
600 FString BuildUrl(
const FString& Path)
const;
602 void AddAuth(FRequestBuilder&,
const FToken& Token)
const;
603 void OnRequest(FRequestBuilder&)
const;
604 void OnError(
const FHttpResponse&, FRequestBuilder&)
const;
606 TSharedPtr<FTokenManager> TokenManager;
609 TSharedPtr<FHttpClient> Client;