#pragma once

#include "ehs/EHS.h"
#include "ehs/Str.h"
#include "ehs/io/socket/TCP.h"

namespace ehs
{
	class EHS_LIB_IO TwitchChat
	{
	private:
		TCP client;
		Str_8 username;
		Str_8 token;
		Str_8 channel;
		bool initialized;

	public:
		~TwitchChat();

		TwitchChat();

		TwitchChat(const Str_8& username);

		TwitchChat(const Str_8& username, const Str_8& token);

		TwitchChat(const TwitchChat& chat);

		TwitchChat& operator=(const TwitchChat& chat);

		void SetToken(const Str_8& newToken);

		void Initialize();

		void UnInitialize();

		void JoinChannel(const Str_8& newChannel);

		void LeaveChannel();

		void SendPong();

		void SendMsg(const Str_8& msg);

		void WhisperMsg(const Str_8& user, const Str_8& msg);

		Str_8 RecvMsg();

		Str_8 GetUsername() const;

		Str_8 GetChannel() const;
	};
}