view include/core/http.h @ 301:b1f625b0227c

*: convert all files CRLF -> LF some files were in DOS format, others were in unix. now everything (that at least is under our control) should all be the same format
author Paper <paper@paper.us.eu.org>
date Mon, 13 May 2024 15:04:51 -0400
parents 9a88e1725fd2
children b1f4d1867ab1
line wrap: on
line source

#ifndef MINORI_CORE_HTTP_H_
#define MINORI_CORE_HTTP_H_

#include <QByteArray>
#include <QThread>

#include <string>
#include <vector>
#include <mutex>

namespace HTTP {

enum class Type {
	Get,
	Post
};

QByteArray Request(const std::string& url, const std::vector<std::string>& headers = {}, const std::string& data = "", Type type = Type::Get);

class RequestThread final : public QThread {
	Q_OBJECT

public:
	RequestThread(Type type = Type::Get, QObject* parent = nullptr);
	RequestThread(const std::string& url, const std::vector<std::string>& headers = {},
		          const std::string& data = "", Type type = Type::Get, QObject* parent = nullptr);
	~RequestThread();

	void SetUrl(const std::string& url);
	void SetHeaders(const std::vector<std::string>& headers);
	void SetData(const std::string& data);
	void SetType(Type type);

	void Stop();

signals:
	void ReceivedData(const QByteArray& ba);

protected:
	void run() override;
	static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userdata);

	std::string url_;
	std::string data_;
	std::vector<std::string> headers_;
	Type type_;

	/* these are passed to the write callback */
	QByteArray array_;
	bool cancelled_ = false;

	/* don't fuck this up */
	std::mutex callback_data_mutex_;
};

} // namespace HTTP

#endif // MINORI_CORE_HTTP_H_