Esempio n. 1
0
static void server_deleteByIdJSON(http_request_t request, socket_t* client, worker_t** workers)
{
    int id;
    char* getId = strpbrk(request.uri, "0123456");
    if(getId)
    {
        id = atoi(getId);
        if(id<0 || id>6 || worker_getId(workers[id]) == -1)
        {
            socket_write_string(client, "<h1>Wrong ID</h1><p><a href=\"/workers/\">All workers</a></p>");
            return;
        }
    }
    else
    {
        server_notFound(client);
        return;
    }
    char toSend[2000];
    char buffer[2000];
    sprintf(buffer,
            "Success!"
            "Worker %s successfully deleted!", worker_getName(workers[id]));

    workers[id] = worker_new();

    sprintf(toSend,
            "HTTP/1.1 200 OK\n"
            "Content-Type: application/json\n"
            "Content-Length: %i\r\n\r\n"
            "\n%s", strlen(buffer), buffer);

    socket_write_string(client, toSend);
    socket_close(client);
}
Esempio n. 2
0
static void server_getByIdJSON(http_request_t request, socket_t* client, worker_t** workers)
{
    int id;
    char* getId = strpbrk(request.uri, "0123456");
    if(getId)
    {
        id = atoi(getId);
        if(id>6 || id<0 || worker_getId(workers[id]) == -1)
        {
            socket_write_string(client, "Wrong ID");
            return;
        }
    }
    else
    {
        server_notFound(client);
        return;
    }
    char buffer[1000] = "";
    char* worker = worker_makeWorkerJSON(workers[id]);

    sprintf(buffer,
            "HTTP/1.1 200 OK\n"
            "Content-Type: application/json\n"
            "Content-Length: %i\r\n\r\n"
            "\n%s", strlen(worker)+1, worker);

    socket_write_string(client, buffer);
    socket_close(client);
}
Esempio n. 3
0
void server_answerRequest(http_request_t request, socket_t* client, leading_t** leadings){
    puts(request.method);
    puts(request.uri);
    if(!strcmp(request.uri, "/")){
        server_homepage(client);
    }
    else if(!strcmp(request.uri, "/leadings") || !strcmp(request.uri, "/leadings/")){
        server_sendLeadingsHTML(client, leadings);
    }
    else if(strncmp(request.uri, "/api/leadings/", 13) == 0){
        if(!strcmp(request.method, "GET")){
            server_getByIdJSON(request, client, leadings);
        }
        else if(!strcmp(request.method, "DELETE")){
            server_deleteByIdJSON(request, client, leadings);
        }
        else if(!strcmp(request.method, "POST")){
            server_post(request, client, leadings);
        }
    }
    else if(!strcmp(request.uri, "/api/leadings") || !strcmp(request.uri, "/api/leadings/")){
        server_sendLeadingsJSON(client, leadings);
    }
    else if(!strcmp(request.uri, "/leadings/new/") || !strcmp(request.uri, "/leadings/new")){
        server_postHTML(client, leadings);
    }
    else if(strncmp(request.uri, "/leadings/delete/", 16) == 0){
        server_deleteByIdHTML(request, client, leadings);
    }
    else if(strncmp(request.uri, "/leadings/", 9) == 0){
        server_getByIdHTML(request, client, leadings);
    }

    else server_notFound(client);
}
Esempio n. 4
0
static void server_getByIdHTML(http_request_t request, socket_t* client, worker_t** workers)
{
    int id;
    char* getId = strpbrk(request.uri, "0123456");
    if(getId)
    {
        id = atoi(getId);
        if(id<0 || id>6 || worker_getId(workers[id]) == -1)
        {
            socket_write_string(client, "<h1>Wrong ID</h1><p><a href=\"/workers/\">All workers</a></p>");
            return;
        }
    }
    else
    {
        server_notFound(client);
        return;
    }
    char toSend[2000];
    char buffer[2000] = "<head><title>Worker</title></head><h1>Worker</h1><p><a href=\"/workers/\">All workers</a></p><p>";
    strcat(buffer, server_getWorkerHTML(workers[id]));
    strcat(buffer, "</p>");

    sprintf(toSend,
            "HTTP/1.1 200 OK\n"
            "Content-Type: text/html\n"
            "Content-Length: %i\r\n\r\n"
            "\n%s", strlen(buffer), buffer);
    socket_write_string(client, toSend);
    socket_close(client);
}
Esempio n. 5
0
static void server_deleteByIdHTML(http_request_t request, socket_t* client, leading_t** leadings){
    int id;
    char* getId = strpbrk(request.uri, "0123456");
    if(getId){
        id = atoi(getId);
        if(id < 0 || id > 6 || leading_getId(leadings[id]) == -1){
            socket_write_string(client, "<h1>Wrong ID</h1><p><a href=\"/leadings/\">All leadings</a></p>");
            return;
        }
    }else{
        server_notFound(client);
        return;
    }
    char toSend[2000];
    char buffer[2000];
    sprintf(buffer,
            "<head><title>Delete</title></head>"
            "<h1>Success</h1><p><a href=\"/leadings/\">All leadings</a></p>"
            "<p>Leading %s successfully deleted!</p>", leading_getName(leadings[id]));

    leading_fill(leadings[id], -1, "qqq", "qqq", "1111-11-11", 0, 0);

    sprintf(toSend,
            "HTTP/1.1 200 OK\n"
            "Content-Type: text/html\n"
            "Content-Length: %i\r\n\r\n"
            "\n%s", strlen(buffer), buffer);

    socket_write_string(client, toSend);
    socket_close(client);
}
Esempio n. 6
0
void server_addPupil(socket_t * client,list_t * pupils,char * buf,db_t * self){
        int status = db_addPupil(self,pupils,buf);
        if(status == 0){
            server_notFound(client);
        }
        else if (status == -1){
            server_sendWrongInputData(client);
        }

}
Esempio n. 7
0
void server_answerRequest(http_request_t request, socket_t* client, db_t* base)
{
    puts(request.method);
    puts(request.uri);
    if(!strcmp(request.uri, "/"))
    {
        server_homepage(client);
    }
    else if(!strcmp(request.uri, "/workers") || !strcmp(request.uri, "/workers/"))
    {
        server_sendWorkersHTML(client, base);
    }
    else if(strncmp(request.uri, "/api/workers/", 13) == 0)
    {
        if(!strcmp(request.method, "POST"))
        {
            server_post(request, client, base);
        }
        else if(!strcmp(request.method, "GET"))
        {
            server_getByIdJSON(request, client, base);
        }
        else if(!strcmp(request.method, "DELETE"))
        {
            server_deleteByIdJSON(request, client, base);
        }
    }
    if(!strcmp(request.uri, "/api/workers") || !strcmp(request.uri, "/api/workers/"))
    {
        server_sendWorkersJSON(client, base);
    }
    else if(strstr(request.uri, "/api/workers/") == NULL && strstr(request.uri, "/api/workers") != NULL)
    {
        server_personalTask(request, client, base);
    }
    else if(!strcmp(request.uri, "/workers/new/") || !strcmp(request.uri, "/workers/new"))
    {
        server_postHTML(client);
    }
    else if(strncmp(request.uri, "/workers/delete/", 16) == 0)
    {
        server_deleteByIdHTML(request, client, base);
    }
    else if(strncmp(request.uri, "/workers/", 9) == 0)
    {
        server_getByIdHTML(request, client, base);
    }

    else server_notFound(client);
}
Esempio n. 8
0
int main() {
    lib_init();
    socket_t * server = socket_new();
    socket_bind(server, 5000);
    socket_listen(server);
	
   char buf[10000];
    char pathBuf[256];
    socket_t * client = NULL;

    while(1) {
		client = socket_accept(server);
        socket_read(client, buf, sizeof(buf));
		if (strlen(buf) == 0)
			continue;
        printf(">> Got request:\n%s\n", buf);

        http_getPath(buf, pathBuf, sizeof(pathBuf));

        http_request_t request = http_request_parse(buf);

        if (strcmp(request.uri, "/") == 0) {
            server_homepage(client);
        } else if (strcmp(request.uri, "/database") == 0) {
            server_students(client, &request);
        }  
        else if (strcmp(request.uri, "/info") == 0) {
            server_info(client);
        }
        else if (strcmp(request.uri, "/filename") == 0) {
            server_file_parse(client);
        }
        else {
            server_notFound(client);
        }
		socket_free(client);
    }
    socket_free(server);
    lib_free();
    return 0;
}
Esempio n. 9
0
static void server_deleteByIdHTML(http_request_t request, socket_t* client, db_t* base)
{
    int id;
    int count = db_countWorkers(base);
    char* getId = strpbrk(request.uri, "0123456789");
    if(getId)
    {
        id = atoi(getId);
        if(id<=0 || !db_checkId(base, id))
        {
            socket_write_string(client, "<h1>Wrong ID</h1><p><a href=\"/workers/\">All workers</a></p>");
            return;
        }
    }
    else
    {
        server_notFound(client);
        return;
    }
    worker_t* worker = db_getWorkerById(base, id);
    char toSend[2000];
    char buffer[2000];
    sprintf(buffer,
            "<head><title>Delete</title></head>"
            "<h1>Success</h1><p><a href=\"/workers/\">All workers</a></p>"
            "<p>Worker %s successfully deleted!</p>", worker_getName(worker));

    db_deleteWorker(base, id);

    sprintf(toSend,
            "HTTP/1.1 200 OK\n"
            "Content-Type: text/html\n"
            "Content-Length: %i\r\n\r\n"
            "\n%s", strlen(buffer), buffer);

    socket_write_string(client, toSend);
    socket_close(client);
}
Esempio n. 10
0
static void server_getByIdJSON(http_request_t request, socket_t* client, db_t* base)
{
    int id;
    char* getId = strpbrk(request.uri, "0123456789");
    if(getId)
    {
        id = atoi(getId);
        if(id <= 0 || !db_checkId(base, id))
        {
            socket_write_string(client, "Wrong ID");
            return;
        }
    }
    else
    {
        server_notFound(client);
        return;
    }
    char buffer[1000] = "";

    worker_t* worker = db_getWorkerById(base, id);
    char* workerJSON = worker_makeWorkerJSON(worker);
    if(workerJSON == NULL)
    {
        socket_write_string(client, "Wrong ID");
        return;
    }

    sprintf(buffer,
            "HTTP/1.1 200 OK\n"
            "Content-Type: application/json\n"
            "Content-Length: %i\r\n\r\n"
            "\n%s", strlen(workerJSON)+1, workerJSON);

    socket_write_string(client, buffer);
    worker_free(worker);
    socket_close(client);
}
Esempio n. 11
0
static void server_deleteByIdJSON(http_request_t request, socket_t* client, db_t* base)
{
    int id;
    char* getId = strpbrk(request.uri, "0123456789");
    if(getId)
    {
        id = atoi(getId);
        if(id<=0 || !db_checkId(base, id))
        {
            socket_write_string(client, "{\nWrong ID\n}");
            return;
        }
    }
    else
    {
        server_notFound(client);
        return;
    }
    worker_t* worker = db_getWorkerById(base, id);
    char toSend[2000];
    char buffer[2000];
    sprintf(buffer,
            "Success!"
            "Worker %s successfully deleted!", worker_getName(worker));

    db_deleteWorker(base, id);

    sprintf(toSend,
            "HTTP/1.1 200 OK\n"
            "Content-Type: application/json\n"
            "Content-Length: %i\r\n\r\n"
            "\n%s", strlen(buffer), buffer);

    socket_write_string(client, toSend);
    socket_close(client);
}
Esempio n. 12
0
int main()
{
    lib_init();
    printf("PORT: %i\n\n", PORT);
    socket_t * server = socket_new();
    socket_bind(server, PORT);
    socket_listen(server);

    char buffer[10000];
    socket_t * client = NULL;

    // работа с базой данных
    const char * dbFile = "ScrumMaster.db";
    db_t * db = db_new(dbFile);
    // работа с базой данных

    while(1)
    {
        client = socket_accept(server);
        socket_read(client, buffer, sizeof(buffer));

        if(strlen(buffer) != 0)
        {
            printf(">> Got request:\n%s\n", buffer);
            http_request_t request = http_request_parse(buffer);

            if (strcmp(request.uri, "/") == 0)
            {
                server_homepage(client);
            }
            else if (strcmp(request.uri, "/api/ScrumMasters") == 0)  // else if (strncmp(request.uri, "/api/ScrumMasters?", 18) == 0)
            {
                server_masters(client, &request, db);
            }
            else if (strncmp(request.uri, "/api/ScrumMasters/", 18) == 0)
            {
                server_mastersByID(client, &request, db);
            }
            else if (strcmp(request.uri, "/ScrumMasters") == 0)
            {
                server_mastersHtml(client, &request, db);
            }
            else if (strncmp(request.uri, "/ScrumMasters/", 14) == 0)
            {
                server_mastersHtmlByID(client, &request, db);
            }
            else if (strcmp(request.uri, "/new-ScrumMaster") == 0)
            {
                server_mastersHtmlPOST(client, &request, db);
            }
            else
            {
                server_notFound(client);
            }
        }
    }

    db_free(db);
    socket_free(client);
    socket_free(server);
    lib_free();
    return 0;
}