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"); }
void server_Sort(http_request_t req,socket_t* clientSocket,db_t* self) { char* key; char *com; char buf[500]="SELECT * FROM database WHERE "; char* tmp=strchr(req.uri,'?')+1; key=strtok(tmp,"&"); list_t* list=list_new(); int count; while(key!=NULL) { list_push(list,key,strlen(key)+1); key=strtok(NULL,"&"); } count=db_count(self,"database"); while(list_get_count(list)) { com=list_pop(list); if(!strncmp(com,"age",3)) { if(strpbrk(com,"0987654321")) { char * qw=strstr(com,"_")+1; if(!strncmp(qw,"gt",2)) { sprintf(com,"age<%i",atoi(strpbrk(com,"0123456789"))); } else if(!strncmp(qw,"lt",2)) { sprintf(com,"age>%i",atoi(strpbrk(com,"0123456789"))); } else { parse_from_db(list,self); server_GET_all(req,clientSocket,list); return; } } else { parse_from_db(list,self); server_GET_all(req,clientSocket,list); return; } strcat(buf,com); if(list_get_count(list)) strcat(buf," AND "); } else if(!strncmp(com,"salary",6)) { if(strpbrk(com,"0987654321")) { char * qw=strstr(com,"_")+1; if(!strncmp(qw,"gt",2)) { sprintf(com,"salary<%.2f",atof(strpbrk(com,"0123456789"))); } else if(!strncmp(qw,"lt",2)) { sprintf(com,"salary>%.2f",atof(strpbrk(com,"0123456789"))); } else { parse_from_db(list,self); server_GET_all(req,clientSocket,list); return; } } else { parse_from_db(list,self); server_GET_all(req,clientSocket,list); return; } strcat(buf,com); if(list_get_count(list)) strcat(buf," AND "); } else if(!strncmp(com,"count",5)) { if(strpbrk(com,"0987654321")) { count=atoi(strpbrk(com,"0123456789")); } else { parse_from_db(list,self); server_GET_all(req,clientSocket,list); return; } } } sqlite3_stmt * stmt = NULL; sqlite3_prepare_v2(get_db(self), buf, strlen(buf), &stmt, NULL); int i=0; puts(buf); while(1) { int rc = sqlite3_step(stmt); if (SQLITE_ROW == rc) { if(i<count) { lanser * FL=Freelanser_new(); Freelanser_set(FL,sqlite3_column_text(stmt, 0),sqlite3_column_text(stmt, 1),sqlite3_column_double(stmt, 2),sqlite3_column_text(stmt, 4),sqlite3_column_int(stmt, 3)); list_push(list,FL,get_size()); free(FL); } else break; i++; } else if (SQLITE_DONE == rc) { break; } } server_GET_all(req,clientSocket,list); }
void server_answer(http_request_t req, socket_t * clientSocket, sqlite3 * db) { puts(req.method); puts(req.uri); if (!strcmp(req.uri, "/Teacher-count")) { server_count(clientSocket, db); } else if (strncmp(req.uri, "/api/Teacher/", 13) == 0) { if(!strcmp(req.method, "GET")) server_GET_id(req, clientSocket, db); else if(!strcmp(req.method,"DELETE")) server_DELETE_id(req, clientSocket, db); else if(!strcmp(req.method,"POST")) { puts("1"); server_POST(req, clientSocket, db); } } else if (!strncmp(req.uri, "/api/Teacher", 12)) { if (!strcmp(req.method, "GET")) { if (!strncmp(req.uri, "/api/Teacher?", 13)) { int filtSubj, filtYears; char* str = req.uri; sscanf (str, "/api/Teacher?subjects=%i|years=%i", &filtSubj, &filtYears); server_GET_filt(req, clientSocket, db, filtSubj, filtYears); } else server_GET_all(req, clientSocket, db); } else if(!strcmp(req.method, "DELETE")) server_DELETE_all(req, clientSocket, db); else socket_write_string(clientSocket, "Method not allowed!\n"); } else if(!strncmp(req.uri,"/Teacher/delete/",16)) { server_DELETE_id(req, clientSocket, db); } else if (!strncmp(req.uri, "/Teacher?", 9)) { int filtSubj, filtYears; char* str = req.uri; sscanf (str, "/api/Teacher?subjects=%i|years=%i", &filtSubj, &filtYears); server_GET_filt_html(req, clientSocket, db, filtSubj, filtYears); } else if(!strcmp(req.uri,"/Teacher")) { server_start_page(clientSocket); } else if(!strcmp(req.uri,"/Teacher/")) { server_GET_html(clientSocket, db); } else if(!strcmp(req.uri,"/Teacher/paste")) { server_Paste_html(req, clientSocket, db); } else if(!strncmp(req.uri, "/Teacher/", 9)) { server_GET_id_html(req, clientSocket, db); } else socket_write_string(clientSocket,"\nHTTP1.1 404 NOT FOUND\n" "Content-Type: application/json\n" "Content-Length: %i\r\n\r\n""Teacher not found\n"); }