From 85854badfe762a5d448fc671177c189cce0a6e46 Mon Sep 17 00:00:00 2001
From: YaroslavS <SpesivtsevYM@mpei.ru>
Date: Sun, 25 May 2025 21:24:10 +0300
Subject: [PATCH] =?UTF-8?q?=D0=BE=D0=BA=D0=BE=D0=BD=D1=87=D0=B0=D1=82?=
 =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Histogram/main.cpp | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/Histogram/main.cpp b/Histogram/main.cpp
index 0f6d8c4..cbf5f3c 100644
--- a/Histogram/main.cpp
+++ b/Histogram/main.cpp
@@ -1,12 +1,12 @@
 #include <iostream>
 #include <vector>
-#include <string>
-#include <sstream>
-#include <curl/curl.h>
-#include <cstdlib>
-
 #include "histogram.h"
 #include "text.h"
+#include "svg.h"
+#include <curl/curl.h>
+#include <sstream>
+#include <string>
+
 struct Input{
     std::vector<double> numbers;
     size_t bin_count{};
@@ -37,7 +37,13 @@ Input input_data(std::istream& in, bool prompt) {
 
     return result;
 };
+size_t write_data(void*items,size_t item_size, size_t item_count, void* ctx){
+    size_t data_size = item_size * item_count;
+    std::stringstream* buffer = static_cast<std::stringstream*>(ctx);
+     buffer->write(static_cast<char*>(items), data_size);
+    return data_size;
 
+}
 Input download(const std::string&address){
     std::stringstream buffer;
     CURL* curl = curl_easy_init();
@@ -45,9 +51,8 @@ Input download(const std::string&address){
 
             CURLcode res;
             curl_easy_setopt(curl, CURLOPT_URL, address.c_str());
-
-            TODO:
-
+            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
+            curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
             res = curl_easy_perform(curl);
 
             if (res != CURLE_OK){
@@ -59,10 +64,10 @@ Input download(const std::string&address){
         }
     return input_data(buffer, false);
 }
+
 using namespace std;
 
 int main(int argc, char* argv[]) {
-    curl_global_init(CURL_GLOBAL_ALL);
     Input input;
     if (argc > 1) {
         input = download(argv[1]);
@@ -70,7 +75,7 @@ int main(int argc, char* argv[]) {
         input = input_data(cin, true);
     }
 
-    const auto bins = make_histogram(input.numbers, input.bin_count);
+    auto bins = make_histogram(input.numbers, input.bin_count);
     show_histogram_svg(bins);
     return 0;
 }