This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository minilauncher-for-slippi.

View the commit online.

commit 1c017747dd2e33a4479dea1771d9fd445f419eb9
Author: Nekobit <m...@ow.nekobit.net>
AuthorDate: Sat Sep 16 00:15:27 2023 -0400

    Use ecore instead of libcurl
    
    Well, it's technically still libcurl, but now in the Event loop, and a lot cleaner as well
---
 Makefile |   4 +--
 home.c   | 119 +++++++++++++++++++++++++--------------------------------------
 2 files changed, 49 insertions(+), 74 deletions(-)

diff --git a/Makefile b/Makefile
index 3956b24..4bc77d9 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 CC=cc
-CFLAGS=--std=c99 -g `pkg-config --cflags efl ecore elementary libusb-1.0` `sdl2-config --cflags` `curl-config --cflags`
-LDFLAGS=`pkg-config --libs efl ecore elementary libusb-1.0` `sdl2-config --libs` `curl-config --libs` -lcjson
+CFLAGS=--std=c99 -g `pkg-config --cflags efl ecore elementary libusb-1.0` `sdl2-config --cflags` 
+LDFLAGS=`pkg-config --libs efl ecore elementary libusb-1.0` `sdl2-config --libs` -lcjson
 OBJS=main.o replay.o home.o input.o
 
 minilauncher4slippi: $(OBJS)
diff --git a/home.c b/home.c
index bc6c64e..739d08a 100644
--- a/home.c
+++ b/home.c
@@ -1,5 +1,4 @@
 #include <stdio.h>
-#include <curl/curl.h>
 #include <cjson/cJSON.h>
 #include <stdint.h>
 #include "replay.h"
@@ -14,36 +13,36 @@ struct memory_chunk {
 	size_t size;
 };
 
-size_t
-write_callback(char* ptr, size_t size, size_t nmemb, void* userp)
+static Eina_Bool
+releases_data(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info)
 {
-	size_t realsize = size * nmemb;
-	struct memory_chunk* mem = userp;
+	Ecore_Con_Event_Url_Data* ev = event_info;
+	struct memory_chunk* dd = ecore_con_url_data_get(ev->url_con);
 
-	char *nptr = realloc(mem->data, mem->size + realsize + 1);
-	if(!nptr) {
-		/* out of memory! */
-		printf("not enough memory (realloc returned NULL)\n");
-		return 0;
-	}
+	dd->data = "" dd->size + ev->size + 1);
 	
-	mem->data = ""
-	memcpy(&(mem->data[mem->size]), ptr, realsize);
-	mem->size += realsize;
-	mem->data[mem->size] = 0;
-	return realsize;
+	memcpy(dd->data + dd->size, ev->data, ev->size);
+	dd->size += ev->size;
+	dd->data[dd->size] = 0;
+	return EINA_TRUE;
 }
-
-int
-releases_result(struct memory_chunk chunk)
+	
+static Eina_Bool
+releases_result(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info)
 {
-	cJSON* json = cJSON_ParseWithLength(chunk.data, chunk.size);
+	Evas_Object* parent = data;
+	Ecore_Con_Event_Url_Complete* ev = event_info;
+	struct memory_chunk* dd = ecore_con_url_data_get(ev->url_con);
+	cJSON* json = cJSON_ParseWithLength(dd->data, dd->size);
 	if (!json)
 	{
 		fprintf(stderr, "Something happened.\n");
-		return 1;
+		return EINA_FALSE;
 	}
 	
+	// Clear out
+	elm_obj_box_clear(parent);
+	
 	cJSON* release = NULL;
 	//cJSON_ArrayForEach(release, json)
 	int i = 0;
@@ -51,12 +50,12 @@ releases_result(struct memory_chunk chunk)
 	{
 		if (i == 6)
 		{
-			Evas_Object* notice = elm_label_add(tab_home_content);
+			Evas_Object* notice = elm_label_add(parent);
 			elm_object_text_set(notice, "Older releases are collapsed, click to expand");
-			elm_box_pack_end(tab_home_content, notice);
+			elm_box_pack_end(parent, notice);
 			evas_object_show(notice);
 		}
-		Evas_Object* release_fr = elm_frame_add(tab_home_content);
+		Evas_Object* release_fr = elm_frame_add(parent);
 		// Size
 		evas_object_size_hint_weight_set(release_fr, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 		evas_object_size_hint_align_set(release_fr, EVAS_HINT_FILL, EVAS_HINT_FILL);
@@ -64,7 +63,7 @@ releases_result(struct memory_chunk chunk)
 		elm_frame_autocollapse_set(release_fr, EINA_TRUE);
 		if (i > 5)
 			elm_frame_collapse_set(release_fr, EINA_TRUE);
-		elm_box_pack_end(tab_home_content, release_fr);
+		elm_box_pack_end(parent, release_fr);
 		cJSON* title = cJSON_GetObjectItemCaseSensitive(c, "name");
 		if (!title) // (((Rate limit))) and/or whatever bullshit crops up.
 			return 1;
@@ -83,6 +82,8 @@ releases_result(struct memory_chunk chunk)
 		
 		/* Get body_html and manipulate it */
 		cJSON* body = cJSON_GetObjectItemCaseSensitive(c, "body_html");
+		if (!body)
+			return 1;
 		Eina_Strbuf* body_fmt = eina_strbuf_manage_new(body->valuestring);
 		eina_strbuf_replace_all(body_fmt, "\n", "<br>");
 		eina_strbuf_replace_all(body_fmt, "<h1>", "<title>");
@@ -102,61 +103,26 @@ releases_result(struct memory_chunk chunk)
 		
 		//elm_box_pack_end(tab_home_box, fr_box);
 	}
-	return 0;
+	return EINA_TRUE;
 }
 
 void
-_tab_home_make_da_damn_request()
+_tab_home_make_da_damn_request(Evas_Object* parent)
 {
-
-	char curl_errbuf[CURL_ERROR_SIZE];
-	int res;
-	struct memory_chunk data;
-	
-	data.data = ""
-	data.size = 0;
-	
-	CURL* curl = curl_easy_init();
-	curl_easy_setopt(curl, CURLOPT_URL, home_url);
-	curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errbuf);
-	//curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1);
-	//curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);
-	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
-	curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data);
-	curl_easy_setopt(curl, CURLOPT_TIMEOUT, 5);
-	curl_easy_setopt(curl, CURLOPT_USERAGENT, "Minilauncher4slippi/1.0");
-	//application/vnd.github.html+json
-	struct curl_slist *hs=NULL;
-	hs = curl_slist_append(hs, "Accept: application/vnd.github.html");
-	curl_easy_setopt(curl, CURLOPT_HTTPHEADER, hs);
-	
-	res = curl_easy_perform(curl);
-	
-	if(res != CURLE_OK) {
-		fprintf(stderr, "curl_easy_perform() failed: %s\n",
-		                curl_easy_strerror(res));
-	}
-	else {
-		printf("%lu bytes retrieved\n", (unsigned long)data.size);
-		/* cleanup curl stuff */
-	
-		releases_result(data);
-		free(data.data);
-	}
- 
-	curl_easy_cleanup(curl);
-	
-	
-	/* we are done with libcurl, so clean it up */
-	curl_global_cleanup();
-	
+	ecore_con_init();
+	ecore_con_url_init();
+	Ecore_Con_Url* ec_url = ecore_con_url_custom_new(home_url, "GET");
+	ecore_con_url_data_set(ec_url, calloc(1, sizeof(struct memory_chunk)));
+	ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA, releases_data, NULL);
+	ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE, releases_result, parent);
+	ecore_con_url_additional_header_add(ec_url, "User-Agent", "blablabla");
+	ecore_con_url_additional_header_add(ec_url, "Accept", "application/vnd.github.html");
+	ecore_con_url_get(ec_url);
 }
 
 Evas_Object*
 tab_home_setup(Evas_Object* parent)
 {
-	curl_global_init(CURL_GLOBAL_ALL);
-	
 	tab_home = elm_box_add(parent); // Scroller
 	evas_object_size_hint_weight_set(tab_home, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 	evas_object_size_hint_align_set(tab_home, EVAS_HINT_FILL, EVAS_HINT_FILL);
@@ -179,6 +145,15 @@ tab_home_setup(Evas_Object* parent)
 	evas_object_show(tab_home_scr);
 	evas_object_show(tab_home);
 	
-   	_tab_home_make_da_damn_request();
+   	_tab_home_make_da_damn_request(tab_home_content);
+	
+	// Add progress bar for noa
+	Evas_Object* speen = elm_progressbar_add(tab_home_content);
+	elm_object_style_set(speen, "wheel");
+	elm_progressbar_pulse_set(speen, EINA_TRUE);
+	elm_progressbar_pulse(speen, EINA_TRUE);
+	elm_box_pack_end(tab_home_content, speen);
+	evas_object_show(speen);
+	
    	return tab_home;
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to