Browse Source

a taste of ajax

master
Georg Hopp 14 years ago
parent
commit
4b5bcf89c0
  1. 3
      include/http/response.h
  2. 3
      src/Makefile.am
  3. 36
      src/http/response/me.c
  4. 6
      src/http/worker/process.c
  5. 2
      src/server/write.c

3
include/http/response.h

@ -43,7 +43,8 @@ HttpResponse httpResponse304(
const char *, size_t, const char *, size_t,
const char *, size_t); const char *, size_t);
HttpResponse httpResponse404(); HttpResponse httpResponse404();
HttpResponse httpResponseMe(int);
HttpResponse httpResponseMe();
HttpResponse httpResponseRandval(int);
HttpResponse httpResponseAsset( HttpResponse httpResponseAsset(
const char *, const char *,
const char *, size_t, const char *, size_t,

3
src/Makefile.am

@ -27,7 +27,8 @@ RESP = http/response.c \
http/response/304.c \ http/response/304.c \
http/response/404.c \ http/response/404.c \
http/response/asset.c \ http/response/asset.c \
http/response/me.c
http/response/me.c \
http/response/randval.c
PARSER = http/parser.c \ PARSER = http/parser.c \
http/parser/parse.c \ http/parser/parse.c \
http/parser/new_message.c \ http/parser/new_message.c \

36
src/http/response/me.c

@ -39,27 +39,47 @@
" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" \ " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" \
"<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">" \ "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">" \
"<head>" \ "<head>" \
"<title>200 - OK</title>" \
"<title>My own little Web-App</title>" \
"<style type=\"text/css\">" \
"div#randval {" \
"width: 120px;" \
"height: 30px;" \
"left: 200px;" \
"top: 100px;" \
"position: fixed;" \
"overflow: none;" \
"background-color: white;" \
"border: 1px solid black;" \
"}" \
"div.hide#randval {" \
"top: -50px;" \
"}" \
"</style>" \
"<script type=\"text/javascript\" src=\"/jquery/\"></script>" \ "<script type=\"text/javascript\" src=\"/jquery/\"></script>" \
"<script>" \ "<script>" \
"$(document).ready(function() {" \ "$(document).ready(function() {" \
"$(\"a\").click(function() {" \ "$(\"a\").click(function() {" \
"alert(\"Hello world!\");" \
"$(\"#randval\").load(\"/randval/\");" \
"$(\"#randval\").removeClass(\"hide\");" \
"});" \
"$(\"#randval\").click(function() {" \
"$(\"#randval\").addClass(\"hide\");" \
"});" \ "});" \
"});" \ "});" \
"</script>" \ "</script>" \
"</head>" \ "</head>" \
"<body>" \ "<body>" \
"<div id=\"randval\" class=\"hide\"></div>" \
"<div id=\"main\">" \
"<h1>Testpage</h1>" \ "<h1>Testpage</h1>" \
"<img src=\"/image/\" />" \ "<img src=\"/image/\" />" \
"<hr />%02d" \
"<hr /><a href=\"#\">Link</a>" \ "<hr /><a href=\"#\">Link</a>" \
"</div>" \
"</body>" \ "</body>" \
"</html>" "</html>"
HttpResponse HttpResponse
httpResponseMe(int value)
httpResponseMe()
{ {
char buffer[200]; char buffer[200];
HttpResponse response; HttpResponse response;
@ -89,9 +109,9 @@ httpResponseMe(int value)
sizeof("profession=\"coder\"")-1)); sizeof("profession=\"coder\"")-1));
message->type = HTTP_MESSAGE_BUFFERED; message->type = HTTP_MESSAGE_BUFFERED;
message->nbody = sizeof(RESP_DATA)-1-2;
message->body = malloc(sizeof(RESP_DATA)-2);
sprintf(message->body, RESP_DATA, value);
message->nbody = sizeof(RESP_DATA)-1;
message->body = malloc(sizeof(RESP_DATA)-1);
memcpy(message->body, RESP_DATA, sizeof(RESP_DATA)-1);
nbuf = sprintf(buffer, "%d", message->nbody); nbuf = sprintf(buffer, "%d", message->nbody);

6
src/http/worker/process.c

@ -55,7 +55,11 @@ httpWorkerProcess(HttpWorker this, int fd)
if (0 == strcmp("GET", request->method)) { if (0 == strcmp("GET", request->method)) {
if (0 == strcmp("/me/", request->uri)) { if (0 == strcmp("/me/", request->uri)) {
response = (HttpMessage)httpResponseMe(*(this->val));
response = (HttpMessage)httpResponseMe();
}
if (0 == strcmp("/randval/", request->uri)) {
response = (HttpMessage)httpResponseRandval(*(this->val));
} }
if (0 == strcmp("/image/", request->uri)) { if (0 == strcmp("/image/", request->uri)) {

2
src/server/write.c

@ -36,7 +36,7 @@ serverWrite(Server this, unsigned int i)
loggerLog( loggerLog(
this->logger, this->logger,
LOGGER_INFO, LOGGER_INFO,
"initialization error: NULL reader");
"initialization error: NULL worker");
return -1; return -1;
} }

Loading…
Cancel
Save