/*
 * webkernel.c
 *
 * A small embeddable web server.
 *
 * Author: Dario Rodriguez dario@softhome.net
 * This library is licensed on the terms of the GNU LGPL v2+
 */


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include "webkernel.h"

typedef struct _wk {
        int dummy;
} _wk;

wk *
wk_init(int port, sselect *ssel, void (*callback_event)(/*wk *paramweb,int connid, wk_event event, void *userptr*/), void (*callback_http)(/*wk *paramweb,int connid, wk_uri *uri, void *userptr*/), void (*callback_continuation)(/*wk *paramweb,int connid, wk_uri *uri, void *userptr*/), void *userptr)
{
        _wk *web;
        if((web=malloc(sizeof(_wk)))==NULL)
                return(NULL);
        memset(web,0,sizeof(_wk));
        return((wk *)web);
}

void
wk_free(wk *paramweb)
{
        _wk *web=(_wk *)paramweb;
        if(web==NULL)
                return;
        free(web),web=NULL;
}

wk_uri *
wk_geturi(wk *paramweb, int connid)
{

}

int
wk_service(wk *paramweb)
{

}

int
wk_serve_buffer_as_file(wk *paramweb, int connid, void *data, int datalen, const char *mime)
{

}

int
wk_serve_file(wk *paramweb, int connid, char *filename, const char *mime)
{

}

int
wk_serve_error(wk *paramweb, int connid, wk_error wkerror)
{

}

int
wk_writestr(wk *paramweb, int connid, char *str)
{

}

int
wk_write(wk *paramweb, int connid, void *data, int datalen)
{

}

int
wk_close(wk *paramweb, int connid)
{

}

char *
wk_uri_getheader(wk_uri *wkuri, char *header, char *defaultvalue)
{

}

char *
wk_uri_getheaderbynum(wk_uri *wkuri, int num)
{

}

const char *
mime_getdefault(char *filename)
{
        struct {
                char *ext;
                char *mime;
        } dotdot[]={{".tar.gz","application/x-tgz"}},
          dot[]={
                {"html","text/html"},
                {"htm","text/html"},
                {"shtml","text/html"},
                {"css","text/css"},
                {"gif","image/gif"},
                {"jpeg","image/jpeg"},
                {"jpg","image/jpeg"},
                {"png","image/png"},
                {"tiff","image/tiff"},
                {"tif","image/tiff"},
                {"bmp","image/x-ms-bmp"},
                {"svg","image/svg+xml"},
                {"svgz","image/svg+xml"},
                {"js","application/x-javascript"},
                {"atom","application/atom+xml"},
                {"txt","text/plain"},
                {"json","application/json"},
                {"pdf","application/pdf"},
                {"zip","application/zip"},
                {"mp3","audio/mpeg"},
                {"wav","audio/x-wav"},
                {"ogg","audio/ogg"},
                {"mp4","video/mp4"},
                {"webm","video/webm"},
                {"avi","video/x-msvideo"}};
#warning TODO
}

siobuf *
wk_iobufget(wk *paramweb)
{

}

void
wk_iobuffree(wk *paramweb, int iobufnum)
{

}