summaryrefslogtreecommitdiffstats
path: root/examples/nanohttp
diff options
context:
space:
mode:
authorGravatar m0gg2006-11-30 14:23:58 +0000
committerGravatar m0gg2006-11-30 14:23:58 +0000
commitdf58dad240fe368c261263e248d3520d3e0be1a3 (patch)
tree3fe4e4f6c318aee4bce1b72e0827a8f3300f3b7b /examples/nanohttp
parentcbd1f84a6125931a2f64279aa5da5121a66e3cf1 (diff)
downloadcsoap-df58dad240fe368c261263e248d3520d3e0be1a3.tar.gz
csoap-df58dad240fe368c261263e248d3520d3e0be1a3.tar.bz2
Code cleanup
Diffstat (limited to 'examples/nanohttp')
-rw-r--r--examples/nanohttp/client_get.c112
-rw-r--r--examples/nanohttp/http_client.c214
-rw-r--r--examples/nanohttp/http_server.c239
3 files changed, 219 insertions, 346 deletions
diff --git a/examples/nanohttp/client_get.c b/examples/nanohttp/client_get.c
deleted file mode 100644
index 4015ed2..0000000
--- a/examples/nanohttp/client_get.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/******************************************************************
-* $Id: client_get.c,v 1.1 2004/10/15 13:42:07 snowdrop Exp $
-*
-* CSOAP Project: A http client/server library in C (example)
-* Copyright (C) 2003-2004 Ferhat Ayaz
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Library General Public
-* License as published by the Free Software Foundation; either
-* version 2 of the License, or (at your option) any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Library General Public License for more details.
-*
-* You should have received a copy of the GNU Library General Public
-* License along with this library; if not, write to the
-* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-* Boston, MA 02111-1307, USA.
-*
-* Email: ferhatayaz@yahoo.com
-******************************************************************/
-#define MEM_DEBUG
-#include <stdio.h>
-#include <nanohttp/nanohttp-client.h>
-
-#ifdef MEM_DEBUG
-#include <utils/alloc.h>
-#endif
-
-#define MAX_BUFFER_SIZE 1024
-
-static
-void show_response(hresponse_t *res)
-{
- hpair_t *pair;
- byte_t buffer[MAX_BUFFER_SIZE+1];
- int read;
-
- if (res == NULL)
- {
- log_error1("Response is NULL!");
- return;
- }
-
- log_info2("Status: %d", res->errcode);
- log_info2("Desc : '%s'", res->desc);
-
- pair = res->header;
- while (pair != NULL) {
- log_debug3("%s: %s", pair->key, pair->value);
- pair = pair->next;
- }
-
- if (res->in == NULL)
- {
- log_warn1("No input stream!");
- return;
- }
-
-
- while (http_input_stream_is_ready(res->in))
- {
- read = http_input_stream_read(res->in, buffer, MAX_BUFFER_SIZE);
- buffer[read] = '\0';
- puts(buffer);
- }
-
-}
-
-int main(int argc, char *argv[])
-{
- httpc_conn_t *conn; /* Client connection object */
- hresponse_t *res; /* Response object **/
-
- /* check usage */
- if (argc < 2) {
- fprintf(stderr, "usage %s <url>\n", argv[0]);
- exit(1);
- }
-
- /* Set log level to see more information written by the library */
- log_set_level(HLOG_VERBOSE);
-
- /* Initialize httpc module */
- if (httpc_init(argc, argv))
- {
- log_error1("Can not init httpc");
- return 1;
- }
-
- /* Create the client connection object */
- conn = httpc_new();
-
- /* Send GET method and receive response */
- res = httpc_get(conn, argv[1]);
-
- /* Show response */
- show_response(res);
-
- /* Clean up */
- hresponse_free(res);
- httpc_free(conn);
-
-#ifdef MEM_DEBUG
- _mem_report();
-#endif
-
- return 0;
-}
-
diff --git a/examples/nanohttp/http_client.c b/examples/nanohttp/http_client.c
index e320cb9..7c1b2f0 100644
--- a/examples/nanohttp/http_client.c
+++ b/examples/nanohttp/http_client.c
@@ -1,5 +1,5 @@
/******************************************************************
-* $Id: http_client.c,v 1.6 2006/11/25 15:06:57 m0gg Exp $
+* $Id: http_client.c,v 1.7 2006/11/30 14:23:59 m0gg Exp $
*
* CSOAP Project: A http client/server library in C (example)
* Copyright (C) 2003-2004 Ferhat Ayaz
@@ -25,13 +25,7 @@
#include <stdlib.h>
#include <string.h>
-#include <nanohttp/nanohttp-error.h>
-#include <nanohttp/nanohttp-common.h>
-#include <nanohttp/nanohttp-stream.h>
-#include <nanohttp/nanohttp-request.h>
-#include <nanohttp/nanohttp-response.h>
#include <nanohttp/nanohttp-client.h>
-#include <nanohttp/nanohttp-logging.h>
#define MAX_BUFFER_SIZE 1024
@@ -42,109 +36,109 @@ static int show_content = 1;
static char *username = NULL;
static char *password = NULL;
-static void show_response(hresponse_t *res) {
-
- unsigned char buffer[MAX_BUFFER_SIZE+1];
- int read;
-
- if (!res) {
-
- printf("hresponse_t is NULL!");
- return;
- }
-
- if (res->errcode != 200 || show_http_status_code)
- printf("HTTP Status: %d \"%s\"\n", res->errcode, res->desc);
-
- if (show_headers) {
-
- hpair_t *pair;
- printf("HTTP Headers:\n");
- for (pair = res->header; pair; pair=pair->next)
- printf(" %s: %s\n", pair->key, pair->value);
- }
-
- if (!res->in) {
-
- log_warn1("No input stream!");
- return;
- }
-
- while (http_input_stream_is_ready(res->in)) {
-
- read = http_input_stream_read(res->in, buffer, MAX_BUFFER_SIZE);
-
- if (show_content)
- fwrite(buffer, read, 1, stdout);
- }
- return;
+static void show_response(hresponse_t *res)
+{
+ unsigned char buffer[MAX_BUFFER_SIZE+1];
+ int read;
+
+ if (!res)
+ {
+ fprintf(stderr, "hresponse_t is NULL!");
+ return;
+ }
+
+ if (res->errcode != 200 || show_http_status_code)
+ printf("HTTP Status: %d \"%s\"\n", res->errcode, res->desc);
+
+ if (show_headers)
+ {
+ hpair_t *pair;
+ printf("HTTP Headers:\n");
+ for (pair = res->header; pair; pair=pair->next)
+ printf(" %s: %s\n", pair->key, pair->value);
+ }
+
+ if (!res->in)
+ {
+ fprintf(stderr, "No input stream!");
+ return;
+ }
+
+ while (http_input_stream_is_ready(res->in))
+ {
+ read = http_input_stream_read(res->in, buffer, MAX_BUFFER_SIZE);
+
+ if (show_content)
+ fwrite(buffer, read, 1, stdout);
+ }
+ return;
}
-int main(int argc, char **argv) {
-
- httpc_conn_t *conn; /* Client connection object */
- hresponse_t *res; /* Response object **/
- herror_t status;
- int i;
-
- /* check usage */
- if (argc < 2) {
-
- fprintf(stderr, "usage: %s [-headers] [-status] [-noout] [-username name] [-password secret] <url>\n", argv[0]);
- exit(1);
- }
-
- /* XXX: this is not safe... */
- for (i=0; i<argc; i++) {
-
- if (!strcmp("-headers", argv[i]))
- show_headers = 1;
- else if (!strcmp("-status", argv[i]))
- show_http_status_code = 1;
- else if (!strcmp("-noout", argv[i]))
- show_content = 0;
- else if (!strcmp("-username", argv[i]))
- username = argv[i+1];
- else if (!strcmp("-password", argv[i]))
- password = argv[i+1];
- }
-
- /* Set log level to see more information written by the library */
- hlog_set_level(HLOG_INFO);
-
- /* Initialize httpc module */
- if (httpc_init(argc, argv)) {
-
- log_error1("Cannot init httpc");
- exit(1);
- }
-
- /* Create the client connection object */
- if (!(conn = httpc_new())) {
-
- log_error1("httpc_new failed");
- exit(1);
- }
-
- /* set the credentials, if specified */
- if (username || password)
- httpc_set_basic_authorization(conn, username, password);
-
- /* Send GET method and receive response */
- if ((status = httpc_get(conn, &res, argv[argc-1])) != H_OK) {
-
- log_error2("httpc_get failed (%s)", herror_message(status));
- herror_release(status);
- exit(1);
- }
-
- /* Show response */
- show_response(res);
-
- /* Clean up */
- hresponse_free(res);
-
- httpc_free(conn);
-
- return 0;
+int main(int argc, char **argv)
+{
+ httpc_conn_t *conn; /* Client connection object */
+ hresponse_t *res; /* Response object **/
+ herror_t status;
+ int i;
+
+ /* check usage */
+ if (argc < 2)
+ {
+ fprintf(stderr, "usage: %s [-headers] [-status] [-noout] [-username name] [-password secret] <url>\n", argv[0]);
+ exit(1);
+ }
+
+ /* XXX: this is not safe... */
+ for (i=0; i<argc; i++)
+ {
+ if (!strcmp("-headers", argv[i]))
+ show_headers = 1;
+ else if (!strcmp("-status", argv[i]))
+ show_http_status_code = 1;
+ else if (!strcmp("-noout", argv[i]))
+ show_content = 0;
+ else if (!strcmp("-username", argv[i]))
+ username = argv[i+1];
+ else if (!strcmp("-password", argv[i]))
+ password = argv[i+1];
+ }
+
+ /* Set log level to see more information written by the library */
+ hlog_set_level(HLOG_INFO);
+
+ /* Initialize httpc module */
+ if (httpc_init(argc, argv))
+ {
+ fprintf(stderr, "Cannot inititialize httpc");
+ exit(1);
+ }
+
+ /* Create the client connection object */
+ if (!(conn = httpc_new()))
+ {
+ fprintf(stderr, "httpc_new failed");
+ exit(1);
+ }
+
+ /* set the credentials, if specified */
+ if (username || password)
+ httpc_set_basic_authorization(conn, username, password);
+
+ /* Send GET method and receive response */
+ if ((status = httpc_get(conn, &res, argv[argc-1])) != H_OK)
+ {
+ fprintf(stderr, "httpc_get failed (%s)", herror_message(status));
+ herror_release(status);
+ exit(1);
+ }
+
+ /* Show response */
+ show_response(res);
+
+ /* Clean up */
+ hresponse_free(res);
+
+ httpc_free(conn);
+
+ return 0;
}
diff --git a/examples/nanohttp/http_server.c b/examples/nanohttp/http_server.c
index 0e1659a..40443e8 100644
--- a/examples/nanohttp/http_server.c
+++ b/examples/nanohttp/http_server.c
@@ -1,5 +1,5 @@
/******************************************************************
-* $Id: http_server.c,v 1.9 2006/11/25 16:35:57 m0gg Exp $
+* $Id: http_server.c,v 1.10 2006/11/30 14:23:59 m0gg Exp $
*
* CSOAP Project: A http client/server library in C (example)
* Copyright (C) 2003 Ferhat Ayaz
@@ -24,169 +24,160 @@
#include <stdio.h>
#include <string.h>
-#include <nanohttp/nanohttp-error.h>
-#include <nanohttp/nanohttp-common.h>
-#include <nanohttp/nanohttp-stream.h>
-#include <nanohttp/nanohttp-request.h>
-#include <nanohttp/nanohttp-response.h>
#include <nanohttp/nanohttp-server.h>
-#include <nanohttp/nanohttp-logging.h>
static int simple_authenticator(struct hrequest_t *req, const char *user, const char *password)
{
+ fprintf(stdout, "logging in user=\"%s\" password=\"%s\"", user, password);
- log_info3("logging in user=\"%s\" password=\"%s\"", user, password);
+ if (strcmp(user, "bob")) {
- if (strcmp(user, "bob")) {
+ fprintf(stderr, "user \"%s\" unkown", user);
+ return 0;
+ }
- log_warn2("user \"%s\" unkown", user);
- return 0;
- }
+ if (strcmp(password, "builder")) {
- if (strcmp(password, "builder")) {
+ fprintf(stderr, "wrong password");
+ return 0;
+ }
- log_warn1("wrong password");
- return 0;
- }
-
- return 1;
+ return 1;
}
static void secure_service(httpd_conn_t *conn, struct hrequest_t *req)
{
-
- httpd_send_header(conn, 200, HTTP_STATUS_200_REASON_PHRASE);
- http_output_stream_write_string(conn->out,
- "<html>"
- "<head>"
- "<title>Secure ressource!</title>"
- "</head>"
- "<body>"
- "<h1>Authenticated access!!!</h1>"
- "</body>"
- "</html>");
-
- return;
+ httpd_send_header(conn, 200, HTTP_STATUS_200_REASON_PHRASE);
+ http_output_stream_write_string(conn->out,
+ "<html>"
+ "<head>"
+ "<title>Secure ressource!</title>"
+ "</head>"
+ "<body>"
+ "<h1>Authenticated access!!!</h1>"
+ "</body>"
+ "</html>");
+
+ return;
}
static void default_service(httpd_conn_t *conn, struct hrequest_t *req)
{
-
- httpd_send_header(conn, 404, HTTP_STATUS_404_REASON_PHRASE);
- http_output_stream_write_string(conn->out,
- "<html>"
- "<head>"
- "<title>Default error page</title>"
- "</head>"
- "<body>"
- "<h1>Default error page</h1>"
- "<div>");
-
- http_output_stream_write_string(conn->out, req->path);
-
- http_output_stream_write_string(conn->out, " can not be found"
- "</div>"
- "</body>"
- "</html>");
-
- return;
-}
+ httpd_send_header(conn, 404, HTTP_STATUS_404_REASON_PHRASE);
+ http_output_stream_write_string(conn->out,
+ "<html>"
+ "<head>"
+ "<title>Default error page</title>"
+ "</head>"
+ "<body>"
+ "<h1>Default error page</h1>"
+ "<div>");
+
+ http_output_stream_write_string(conn->out, req->path);
+
+ http_output_stream_write_string(conn->out, " can not be found"
+ "</div>"
+ "</body>"
+ "</html>");
+
+ return;
+}
static void headers_service(httpd_conn_t *conn, struct hrequest_t *req)
{
- hpair_t *walker;
-
- httpd_send_header(conn, 200, HTTP_STATUS_200_REASON_PHRASE);
- http_output_stream_write_string(conn->out,
- "<html>"
- "<head>"
- "<title>Request headers</title>"
- "</head>"
- "<body>"
- "<h1>Request headers</h1>"
- "<ul>");
-
- for (walker=req->header; walker; walker=walker->next)
- {
- http_output_stream_write_string(conn->out, "<li>");
- http_output_stream_write_string(conn->out, walker->key);
- http_output_stream_write_string(conn->out, " = ");
- http_output_stream_write_string(conn->out, walker->value);
- http_output_stream_write_string(conn->out, "</li>");
- }
-
- http_output_stream_write_string(conn->out,
- "</ul>"
- "</body>"
- "</html>");
-
- return;
+ hpair_t *walker;
+
+ httpd_send_header(conn, 200, HTTP_STATUS_200_REASON_PHRASE);
+ http_output_stream_write_string(conn->out,
+ "<html>"
+ "<head>"
+ "<title>Request headers</title>"
+ "</head>"
+ "<body>"
+ "<h1>Request headers</h1>"
+ "<ul>");
+
+ for (walker=req->header; walker; walker=walker->next)
+ {
+ http_output_stream_write_string(conn->out, "<li>");
+ http_output_stream_write_string(conn->out, walker->key);
+ http_output_stream_write_string(conn->out, " = ");
+ http_output_stream_write_string(conn->out, walker->value);
+ http_output_stream_write_string(conn->out, "</li>");
+ }
+
+ http_output_stream_write_string(conn->out,
+ "</ul>"
+ "</body>"
+ "</html>");
+
+ return;
}
static void root_service(httpd_conn_t *conn, struct hrequest_t *req)
{
- httpd_send_header(conn, 200, HTTP_STATUS_200_REASON_PHRASE);
- http_output_stream_write_string(conn->out,
- "<html>"
- "<head>"
- "<title>nanoHTTP server examples</title>"
- "</head>"
- "<body>"
- "<h1>nanoHTTP server examples</h1>"
- "<ul>"
- "<li><a href=\"/\">Simple service</a></li>"
- "<li><a href=\"/secure\">Secure service</a> (try: bob/builder)</li>"
- "<li><a href=\"/headers\">Request headers</a></li>"
- "<li><a href=\"/not_existent\">The default service</a></li>"
- "<li><a href=\"/nhttp\">Admin page</a> (try -NHTTPDadmin on the command line)</li>"
- "</ul>"
- "</body>"
- "</html>");
-
- return;
+ httpd_send_header(conn, 200, HTTP_STATUS_200_REASON_PHRASE);
+ http_output_stream_write_string(conn->out,
+ "<html>"
+ "<head>"
+ "<title>nanoHTTP server examples</title>"
+ "</head>"
+ "<body>"
+ "<h1>nanoHTTP server examples</h1>"
+ "<ul>"
+ "<li><a href=\"/\">Simple service</a></li>"
+ "<li><a href=\"/secure\">Secure service</a> (try: bob/builder)</li>"
+ "<li><a href=\"/headers\">Request headers</a></li>"
+ "<li><a href=\"/not_existent\">The default service</a></li>"
+ "<li><a href=\"/nhttp\">Admin page</a> (try -NHTTPDadmin on the command line)</li>"
+ "</ul>"
+ "</body>"
+ "</html>");
+
+ return;
}
int main(int argc, char **argv)
{
- hlog_set_level(HLOG_INFO);
+ hlog_set_level(HLOG_INFO);
- if (httpd_init(argc, argv)) {
+ if (httpd_init(argc, argv)) {
- fprintf(stderr, "Cannot init httpd");
- return 1;
- }
+ fprintf(stderr, "Cannot init httpd");
+ return 1;
+ }
- if (!httpd_register("/", root_service)) {
+ if (!httpd_register("/", root_service)) {
- fprintf(stderr, "Cannot register service");
- return 1;
- }
+ fprintf(stderr, "Cannot register service");
+ return 1;
+ }
- if (!httpd_register_secure("/secure", secure_service, simple_authenticator)) {
+ if (!httpd_register_secure("/secure", secure_service, simple_authenticator)) {
- fprintf(stderr, "Cannot register secure service");
- return 1;
- }
+ fprintf(stderr, "Cannot register secure service");
+ return 1;
+ }
- if (!httpd_register("/headers", headers_service)) {
+ if (!httpd_register("/headers", headers_service)) {
- fprintf(stderr, "Cannot register headers service");
- return 1;
- }
+ fprintf(stderr, "Cannot register headers service");
+ return 1;
+ }
- if (!httpd_register_default("/error", default_service)) {
+ if (!httpd_register_default("/error", default_service)) {
- fprintf(stderr, "Cannot register default service");
- return 1;
- }
+ fprintf(stderr, "Cannot register default service");
+ return 1;
+ }
- if (httpd_run()) {
+ if (httpd_run()) {
- fprintf(stderr, "can not run httpd");
- return 1;
- }
+ fprintf(stderr, "can not run httpd");
+ return 1;
+ }
- httpd_destroy();
+ httpd_destroy();
- return 0;
+ return 0;
}