#include <iostream>
#include <vector>

#include "histogram.h"
#include "text.h"
#include <curl/curl.h>
#include <sstream>





using namespace std;


struct Input { 
	// Создание структуры 
	vector <double> numbers;
	size_t bin_count{};
};

Input




input_data(istream& hin, bool promt = false) {
	// Функция ввода
	//Создание переменных

	size_t number_count;
	Input in;
	
	

	// Ввод переменных

	if (promt == true) {
		cerr << "Enter number count: " << endl;
	}

	hin >> number_count;

	in.numbers.resize(number_count);

	if (promt == true) {
		cerr << "Enter numbers: " << endl;
	}

	for (int i = 0; i < number_count; i++) {
		hin >> in.numbers[i];

	}
	if (promt == true) {
		cerr << "Enter bin count: " << endl;
	}

	hin >> in.bin_count;

	return in;
}


Input download(const string& address) {
	stringstream buffer;



	curl_global_init(CURL_GLOBAL_ALL);

	CURL* curl = curl_easy_init();
	if (curl) {
		CURLcode res;
		curl_easy_setopt(curl, CURLOPT_URL, address.c_str());
		res = curl_easy_perform(curl);
		curl_easy_cleanup(curl);

		if (CURLE_OK != 0) {
			cout << curl_easy_strerror(res) << endl;
			exit(1);
		}


		curl_easy_cleanup(curl);
	}

	return input_data(buffer, false);
}




int main(int argc, char* argv[])
{

	Input in;
	if (argc > 1) {
		in = download(argv[1]);
	}
	else {
		in = input_data(cin, true);
	}





	

	//cout << "DO YOU NEED CERR? (YES/NO)" << endl;

	//while (true) {
	//	cin >> promt;
	//	if (promt == "YES") {
	//		promt1 = true;
	//		break;
	//	} else if (promt == "NO") {
	//		promt1 = false;
	//		break;
	//	} else {
	//		cout << "NORMALLY PLS: ";
	//	}
	//	cout << endl;
	//}


	// Функция main 
	auto bins = make_histogram(in.numbers, in.bin_count); // Распределние по корзинам
	show_histogram_svg(bins); // Вывод графика



	

	// О

	






	return 0;
}

