Now handle Gemini requests
This commit is contained in:
parent
d0a0e2499d
commit
5df3a69a81
2
Makefile
2
Makefile
|
@ -9,7 +9,7 @@ all: debug
|
|||
|
||||
debug:
|
||||
mkdir -p build/debug
|
||||
$(CC) -o $(BUILD_DIR)/debug/$(BUILD_NAME)-$(OS) $(CFLAGS) -Iinclude -lcrypto -lssl src/* lib/gemini.c
|
||||
$(CC) -o $(BUILD_DIR)/debug/$(BUILD_NAME)-$(OS) $(CFLAGS) -Iinclude -lcrypto -lssl src/* lib/*
|
||||
|
||||
test: testgemparse testurllib
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
#ifndef _URL_H
|
||||
#define _URL_H
|
||||
|
||||
typedef struct _url {
|
||||
char *scheme;
|
||||
char *host;
|
||||
char *port;
|
||||
char *path;
|
||||
} Url;
|
||||
|
||||
Url *urllib_init (void);
|
||||
void urllib_free (Url *url);
|
||||
int urllib_parse (Url *url, const char *url_string);
|
||||
void urllib_tostring (Url *url, char *dest);
|
||||
int urllib_join (Url *url, const char *path);
|
||||
|
||||
#endif
|
15
lib/url.c
15
lib/url.c
|
@ -3,21 +3,10 @@
|
|||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <url.h>
|
||||
|
||||
#ifdef TESTURLLIB
|
||||
|
||||
typedef struct _url {
|
||||
char *scheme;
|
||||
char *host;
|
||||
char *port;
|
||||
char *path;
|
||||
} Url;
|
||||
|
||||
Url *urllib_init (void);
|
||||
void urllib_free (Url *url);
|
||||
int urllib_parse (Url *url, const char *url_string);
|
||||
void urllib_tostring (Url *url, char *dest);
|
||||
int urllib_join (Url *url, const char *path);
|
||||
|
||||
int
|
||||
main (int argc,
|
||||
char **argv)
|
||||
|
|
33
src/main.c
33
src/main.c
|
@ -3,6 +3,7 @@
|
|||
#include <gemgui.h>
|
||||
#include <gemparse.h>
|
||||
#include <gemini.h>
|
||||
#include <url.h>
|
||||
|
||||
GtkEntryBuffer *pathBarContent = NULL;
|
||||
GtkWidget *render = NULL;
|
||||
|
@ -33,10 +34,36 @@ loadPage (const char *link)
|
|||
FILE *file = tmpfile ();
|
||||
if (file != NULL)
|
||||
{
|
||||
GEM_send_request ("gemini://rdelaage.ovh\r\n", "rdelaage.ovh:1965", file);
|
||||
makeRender (file);
|
||||
Url *url = urllib_init ();
|
||||
|
||||
fclose (file);
|
||||
if (url != NULL)
|
||||
{
|
||||
if (!urllib_parse (url, link))
|
||||
{
|
||||
char request[1030];
|
||||
char host[1024];
|
||||
|
||||
sprintf (request, "%s\r\n", link);
|
||||
sprintf (host, "%s:%s", url->host, url->port ? url->port : "1965");
|
||||
|
||||
GEM_send_request (request, host, file);
|
||||
makeRender (file);
|
||||
|
||||
fclose (file);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_container_foreach (GTK_CONTAINER (render), (GtkCallback)gtk_widget_destroy, NULL);
|
||||
addH1 (render, "Invalid Gemini URL !");
|
||||
}
|
||||
|
||||
urllib_free (url);
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_container_foreach (GTK_CONTAINER (render), (GtkCallback)gtk_widget_destroy, NULL);
|
||||
addH1 (render, "Failed to create URL !");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue