コード例 #1
0
void server_DELETE_id(http_request_t req, socket_t * clientSocket, sqlite3* db) {
    char buf[1000] = "";
    int id;

    if(strpbrk(req.uri,"-0123456789"))
    {
        id = atoi(strpbrk(req.uri,"-0123456789"));
        if(!db_checkId(db, id))
        {
            socket_write_string(clientSocket,"HTTP1.1 404 NOT FOUND\n"
            "Content-Type: json\n"
            "Content-Length: %i\r\n\r\n"
            "%s\n""<body>Id not found<br>"
                                  "<a href=\"/Teacher/\">To Teachers</a></body>");
            return;
        }
    }
    else
    {
        socket_write_string(clientSocket,"<body>Wrong id<br>"
                                  "<a href=\"/Teacher/\">To Teachers</a></body>");
        return;
    }
    db_deleteTeacherById (db, id);




    server_send(clientSocket, "<body>Delete success<br>"
                                  "<a href=\"/Teacher/\">To Teachers</a></body>");
}
コード例 #2
0
ファイル: server.c プロジェクト: Konimiks/hello-world
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);
}
コード例 #3
0
ファイル: server.c プロジェクト: vitalik296/CoursesRepo
void server_DELETE_id(http_request_t req,socket_t * clientSocket,lanser** freelanser)
{
    char buf[1000]="";
    int id;

    if(strpbrk(req.uri,"-0123456789"))
    {
        id=atoi(strpbrk(req.uri,"-0123456789"));
        if(id>9 || id<0)
        {
            socket_write_string(clientSocket,"HTTP1.1 404 NOT FOUND\n"
            "Content-Type: json\n"
            "Content-Length: %i\r\n\r\n"
            "%s\n""<body>Id not found<br>"
                                  "<a href=\"/Freelancer/\">To Freelancers</a></body>");
            return;
        }
    }
    else
    {
        socket_write_string(clientSocket,"<body>Wrong id<br>"
                                  "<a href=\"/Freelancer/\">To Freelancers</a></body>");
        return;
    }

    Freelanser_set(freelanser[id],NULL,NULL,0,NULL,0);

    server_sent(clientSocket, "<body>Delete success<br>"
                                  "<a href=\"/Freelancer/\">To Freelancers</a></body>");
}
コード例 #4
0
ファイル: server.c プロジェクト: Konimiks/hello-world
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);
}
コード例 #5
0
ファイル: server.c プロジェクト: Konimiks/hello-world
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);
}
コード例 #6
0
ファイル: server.c プロジェクト: AndrienkoF/KPIRepo
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);
}
コード例 #7
0
ファイル: server.c プロジェクト: vitalik296/CoursesRepo
void server_GET_id(http_request_t req,socket_t * clientSocket,lanser** freelancer)
{
    char text[1000]="";
    char *buf=NULL;
    int id;

    if(strpbrk(req.uri,"-0123456789"))
    {
        id=atoi(strpbrk(req.uri,"-0123456789"));
        if(id>9 || id<0)
        {
            socket_write_string(clientSocket,"HTTP1.1 404 NOT FOUND\n"
            "Content-Type: json\n"
            "Content-Length: %i\r\n\r\n"
            "Id not found");
            return;
        }
    }
    else
    {
        socket_write_string(clientSocket,"Wrong id");
        return;
    }


            buf = lanser_toJSON(freelancer[id]);

            strcat(text, buf);

    server_sent(clientSocket, text);

}
コード例 #8
0
ファイル: server.c プロジェクト: vitalik296/CoursesRepo
void server_answer(db_t* self,list_t* list,http_request_t req, socket_t * clientSocket,lanser ** freelanser)
{
    if(strcmp(req.uri,"/Freelancer/api/?"))
    {
        server_Sort(req,clientSocket,self);
    }
    else if (!strcmp(req.uri, "/Freelancer-count"))
    {
        server_count(clientSocket,list);
    }
    else if (!strcmp(req.uri, "/Freelancer/api"))
    {
        if (!strcmp(req.method, "GET"))
            server_GET_all(req,clientSocket,list);
        else if(!strcmp(req.method, "DELETE"))
            server_DELETE_all(req,clientSocket,list);
        else
            socket_write_string(clientSocket, "Method not allowed!\n");

    }
    else if (strncmp(req.uri, "/Freelancer/api/",16)==0)
    {
        if(!strcmp(req.method,"GET"))
            server_GET_id(req,clientSocket,list);
        else if(!strcmp(req.method,"DELETE"))
            server_DELETE_id(req,clientSocket,list,self);
        else if(!strcmp(req.method,"POST"))
        {
            server_POST(req,clientSocket,list,self);
        }
    }
    else if(!strncmp(req.uri,"/Freelancer/delete/",19))
    {
        server_DELETE_id(req,clientSocket,list,self);
    }
    else  if(!strcmp(req.uri,"/Freelancer"))
    {
        server_start_page(clientSocket);
    }
    else if(!strcmp(req.uri,"/Freelancer/"))
    {
        server_GET_html(clientSocket,list);
    }
    else if(!strcmp(req.uri,"/Freelancer/paste"))
    {
        server_Paste_html(req,clientSocket,list);
    }
    else if(!strncmp(req.uri,"/Freelancer/",12))
    {
        server_GET_id_html(req,clientSocket,list);
    }
    else
        socket_write_string(clientSocket,"\nHTTP1.1 404 NOT FOUND\n"
                            "Content-Type: application/json\n"
                            "Content-Length: %i\r\n\r\n""Freelancer not found\n");
}
コード例 #9
0
ファイル: server.c プロジェクト: vitalik296/CoursesRepo
void server_GET_id_html(http_request_t req,socket_t* clientSocket,lanser ** freelancer)
{
    int id;

    if(strpbrk(req.uri,"-0123456789"))
    {
        id=atoi(strpbrk(req.uri,"-0123456789"));
        if(id>9 || id<0)
        {
            socket_write_string(clientSocket,"Id not found");
            return;
        }
    }
    else
    {
        socket_write_string(clientSocket,"Wrong id");
        return;
    }
    char text [1000]="";
    char buf[10000]="<html>"
                    "<head>"
                    "<title>Page Title</title>"
                    "</head>"
                    "<body>"
                    "<h1>Freelancer</h1>";


    sprintf(text,"<p>Name:\t\t%s</p>"
            "<p>Surname:\t%s</p>"
            "<p>Age:\t\t%.2f</p>"
            "<p>Date:\t\t%s</p>"
            "<p>\tSalary:\t\t%i\n\n\n</p>"
            "<p><a href=""/Freelancer/"">To prev page</a></p>",
            Freelanser_name_get(freelancer[id]),
            Freelanser_surname_get(freelancer[id]),
            Freelanser_age_get(freelancer[id]),
            Freelanser_date_get(freelancer[id]),
            Freelanser_salary_get(freelancer[id])
           );
    strcat(buf,text);
    sprintf(text,"<p><a href=\"/Freelancer/\" onclick=\"doDelete()\">Delete Freelancer</a></p>"
                 "<script>"
                 "function doDelete(){"
                 "var xhttp=new XMLHttpRequest();"
                 "xhttp.open(\"DELETE\",\"/Freelancer/api/%i\",true);"
                 "xhttp.send();"
                 "}"
                 "</script>",id);
    strcat(buf,text);
    strcat(buf,"</body>"
           "</html>");
    socket_write_string(clientSocket,buf);
}
コード例 #10
0
ファイル: server.c プロジェクト: Konimiks/hello-world
static void server_postHTML(socket_t* client, worker_t** workers)
{
    char buffer[2000] = "";
    int id = 0;
    int count = worker_workersCount(workers);

    if(count >= MAX_WORKERS)
    {
        char fail[] = "<html><head><title>Failure</head></title>"
                     "<body><h1>Failure</h1>"
                     "<p>List is full!</p>"
                     "<p><a href=\"/workers/\">Back to all workers</a></p>"
                     "</body></html>";
        sprintf(buffer,
            "HTTP/1.1 200 OK\n"
            "Content-Type: text/html\n"
            "Content-Length: %i\r\n\r\n"
            "\n%s", strlen(fail), fail);

        socket_write_string(client, buffer);
        socket_close(client);
        return;
    }

    for(int i = 0; i<MAX_WORKERS; i++, id++)
    {
        if(worker_getId(workers[i]) == -1)
            break;
    }

    char toSend[2000] = "";
    sprintf(toSend,
            "<html><head><title>Post</title></head>"
            "<body><h1>New worker</h1>"
            "<form action=\"/api/workers/%i\" method=\"POST\">"
            "Name:<br><input type=\"text\" name=\"name\"><br>"
            "Surname:<br><input type=\"text\" name=\"surname\"><br>"
            "Birthday:<br><input type=\"text\" name=\"birthdate\"><br>"
            "Experience:<br><input type=\"text\" name=\"experience\"><br>"
            "Rating:<br><input type=\"text\" name=\"rating\"><br>"
            "<input type=\"submit\" value=\"Send POST request\" /></form><br>"
            "<p><a href=\"/workers/\">Back to all workers</a></p>"
            "</body></html>", id);
    sprintf(buffer,
            "HTTP/1.1 200 OK\n"
            "Content-Type: text/html\n"
            "Content-Length: %i\r\n\r\n"
            "\n%s", strlen(toSend), toSend);

    socket_write_string(client, buffer);
    socket_close(client);
}
コード例 #11
0
void server_GET_id_html(http_request_t req, socket_t* clientSocket, sqlite3 * db) {
    int id;

    if(strpbrk(req.uri,"-0123456789"))
    {
        id = atoi(strpbrk(req.uri,"-0123456789"));
        if (!db_checkId (db, id))
        {
            socket_write_string(clientSocket,"Id not found");
            return;
        }
    }
    else
    {
        socket_write_string(clientSocket,"Wrong id");
        return;
    }
    char text[1000] = "";
    char buf[10000] = "<html>"
                    "<head>"
                    "<title>Lab4</title>"
                    "</head>"
                    "<body>"
                    "<h1>Teacher</h1>";

    teacher_t temp = db_getTeacherById(db, id);
    sprintf(text,"<p>Name:\t\t%s</p>"
            "<p>Birthdate:\t%s</p>"
            "<p>Years:\t\t%i</p>"
            "<p>Rate:\t\t%.2f</p>"
            "<p>\tSubjects:\t\t%i\n\n\n</p>"
            "<p><a href=""/Teacher/"">To prev page</a></p>",
            teacher_getName(temp),
            teacher_getBirthdate(temp),
            teacher_getYears(temp),
            teacher_getRate(temp),
            teacher_getSubjects(temp)
           );
    strcat(buf, text);
    sprintf(text, "<p><a href=\"/Teacher/\" onclick=\"doDelete()\">Delete Teacher</a></p>"
                 "<script>"
                 "function doDelete(){"
                 "var xhttp=new XMLHttpRequest();"
                 "xhttp.open(\"DELETE\",\"/api/Teacher/%i\",true);"
                 "xhttp.send();"
                 "}"
                 "</script>", id);
    strcat(buf, text);
    strcat(buf, "</body>"
           "</html>");
    socket_write_string(clientSocket, buf);
}
コード例 #12
0
ファイル: server.c プロジェクト: gribo4eg/repos1
static void server_postHTML(socket_t* client)
{
    char buffer[2000] = "";

    char toSend[2000] = "";
    strcpy(toSend,
            "<html><head><title>Post</title></head>"
            "<body><h1>New worker</h1>"
            "<form action=\"/api/workers/\" method=\"POST\">"
            "Name:<br><input type=\"text\" name=\"name\"><br>"
            "Surname:<br><input type=\"text\" name=\"surname\"><br>"
            "Salary:<br><input type=\"text\" name=\"salary\"><br>"
            "Year:<br><input type=\"text\" name=\"year\"><br>"
            "<input type=\"submit\" value=\"Send POST request\" /></form><br>"
            "<p><a href=\"/workers/\">Back to all workers</a></p>"
            "</body></html>");
    sprintf(buffer,
            "HTTP/1.1 200 OK\n"
            "Content-Type: text/html\n"
            "Content-Length: %i\r\n\r\n"
            "\n%s", strlen(toSend), toSend);

    socket_write_string(client, buffer);
    socket_close(client);
}
コード例 #13
0
ファイル: server.c プロジェクト: DariaDar/Reposit
void server_pensionersRetPOST(socket_t * client, http_request_t * req, resource_t * lt)
{
    char buf[10240] = "";

    char * pageText = "<form action=\"http://127.0.0.1:5000/pensioners\" method=\"POST\">"
                        "id:<br>"
                        "<input type=\"text\" name=\"id\" value='3'><br>"
                        "Name:<br>"
                        "<input type=\"text\" name=\"name\" value='Ivan'><br>"
                        "Surname:<br>"
                        "<input type=\"text\" name=\"surname\" value='Ivanov'><br>"
                        "Birthdate:<br>"
                        "<input type=\"text\" name=\"birthday\" value='1945-12-12'><br>"
                        "Pension:<br>"
                        "<input type=\"text\" name=\"pension\" value='2010.25'><br>"
                        "Experience:<br>"
                        "<input type=\"text\" name=\"experience\" value='60'><br><br>"
                        "<input type=\"submit\" value='Send POST request' />"
                        "</form>";

        char * textHtml = textToBuf_HTML(pageText);
        strcat(buf, textHtml);
        free(textHtml);
        socket_write_string(client, buf);
        socket_close(client);
}
コード例 #14
0
ファイル: server.c プロジェクト: lemeshkob/Repo1
void server_mastersHtmlPOST(socket_t * client, http_request_t * req, db_t * db)
{
    char buffer[10240] = "";

    if (strcmp(req->method, "GET") == 0)
    {
        char * pageText =
            "<form action=\"http://127.0.0.1:5000/ScrumMasters\" method=\"POST\">"
            "Name:<br>"
            "<input type=\"text\" name=\"name\" value='Ivan'><br>"
            "Surname:<br>"
            "<input type=\"text\" name=\"surname\" value='Ivanov'><br>"
            "CountK:<br>"
            "<input type=\"text\" name=\"countK\" value='3'><br>"
            "CountP:<br>"
            "<input type=\"text\" name=\"countP\" value='3'><br><br>"
            "<input type=\"submit\" value='Send POST request' />"
            "</form>";

            char * textHTML = textToHTML(pageText);
            strcat(buffer, textHTML);
            free(textHTML);
    }

    socket_write_string(client, buffer);
    socket_close(client);
}
コード例 #15
0
ファイル: server.c プロジェクト: vitalik296/CoursesRepo
void post_new_row_post(http_request_t req, socket_t * clientSocket,db_t * db)
{
    char text[20];
    strcpy(text,req.uri+10);
    int check=db_insert(db, text,req);
    char buf[1000];
    if(check==0)
    {
    sprintf(buf,"<html>"
                    "<head>"
                    "<title>Page Title</title>"
                    "</head>"
                    "<body>"
                    "<p align=\"center\">INSSERT SUCCESS</p>"
                    "<p align=\"center\"><a  href=\"/db/%s\" align=\"center\" >To %s</a></p>"
                    "</body>"
                    "</html>",text,text);
    }
    else
    {
    sprintf(buf,
            "<html>"
            "<head>"
            "<title>Page Title</title>"
            "</head>"
            "<body>"
            "<p align=\"center\">INSSERT ERROR</p>"
            "<p align=\"center\"><a  href=\"/db/%s\" align=\"center\" >To %s</a></p>"
            "</body>"
            "</html>",text,text);
    }
    socket_write_string(clientSocket,buf);
}
コード例 #16
0
ファイル: server.c プロジェクト: vitalik296/CoursesRepo
void edit_row(http_request_t req, socket_t * clientSocket,db_t * db)
{
    int id=atoi(strpbrk(req.uri,"0123456789"));
    ptrdiff_t nameLeng=(strpbrk(req.uri,"0123456789")-1)-(req.uri+10);
    char *name=malloc(sizeof(char)*nameLeng+1);

    memcpy(name,req.uri+10,nameLeng);
    name[nameLeng]='\0';

    sqlite3_stmt * stmt = NULL;

    stmt=db_getrow(db,name,id);

    char buf[5000]="";
    char text[5000]="";
    sprintf(text, "<html>"
            "<body>"
            "<form align=\"center\" action=""http://127.0.0.1:5000/db/edit/%s/%i"" method=""POST"">"
            "Name:<br>"
            "<input type=""text"" name=""name"" value=%s><br>"
            "Surname:<br>"
            "<input type=""text"" name=""surname"" value=%s ><br>"
            "Age:<br>"
            "<input type=""text"" name=""age"" value=%i><br>"
            "<input type=""submit"" value='Send EDIT request' />"
            "</form>"
            "</body>",name,id,sqlite3_column_text(stmt, 0),sqlite3_column_text(stmt, 1),sqlite3_column_int(stmt, 2));
    strcat(buf,text);
    socket_write_string(clientSocket,buf);
}
コード例 #17
0
ファイル: server.c プロジェクト: gribo4eg/repos1
static void server_personalTask(http_request_t request, socket_t* client, db_t* base)
{
    char salaryReq[10], salaryVal[10], yearReq[10], yearVal[10], toSend[10000];
    char* str = strtok(request.uri, "?&=");
    str = strtok(NULL, "?&=");
    strcpy(salaryReq, str); // salary_m || salary_l
    str = strtok(NULL, "?&=");
    strcpy(salaryVal, str); // salary value
    str = strtok(NULL, "?&=");
    strcpy(yearReq, str);   // year_m || year_l
    str = strtok(NULL, "?&=");
    strcpy(yearVal, str);   // year value
    int count = db_countWorkers(base);

    worker_t** workers[count];
    for(int i = 0; i<count; i++)
        workers[i] = worker_new();

    str = db_personalTask(base, salaryReq, atoi(salaryVal), yearReq, atoi(yearVal), workers);

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

    for(int i = 0; i<count; i++)
        worker_free(workers[i]);

    socket_write_string(client, toSend);
    socket_close(client);
}
コード例 #18
0
ファイル: server.c プロジェクト: bbehrang/CoursesRepo
void server_teachers(socket_t * client, http_request_t * req)
{
    char buffer[10240];
	if (strcmp(req->method, "GET") == 0) {

		int amount = teacher_getSize();
		char * teachersJSON = teacher_parseAllToJSON(teachers, amount);
		sprintf(buffer,
			"HTTP/1.1 200 OK\n"
			"Content-Type: application/json\n"
			"Content-Length: %zu\n"
			"Connection: keep-alive\n"
			"\n%s", strlen(teachersJSON), teachersJSON);
		free(teachersJSON);
	}
	else {
		char * errText = "Invalid command!";
		sprintf(buffer,
			"HTTP/1.1 404 \n"
			"Content-Type: text/html\n"
			"Content-Length: %zu\n"
			"\n%s", strlen(errText), errText);
	}
	socket_write_string(client, buffer);
	socket_close(client);
}
コード例 #19
0
ファイル: server.c プロジェクト: vitalik296/CoursesRepo
void server_Paste_html(http_request_t req,socket_t* clientSocket,lanser ** freelancer)
{
    char buf[5000]="";
    char text[5000]="";
    int id=0;
    while(Freelanser_name_get(freelancer[id])!=NULL)
    {
        id++;
        if(id>9)
        {
            strcat(buf,"<body>"
                        "Can't Post the new Freelancer<br>"
                        "<a href=""/Freelancer/"">Back</a>"
                        "</body>");
        }
    }
    sprintf(text, "<html>"
            "<body>"
            "<form action=""http://127.0.0.1:5000/Freelancer/api/%i"" method=""POST"">"
            "Name:<br>"
            "<input type=""text"" name=""name""><br>"
            "Surname:<br>"
            "<input type=""text"" name=""surname"" ><br>"
            "Age:<br>"
            "<input type=""text"" name=""age""><br>"
            "Date:<br>"
            "<input type=""text"" name=""date""><br>"
            "Salary:<br>"
            "<input type=""text"" name=""salary""><br>"
            "<input type=""submit"" value='Send POST request' />"
            "</form>"
            "</body>",id);
    strcat(buf,text);
    socket_write_string(clientSocket,buf);
}
コード例 #20
0
ファイル: server.c プロジェクト: vitalik296/CoursesRepo
void start_page(socket_t * clientSocket,db_t * db)
{
    char buf[10000]="<html>"
                    "<head>"
                    "<title>Page Title</title>"
                    "</head>"
                    "<body>"
                    "<h1>Tables</h1>";

    int kil=get_kil(db);

    char **text=malloc(sizeof(void*)*kil);
    for(int j=0;j<kil;j++)
    text[j]=malloc(50);

    db_get_name(db,text);
    int count =kil-1;
    for(int i =0;i<count;i++)
    {
        char rep[1000];
        sprintf(rep,"<p><a href=\"/db/%s\">%s</a></p>",text[i],text[i]);
        strcat(buf,rep);
    }
    strcat(buf,"</body>"
                "</html>");
    socket_write_string(clientSocket,buf);
}
コード例 #21
0
ファイル: server.c プロジェクト: DariaDar/Reposit
void server_pensionerDelete(socket_t * client, resource_t * lt, http_request_t * req)
{
    char buf[2000] = "";
    char * p = strstr(req->uri, "/api/pensioners/");
    p = p + 16;
    int index = atoi(p);

    if(index >= 0)
    {
        for(int i = 0; i < resource_getCnt(lt); i++)
        {
            if(index == resource_getID(lt, i))
            {
                pensioner_t * pens = resource_deletePens(lt, index);
                char * text = pensioner_toJSON(pens);
                char * textP = textToBuf_JSON(text);
                strcat(buf, textP);
                free(textP);
            }
        }
    }
    else
    {
        char * pageText = "{\n    \"Error\": \"ID Not Found\"\n}";
        char * textP = textToBuf_JSON(pageText);
        strcat(buf, textP);
        free(textP);
    }

    socket_write_string(client, buf);
    socket_close(client);
}
コード例 #22
0
int inc_counter_by_value(int socketfd, const char* name, int value) {
    char text[256];
    //sprintf(text, "%s:%d|c|@%f", name, value, DEFAULT_RATE);
    sprintf(text, "%s:%d|c", name, value);
    printf("%s\n", text);
    return socket_write_string(text, socketfd);
}
コード例 #23
0
ファイル: server.c プロジェクト: Blackstee/Blackstee
void server_allMusicians(socket_t * client, http_request_t * req)
{
    char strbuf[10240];

    if (strcmp(req->method, "GET") == 0)
    {
        char * allMusiciansJson = musician_listToJSON(musicians_arr, (sizeof(musicians_arr) / sizeof(musicians_arr[0])));

        sprintf(strbuf,
            "HTTP/1.1 200 OK\n"
            "Content-Type: application/json\n"
            "Content-Length: %zu\n"
            "Connection: keep-alive\n"
            "\n%s", strlen(allMusiciansJson), allMusiciansJson);
        free(allMusiciansJson);
    } else
    {
        char * error = "Error!";
		sprintf(strbuf,
			"HTTP/1.1 404 ERROR \n"
			"Content-Type: text/html\n"
			"Content-Length: %zu\n"
			"\n%s", strlen(error), error);
    }
    socket_write_string(client, strbuf);
    socket_close(client);
}
コード例 #24
0
void server_send (socket_t * clientSocket, char * text) {
    char buf[10000];
    sprintf(buf, "\nHTTP1.1 200 OK\n"
            "Content-Type: application/json\n"
            "Content-Length: %i\r\n\r\n"
            "%s\n", strlen(text), text);
    socket_write_string(clientSocket,buf);
}
コード例 #25
0
ファイル: server.c プロジェクト: AndrienkoF/KPIRepo
static void server_post(http_request_t request, socket_t* client, leading_t** leadings){
    int id = 0;
    int count = leading_leadingsCount(leadings);
    char buffer[2000] ="";
    char* str;
    char* name = http_request_getArg(&request, "name");
    char* surname = http_request_getArg(&request, "surname");
    char* birthdate = http_request_getArg(&request, "birthdate");
    char* experience = http_request_getArg(&request, "experience");
    char* rating = http_request_getArg(&request, "rating");

    if(strlen(name) <= 1 || strlen(surname) <= 1 || strlen(birthdate) <= 1){
        server_send(client, "Name/Surname/Birthday wasn't filled in"
                            "<p><a href=\"/leadings/new/\">Back to POST</a></p>");
        return;
    }

    str = birthdate;

   if(strlen(birthdate) > 10 || str[4] != '-' || str[7] != '-' || isdigit(birthdate[0])==0 || isdigit(experience[0]) == 0 || isdigit(rating[0])==0){
        server_send(client, "Wrong data!"
                    "<p><a href=\"/leadings/new/\">Back to POST</a></p>");
        return;
    }

    if(experience == " ")
        experience = "0";

    if(rating == " ")
        rating = "0.0";

    if(count >= MAX_LEADINGS){
        char fail[] = "Limit of leadings!";
        sprintf(buffer,
            "HTTP/1.1 404 \n"
            "Content-Type: text\n"
            "Content-Length: %i\r\n\r\n"
            "\n%s", strlen(fail), fail);

        socket_write_string(client, buffer);
        socket_close(client);
        return;
    }

    for(int i = 0; i<MAX_LEADINGS; i++, id++)
    {
        if(leading_getId(leadings[i]) == -1)
            break;
    }

    int exp = atoi(experience);
    double rate = atof(rating);

    leading_fill(leadings[id], id, name, surname, birthdate, exp, rate);
    server_send(client, "Success"
                "<p><a href=\"/leadings/\">All leadings</a></p>");

}
コード例 #26
0
ファイル: server.c プロジェクト: DariaDar/Reposit
void server_pensionerHtmlID(socket_t * client, resource_t * lt, http_request_t * req)
{
    char buf[10000] = "";
    char * p = strstr(req->uri, "/pensioners/");
    p = p + 12;
    int index = atoi(p);

    if(index >= 0)
    {
        for(int i = 0; i < resource_getCnt(lt); i++)
        {
            if(index == resource_getID(lt, i))
            {
                if(strcmp(req->method, "GET") == 0)
                {
                    char pText[1000] = "";
                    char * text = pensioner_toHTML(resource_getbyId(lt, index), index);
                    strcat(pText, text);

                    char * pageText = "<a href=\"http://127.0.0.1:5000/pensioners\"><br>Back to the list.</a>";
                    strcat(pText, pageText);

                    char * textHtml = textToBuf_HTML(pText);
                    strcat(buf, textHtml);
                    free(textHtml);
                }
                else if(strcmp(req->method, "DELETE") == 0)
                {
                    char pText[1000] = "";
                    char * text = pensioner_toHTML(resource_deletePens(lt, index), index);
                    strcat(pText, text);
                    free(text);

                    sprintf(buf,
                            "HTTP/1.1 200 OK\n"
                            "Access-Control-Allow-Origin: *\n"
                            "Access-Control-Allow-Methods: DELETE\n"
                            "\n");
                }
            }
        }
        char * message = "<h3 style=\"color:orange\">ID not found!</h3>";
        char * textHtml = textToBuf_HTML(message);
        strcat(buf, textHtml);
        free(textHtml);

    }
    else
    {
        char * message = "<h3 style=\"color:orange\">ID not found!</h3>";
        char * textHtml = textToBuf_HTML(message);
        strcat(buf, textHtml);
        free(textHtml);

    }
    socket_write_string(client, buf);
    socket_close(client);
}
コード例 #27
0
ファイル: server.c プロジェクト: lemeshkob/Repo1
void server_mastersByID(socket_t * client, http_request_t * req, db_t * db)
{
    char buffer[10240] = "";

    char * point = strstr(req->uri, "/api/ScrumMasters/");
    point += 18;
    int index = atoi(point);

    if(0 < index && index < db_count(db) + 1)
    {
        if (strcmp(req->method, "GET") == 0)
        {
            master_t * master = db_getDataById(db, index - 1);

            cJSON * jText = cJSON_CreateObject();
            cJSON_AddItemToObject(jText, "Name", cJSON_CreateString(master_getName(master)));
            cJSON_AddItemToObject(jText, "Surname", cJSON_CreateString(master_getSurname(master)));
            cJSON_AddItemToObject(jText, "CountK", cJSON_CreateNumber(master_getCountK(master)));
            cJSON_AddItemToObject(jText, "CountP", cJSON_CreateNumber(master_getCountP(master)));
            char * pageText = cJSON_Print(jText);

            free(master);

            char * textJSON = textToJSON(pageText);
            strcat(buffer, textJSON);
            free(textJSON);
        }
        else if (strcmp(req->method, "DELETE") == 0)
        {
            master_t * master = db_getDataById(db, index - 1);
            db_deleteData(db, master_getID(master));
            free(master);

            cJSON * jText = cJSON_CreateObject();
            cJSON_AddItemToObject(jText, "Success", cJSON_CreateString("Successfully deleted"));
            char * pageText = cJSON_Print(jText);

            char * textJSON = textToJSON(pageText);
            strcat(buffer, textJSON);
            free(textJSON);
        }
    }
    else
    {
        cJSON * jText = cJSON_CreateObject();
        cJSON_AddItemToObject(jText, "Error", cJSON_CreateString("ID Not Found"));
        char * pageText = cJSON_Print(jText);

        char * textJSON = textToJSON(pageText);
        strcat(buffer, textJSON);
        free(textJSON);
    }

    socket_write_string(client, buffer);
    socket_close(client);
}
コード例 #28
0
ファイル: main.c プロジェクト: samokhvalenko/samokh-52
void server_file_parse(socket_t * client){
        char html_doc[15000];
    char * filename = {"C:\\Users\\User\\Desktop\\samokh-52\\courses\\prog_base_2\\tests\\test_2\\Server_kr_app\\files\\filename.txt"};
    if(file_exists(filename)){
    char text[10000];
    char buf[1000];
    char ContentToReceive[10000];
    memset(ContentToReceive, '\0', 10000);
    FILE *f = fopen(filename, "r");
    char *word;
    int i = 0, j = 0;
    char html_text[15000] ="<!DOCTYPE html> <html> <head>List</head> <body><ol type=\"1\">";
    while(fgets(buf, 1000, f) != NULL)
		{
			strcat(ContentToReceive, buf);
		}
    word = strtok(ContentToReceive, " ");
    while(word != NULL){
        /*j = 0;
        while(ContentToReceive[i] != ' '){
            word[j] = ContentToReceive[i];
            j++;
            i++;
        }*/
        
        strcat(html_text, "<li>");
        strcat(html_text, word);
        strcat(html_text, "</li>");
        puts(word);
        word = strtok(NULL, " ");
    }
    puts("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    strcat(html_text, "</ol>");
    strcat(html_text, "</body> </html>");
    sprintf(html_doc,
        "HTTP/1.1 200 OK\n"
        "Content-Type: text/html\n"
        "Content-Length: %u\n"
    "\n%s", strlen(html_text), html_text);
    
    }
    else if(!file_exists(filename)){
        char html_text[15000] ="<!DOCTYPE html> <html> <head>File does`not exist</head> <body><ol type=\"1\">";
        
        strcat(html_text, "</body> </html>");
        char html_doc[15000];
        sprintf(html_doc,
        "HTTP/1.1 200 OK\n"
        "Content-Type: text/html\n"
        "Content-Length: %u\n"
        "\n%s", strlen(html_text), html_text);
    }
    socket_write_string(client, html_doc);
    socket_close(client);
    
}
コード例 #29
0
ファイル: server.c プロジェクト: AndrienkoF/KPIRepo
static void server_send(socket_t* client, const char* smth){
    char homeBuf[800];
    sprintf(homeBuf,
            "HTTP/1.1 200 OK\n"
            "Content-Type: text/html\n"
            "Content-Length: %i\n"
            "\n%s", strlen(smth), smth);
    socket_write_string(client, homeBuf);
    socket_close(client);
}
コード例 #30
0
ファイル: server.c プロジェクト: Tayum/di0d
//FUNCTION THAT PRINTS ERROR MSG
//RETURNS:		 ERROR MSG
void server_invPath(socket_t * client) {
	char replyBuf[1024];
	char * errText = "Invalid path!";
	sprintf(replyBuf,
		"HTTP/1.1 404 \n"
		"Content-Type: text/html\n"
		"Content-Length: %zu\n"
		"\n%s", strlen(errText), errText);
	socket_write_string(client, replyBuf);
	socket_close(client);
}