using System;
using System.Linq;
using System.Threading.Tasks;
using Sandbox.Twitch;
namespace Sandbox
{
public struct StreamPoll
{
public struct Choice
{
public string Id { get; internal set; }
public string Title { get; internal set; }
public int Votes { get; internal set; }
public int ChannelPointsVotes { get; internal set; }
public int BitsVotes { get; internal set; }
}
internal StreamPoll( TwitchAPI.PollResponse poll )
{
Id = poll.BroadcasterId;
BroadcasterId = poll.BroadcasterLogin;
BroadcasterName = poll.BroadcasterName;
BroadcasterLogin = poll.BroadcasterLogin;
Title = poll.Title;
BitsVotingEnabled = poll.BitsVotingEnabled;
BitsPerVote = poll.BitsPerVote;
ChannelPointsVotingEnabled = poll.ChannelPointsVotingEnabled;
ChannelPointsPerVote = poll.ChannelPointsPerVote;
Status = poll.Status;
Duration = poll.Duration;
StartedAt = DateTimeOffset.Parse( poll.StartedAt );
EndedAt = DateTimeOffset.Parse( poll.EndedAt );
Choices = poll.Choices.Select( choice => new Choice
{
Id = choice.Id,
Title = choice.Title,
Votes = choice.Votes,
ChannelPointsVotes = choice.ChannelPointsVotes,
BitsVotes = choice.BitsVotes,
} )
.ToArray();
}
///
/// End this poll, you can optionally archive the poll, otherwise just terminate it
///
public Task End( bool archive = true )
{
return Engine.Streamer.CurrentService?.EndPoll( BroadcasterId, Id, archive );
}
public string Id { get; internal set; }
public string BroadcasterId { get; internal set; }
public string BroadcasterName { get; internal set; }
public string BroadcasterLogin { get; internal set; }
public string Title { get; internal set; }
public StreamPoll.Choice[] Choices { get; internal set; }
public bool BitsVotingEnabled { get; internal set; }
public int BitsPerVote { get; internal set; }
public bool ChannelPointsVotingEnabled { get; internal set; }
public int ChannelPointsPerVote { get; internal set; }
public string Status { get; internal set; }
public int Duration { get; internal set; }
public DateTimeOffset StartedAt { get; internal set; }
public DateTimeOffset EndedAt { get; internal set; }
}
}