Files
sbox-public/engine/Sandbox.Engine/Platform/Stream/Twitch/TwitchAPI.Channels.cs
s&box team 71f266059a Open source release
This commit imports the C# engine code and game files, excluding C++ source code.

[Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
2025-11-24 09:05:18 +00:00

71 lines
1.9 KiB
C#

using System.Linq;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace Sandbox.Twitch
{
internal partial class TwitchAPI
{
public class ChannelResponse
{
[JsonPropertyName( "broadcaster_id" )]
public string BroadcasterId { get; set; }
[JsonPropertyName( "broadcaster_login" )]
public string BroadcasterLogin { get; set; }
[JsonPropertyName( "broadcaster_name" )]
public string BroadcasterName { get; set; }
[JsonPropertyName( "broadcaster_language" )]
public string BroadcasterLanguage { get; set; }
[JsonPropertyName( "game_id" )]
public string GameId { get; set; }
[JsonPropertyName( "game_name" )]
public string GameName { get; set; }
[JsonPropertyName( "title" )]
public string Title { get; set; }
[JsonPropertyName( "delay" )]
public int Delay { get; set; }
}
public class ChannelsResponse
{
[JsonPropertyName( "data" )]
public ChannelResponse[] Channels { get; set; }
public ChannelResponse FirstOrDefault() => Channels != null && Channels.Length > 0 ? Channels.FirstOrDefault() : null;
}
public async Task<ChannelResponse> GetChannel( string userId )
{
var response = await Get<ChannelsResponse>( $"/channels?broadcaster_id={userId}" );
return response?.FirstOrDefault();
}
public async void SetChannelGame( string userId, string gameId )
{
await Patch( $"/channels?broadcaster_id={userId}", $"{{\"game_id\":\"{gameId}\"}}" );
}
public async void SetChannelLanguage( string userId, string language )
{
await Patch( $"/channels?broadcaster_id={userId}", $"{{\"broadcaster_language\":\"{language}\"}}" );
}
public async void SetChannelTitle( string userId, string title )
{
await Patch( $"/channels?broadcaster_id={userId}", $"{{\"title\":\"{title}\"}}" );
}
public async void SetChannelDelay( string userId, int delay )
{
await Patch( $"/channels?broadcaster_id={userId}", $"{{\"delay\":{delay}}}" );
}
}
}