/*
 * Copyright 2021 - 2023 gary@drinkingtea.net
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

#pragma once

#include <QNetworkAccessManager>
#include <QObject>
#include <QTimer>

#include "consts.hpp"

class OBSClient: public QObject {
	Q_OBJECT
	private:
		QString m_baseUrl;
		QNetworkAccessManager *m_nam = new QNetworkAccessManager(this);
		QNetworkAccessManager *m_pollingNam = new QNetworkAccessManager(this);
		QTimer m_pollTimer;

	public:
		explicit OBSClient(QObject *parent = nullptr);

	public slots:
		void setScene(QString const&scene);

		void showSlides();

		void hideSlides();

		void setSlidesVisible(bool state);

		void setBaseUrl();

	private:
		void get(QString const&url);

		void poll();

		void handlePollResponse(QNetworkReply *reply);

	signals:
		void pollUpdate();

		void pollFailed();

};