Esempio n. 1
0
void server_GET_all(http_request_t req, socket_t * clientSocket,lanser** freelancer)
{
    char text[10000]="";
    char * buf=NULL;
    int count=0,check=0;

    for(int i = 0; i < 10; i++)
            if(Freelanser_name_get(freelancer[i])!=NULL)
                count++;


        strcat(text, "[");
        for(int i = 0; i < 10; i++)
        {
            if(Freelanser_name_get(freelancer[i])==NULL)
            {
                i++;
            }
            else
            {
                buf = lanser_toJSON(freelancer[i]);

            strcat(text, buf);
            if(check != count-1)
            {
                strcat(text, ",");
                check++;
            }
            }
        }
        strcat(text, "]");

    server_sent(clientSocket, text);
}
Esempio n. 2
0
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>");
}
Esempio n. 3
0
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);

}
Esempio n. 4
0
void server_dB(socket_t * client, db_t * db, list_t * lt)
{
    int cntPens = db_countPensioner(db);
    for(int i = 0; i < cntPens; i++)
    {
        list_push_back(lt, db_getPensionerById(db, i));
    }

    cJSON * arr = cJSON_CreateArray();

    for(int i = 1; i < list_getSize(lt); i++)
    {
        cJSON * pens = cJSON_CreateObject();
        pensioner_t * ps = list_get(lt, i);
        cJSON_AddItemToObject(pens, "name", cJSON_CreateString(pensioner_getName(ps)));
        cJSON_AddItemToObject(pens, "surname", cJSON_CreateString(pensioner_getSurname(ps)));
        cJSON_AddItemToObject(pens, "year", cJSON_CreateNumber(pensioner_getAge(ps)));
        cJSON_AddItemToObject(pens, "experience", cJSON_CreateNumber(pensioner_getExperience(ps)));
        cJSON_AddItemToObject(pens, "pension", cJSON_CreateNumber(pensioner_getPension(ps)));
        cJSON_AddItemToObject(pens, "surname", cJSON_CreateString(pensioner_getYear(ps)));
        cJSON_AddItemToArray(arr, pens);
    }
    char * Jtext = cJSON_Print(arr);
    server_sent(client, Jtext);
    free(Jtext);
}
Esempio n. 5
0
void server_DELETE_all(http_request_t req,socket_t * clientSocket,lanser** freelanser)
{
    for(int i=0; i<10; i++)
    {
        Freelanser_set(freelanser[i],NULL,NULL,0,NULL,0);
    }
    server_sent(clientSocket, "Delete success");
}
Esempio n. 6
0
void server_count( socket_t * clientSocket,list_t * list)
{
    int count=list_get_count(list);
    cJSON * SM = cJSON_CreateObject();
    cJSON_AddItemToObject(SM, "count", cJSON_CreateNumber(count));
    char* text =cJSON_Print(SM);
    server_sent(clientSocket,text);
}
Esempio n. 7
0
void server_info(socket_t* clientSocket)
{
    cJSON * SM = cJSON_CreateObject();
    cJSON_AddItemToObject(SM, "student", cJSON_CreateString("Zakharchenko Vitaliy"));
    cJSON_AddItemToObject(SM, "group", cJSON_CreateString("KP-51"));
    cJSON_AddItemToObject(SM, "variant", cJSON_CreateNumber(12));
    char * jsonSM = cJSON_Print(SM);
    server_sent(clientSocket,jsonSM);
}
Esempio n. 8
0
void server_count( socket_t * clientSocket,lanser** freelancer)
{
    int count=0;
    for(int i=0;i<10;i++)
        if(Freelanser_name_get(freelancer[i])!=NULL)
            count++;
    cJSON * SM = cJSON_CreateObject();
    cJSON_AddItemToObject(SM, "count", cJSON_CreateNumber(count));
    char* text =cJSON_Print(SM);
    server_sent(clientSocket,text);
}
Esempio n. 9
0
void server_GET_all(http_request_t req, socket_t * clientSocket,list_t* list)
{
    char * buf;
    int count=0,check=0;


    cJSON * SM = cJSON_CreateArray();
    for(int i = 0; i < list_get_count(list); i++)
    {
        cJSON_AddItemToArray(SM, lanser_toJSON(list_get_el(list,i)));
    }
    buf=cJSON_Print(SM);

    server_sent(clientSocket, buf);
}
Esempio n. 10
0
void server_file(socket_t * client, http_request_t * req)
{
    list_t * list = list_new();
    if(strcmp(req->method, "GET") == 0)
    {
        char * str;
        str = strtok(req->uri, "/");
        while (str != NULL)
        {
            list_push_back(list, str);
            str = strtok(NULL,"/");
        }

        char * word = list_get(list, 3);
        char * fileName = list_get(list, 2);
        int fileSt = file_exists(fileName);
        if(fileSt == 1)
        {
            text_t * text = text_new();
            text_readFile(text, fileName);
            text_onSentences(text);
            int cntW = text_counting(text, word);

            cJSON * Words = cJSON_CreateObject();
            cJSON_AddItemToObject(Words, "FileName", cJSON_CreateString(fileName));
            cJSON_AddItemToObject(Words, "CountWord", cJSON_CreateNumber(cntW));
            cJSON_AddItemToObject(Words, "experience", cJSON_CreateString(word));
            char * Jtext = cJSON_Print(Words);
            server_sent(client, Jtext);
            free(Jtext);

        }
        else
        {
            printf("Error! Wrong file");
            return;
        }


    }
    list_free(list);
}
Esempio n. 11
0
void server_POST(http_request_t req,socket_t * clientSocket,lanser** freelanser)
{
    const char * name= http_request_getArg(&req,"name");
    const char * surname= http_request_getArg(&req,"surname");
    const char * age= http_request_getArg(&req,"age");
    const char * date= http_request_getArg(&req,"date");
    const char * salary= http_request_getArg(&req,"salary");

    if(name==NULL || surname==NULL || age ==NULL || date==NULL || salary==NULL)
    {
        socket_write_string(clientSocket,"<body> POST argument/arguments is/are empty<br>"
                                  "<a href=""/Freelancer/"">To Freelancers</a></body>");
        return;
    }

    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,"<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;
    }

    int check=0;
    int dot=0;

    for(int i=0; i<strlen(age); i++)
        if(!isdigit(age[i]))
        {
            if(age[i]=='.'||dot==0)
                dot++;
            else
                check++;
        }

    for(int i=0; i<strlen(salary); i++)
        if(!isdigit(salary[i]))
            check++;

    for(int i=0; i<4; i++)
        if(!isdigit(date[i]))
            check++;

    if(date[4]!='-')
        check++;

    for(int i=5; i<7; i++)
        if(!isdigit(date[i]))
            check++;

    if(date[7]!='-')
        check++;

    for(int i=8; i<strlen(date); i++)
        if(!isdigit(date[i]))
            check++;

    if(atoi(date+5)>12)
        check++;

    if(dot>1||dot<0)
    {
        socket_write_string(clientSocket,"<body>Invalid POST argument<br>"
                                  "<a href=""/Freelancer/"">To Freelancers</a></body>");
        return;
    }

    if(check==0)
    {
        Freelanser_set(freelanser[id],name,surname,atof(age),date,atoi(salary));

        server_sent(clientSocket, "<body>Post success<br>"
                                  "<a href=\"/Freelancer/\">To Freelancers</a></body>");
    }
    else
        socket_write_string(clientSocket,"<body>Invalid POST argument<br>"
                                  "<a href=\"/Freelancer/\">To Freelancers</a></body>");
}
int main(void) {

    WSADATA Data;
    SOCKADDR_IN recvSockAddr;
    SOCKET recvSocket;
    int status;
    int numrcv = 0;
    struct hostent * remoteHost;
    char * ip;
    const char * host_name = "pb-homework.appspot.com";
    char buffer[MAXBUFLEN];
    memset(buffer,0,MAXBUFLEN);
    // Initialize Windows Socket DLL
    status = WSAStartup(MAKEWORD(2, 2), &Data);
    if(status != 0)
    {
        printf("ERROR: WSAStartup unsuccessful\r\n");
        return 0;
    }
	// Get IP address from host name
	remoteHost = gethostbyname(host_name);
	ip = inet_ntoa(*(struct in_addr *)*remoteHost->h_addr_list);
	printf("IP address is: %s.\n", ip);
    memset(&recvSockAddr, 0, sizeof(recvSockAddr)); // zero the sockaddr_in structure
    recvSockAddr.sin_port=htons(PORT); // specify the port portion of the address
    recvSockAddr.sin_family=AF_INET; // specify the address family as Internet
    recvSockAddr.sin_addr.s_addr= inet_addr(ip); // specify ip address
	// Create socket
	recvSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if(recvSocket == INVALID_SOCKET)
	{
		printf("ERROR: socket unsuccessful\r\n");
             WSACleanup();
		system("pause");
		return 0;
	}
    // Connect
    if(connect(recvSocket,(SOCKADDR*)&recvSockAddr,sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
    {
        printf("ERROR: socket could not connect\r\n");
        closesocket(recvSocket);
        WSACleanup();
        return 0;
    }
    // Send request
    char request[200];
    sprintf(request, "GET /test/var/24?format=json HTTP/1.1\r\nHost:%s\r\n\r\n", host_name);  // add Host header with host_name value
    send(recvSocket, request, strlen(request), 0);

	// Receieve
    numrcv = recv(recvSocket, buffer, MAXBUFLEN, NO_FLAGS_SET);
    if (numrcv == SOCKET_ERROR)
    {
        printf("ERROR: recvfrom unsuccessful\r\n");
        status = closesocket(recvSocket);
        if(status == SOCKET_ERROR)
			printf("ERROR: closesocket unsuccessful\r\n");
        status = WSACleanup();
        if (status == SOCKET_ERROR)
			printf("ERROR: WSACleanup unsuccessful\r\n");
        system("pause");
        return(1);
    }
	// Print out receieved socket data
    printf("%s\r\n", buffer);

    char * json=strstr(buffer,"{");


    cJSON * SI = cJSON_CreateObject();

    SI=cJSON_Parse(json);


    author_t * author=malloc(sizeof(author_t));

    author->author=malloc(strlen(cJSON_GetObjectItem(SI,"author")->valuestring)+1);
    strcpy(author->author,cJSON_GetObjectItem(SI,"author")->valuestring);

    author->quote=malloc(strlen(cJSON_GetObjectItem(SI,"quote")->valuestring)+1);
    strcpy(author->quote,cJSON_GetObjectItem(SI,"quote")->valuestring);

    time_t rawtime;
    struct tm * timeinfo;

    time ( &rawtime );
    timeinfo = localtime ( &rawtime );

    author->time=malloc(strlen(asctime(timeinfo)));
    strcpy(author->time,asctime(timeinfo));
    author->time[strlen(author->time)-1]='\0';

    cJSON * SM = cJSON_CreateObject();
    cJSON_AddItemToObject(SM, "author", cJSON_CreateString(author->author));
    cJSON_AddItemToObject(SM, "quote", cJSON_CreateString(author->quote));
    cJSON_AddItemToObject(SM, "time", cJSON_CreateString(author->time));
    char * jsonSM = cJSON_Print(SM);



    system("pause");



        lib_init();
    socket_t * server = socket_new();
    socket_bind(server, 5000);
    socket_listen(server);
    char buf[10000];
    socket_t * client = NULL;
     while(1)
    {
        client = socket_accept(server);
        socket_read(client, buf, sizeof(buf));
        printf("%s",buf);
        if (strlen(buf) != 0){
        http_request_t rs;
        rs = http_request_parse(buf);
        if (strcmp(rs.method,"GET") == 0 && strcmp(rs.uri, "/info") == 0 )
        {
            server_info(client);

        }
         if (strcmp(rs.method,"GET") == 0 && strcmp(rs.uri, "/external") == 0 )
        {
            server_sent(client,jsonSM);
        }

        }
    }
      system("pause");
    return 0;
}