]> Nishi Git Mirror - libw3.git/commitdiff
http
authornishi <nishi@d27a3e52-49c5-7645-884c-6793ebffc270>
Wed, 17 Jan 2024 08:52:54 +0000 (08:52 +0000)
committernishi <nishi@d27a3e52-49c5-7645-884c-6793ebffc270>
Wed, 17 Jan 2024 08:52:54 +0000 (08:52 +0000)
git-svn-id: file:///raid/svn-main/nishi-libw3/trunk@12 d27a3e52-49c5-7645-884c-6793ebffc270

Example/fetch.c
Library/Core.c
Library/HTTP.c [new file with mode: 0644]
Library/Makefile
Library/Util.c
Library/W3Core.h
Library/W3HTTP.h [new file with mode: 0644]
Library/W3Util.h

index 6f664e8627a8403fe581c2da5dd3d87c4b08e027..40c033a7bae37ea6155caa385657d38a15bc5622 100644 (file)
@@ -16,4 +16,8 @@ int main(int argc, char** argv){
        }
        W3_Library_Init();
        struct W3* w3 = W3_Create("http", argv[1], 80);
+       W3_Set_Method(w3, "GET");
+       W3_Set_Path(w3, "/sunhttpd");
+       W3_Send_Request(w3);
+       W3_Free(w3);
 }
index c9beb0e88324e922c95b1e1c677d74c6d33d25d0..6ddcca0fd78d1cd664f728a4ccc1dce500267579 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "W3DNS.h"
 #include "W3Util.h"
+#include "W3HTTP.h"
 
 #include <stdio.h>
 #include <string.h>
@@ -38,6 +39,9 @@ struct W3* W3_Create(const char* protocol, const char* hostname, int port){
        ){
                ssl = true;
        }
+       w3->method = NULL;
+       w3->path = NULL;
+       w3->protocol = __W3_Strdup(protocol);
        if(ssl) __W3_Debug("Protocol", "Enabled SSL");
        w3->sock = __W3_DNS_Connect(hostname, ssl, port
 #ifdef SSL_SUPPORT
@@ -48,3 +52,27 @@ struct W3* W3_Create(const char* protocol, const char* hostname, int port){
        );
        return w3;
 }
+
+void W3_Set_Method(struct W3* w3, const char* method){
+       if(w3->method != NULL) free(w3->method);
+       w3->method = __W3_Strdup(method);
+}
+
+void W3_Set_Path(struct W3* w3, const char* path){
+       if(w3->path != NULL) free(w3->path);
+       w3->path = __W3_Strdup(path);
+}
+
+void W3_Send_Request(struct W3* w3){
+       if(strcmp(w3->protocol, "http") == 0 || strcmp(w3->protocol, "https") == 0){
+               __W3_HTTP_Request(w3);
+       }
+}
+
+void W3_Free(struct W3* w3){
+       __W3_Debug("LibW3", "Freeing");
+       if(w3->method != NULL) free(w3->method);
+       if(w3->path != NULL) free(w3->path);
+       if(w3->protocol != NULL) free(w3->protocol);
+       free(w3);
+}
diff --git a/Library/HTTP.c b/Library/HTTP.c
new file mode 100644 (file)
index 0000000..690e379
--- /dev/null
@@ -0,0 +1,9 @@
+/* $Id$ */
+#include "W3HTTP.h"
+
+#include "W3Core.h"
+#include "W3Util.h"
+
+void __W3_HTTP_Request(struct W3* w3){
+       __W3_Debug("LibW3-HTTP", "Sending the request");
+}
index 08147f61b549928ad02c6f9ee15c5c2b724b0167..07e0663b22a9ebe6db62aac3b898676d82cf9f5f 100644 (file)
@@ -1,7 +1,7 @@
 # $Id$
 .PHONY: clean install
 
-./libw3.so: ./Core.o ./Util.o ./DNS.o
+./libw3.so: ./Core.o ./Util.o ./DNS.o ./HTTP.o
        $(CC) $(LDFLAGS) -shared -o $@ $^ $(LIBS)
 
 ./%.o: ./%.c W3%.h
index 906e2792cc131da5b1b21770cd91e892780bb0eb..8d87cd45debb721838055659881ae7d0ad80baab 100644 (file)
@@ -23,3 +23,16 @@ char* __W3_Concat(const char* str1, const char* str2){
        str[strlen(str1) + strlen(str2)] = 0;
        return str;
 }
+
+char* __W3_Concat3(const char* str1, const char* str2, const char* str3){
+       char* tmp = __W3_Concat(str1, str2);
+       char* str = __W3_Concat(tmp, str3);
+       free(tmp);
+       return str;
+}
+
+char* __W3_Strdup(const char* str){
+       char* result = malloc(strlen(str) + 1);
+       memcpy(result, str, strlen(str) + 1);
+       return result;
+}
index 3ed745fb455d32d9765cf8e75df8a379dbb58072..a232ae4bd120123e2b2f5d207a9c6d2f00be97bb 100644 (file)
@@ -8,6 +8,9 @@
 
 struct W3 {
        int sock;       /* Socket */
+       char* protocol; /* As you can read from its name */
+       char* method;   /* Used in HTTP */
+       char* path;     /* As you can read from its name */
 #ifdef SSL_SUPPORT
        void* ssl;      /* Actually SSL*, NULL if no SSL */
        void* ssl_ctx;  /* Actually SSL_CTX* */
@@ -17,4 +20,9 @@ struct W3 {
 int W3_Library_Init(void);                                                     /* Initialize the Library */
 struct W3* W3_Create(const char* protocol, const char* hostname, int port);    /* Create the struct */
 
+void W3_Set_Method(struct W3* w3, const char* method);                         /* Set the method */
+void W3_Set_Path(struct W3* w3, const char* path);                             /* Set the path */
+void W3_Send_Request(struct W3* w3);                                           /* Send the request */
+void W3_Free(struct W3* w3);                                                   /* Free the struct */
+
 #endif
diff --git a/Library/W3HTTP.h b/Library/W3HTTP.h
new file mode 100644 (file)
index 0000000..33e655a
--- /dev/null
@@ -0,0 +1,8 @@
+/* $Id$ */
+#ifndef __W3HTTP_H__
+#define __W3HTTP_H__
+
+#include "W3Core.h"
+void __W3_HTTP_Request(struct W3* w3);
+
+#endif
index 9eefd88b7327f03c0f6514792da74079450cea87..11566552ca923b797a7d93ad15f5bf64677fed08 100644 (file)
@@ -4,5 +4,7 @@
 
 void __W3_Debug(const char* title, const char* message);
 char* __W3_Concat(const char* str1, const char* str2);
+char* __W3_Concat3(const char* str1, const char* str2, const char* str3);
+char* __W3_Strdup(const char* str);
 
 #endif