Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //CLIENT
- #include <stdio.h> /* printf, sprintf */
- #include <stdlib.h> /* exit, atoi, malloc, free */
- #include <unistd.h> /* read, write, close */
- #include <string.h> /* memcpy, memset */
- #include <sys/socket.h> /* socket, connect */
- #include <netinet/in.h> /* struct sockaddr_in, struct sockaddr */
- #include <netdb.h> /* struct hostent, gethostbyname */
- #include <arpa/inet.h>
- #include "helpers.h"
- #include "requests.h"
- int main(int argc, char *argv[])
- {
- int i;
- char *message;
- char *response;
- int sockfd;
- /*
- * Ex 0: Get cs.curs.pub.ro
- *
- * Pas 1: Se deschide conexiunea (open_connection)
- * Pas 2: Se creaza mesajul de request (compute_get_request)
- * Pas 3: Se trimite la server mesajul (send_to_server)
- * Pas 4: Se primeste raspuns de la server (receive_from_server)
- * Pas 5: Se inchide conexiunea cu serverul (close_connection)
- */
- //TODO EX 0
- /*sockfd = open_connection("141.85.241.51", 80, AF_INET, SOCK_STREAM, 0);
- message = compute_get_request("141.85.241.51", "/", NULL);
- send_to_server (sockfd, message);
- response = receive_from_server(sockfd);
- printf("%s\n", response);
- close_connection(sockfd);
- *//*
- Ex 1: Get videos
- */
- // TODO EX 1
- // sockfd = open_connection("185.118.200.37", 8081, AF_INET, SOCK_STREAM, 0);
- // message = compute_get_request("185.118.200.37", "/videos", NULL);
- // send_to_server (sockfd, message);
- // response = receive_from_server(sockfd);
- // printf("%s\n", response);
- // close_connection(sockfd);
- /*
- EX 2.1: Add video
- */
- // TODO Ex 2.1
- // sockfd = open_connection("185.118.200.37", 8081, AF_INET, SOCK_STREAM, 0);
- // message = compute_post_request("185.118.200.37", "/videos", "id=10&name=ZZZZZZZZZZZZZ");
- // printf("%s\n", message);
- // send_to_server (sockfd, message);
- // response = receive_from_server(sockfd);
- // printf("%s\n", response);
- // close_connection(sockfd);
- /*
- Ex 2.2 Verificam noua colectie de videoclipuri
- */
- // TODO Ex 2.2
- // sockfd = open_connection("185.118.200.37", 8081, AF_INET, SOCK_STREAM, 0);
- // message = compute_get_request("185.118.200.37", "/videos", NULL);
- // send_to_server (sockfd, message);
- // response = receive_from_server(sockfd);
- // printf("%s\n", response);
- // close_connection(sockfd);
- /*
- Ex 3 Autentificare
- */
- sockfd = open_connection("185.118.200.37", 8081, AF_INET, SOCK_STREAM, 0);
- message = compute_post_request("185.118.200.37", "/weather/login", "username=admin&password=p@ss");
- send_to_server (sockfd, message);
- response = receive_from_server(sockfd);
- printf("%s\n", response);
- close_connection(sockfd);
- sockfd = open_connection("185.118.200.37", 8081, AF_INET, SOCK_STREAM, 0);
- message = compute_get_request("185.118.200.37", "/weather/key", NULL);
- send_to_server (sockfd, message);
- response = receive_from_server(sockfd);
- printf("%s\n", response);
- close_connection(sockfd);
- sockfd = open_connection("37.139.20.5", 80, AF_INET, SOCK_STREAM, 0);
- message = compute_get_request("37.139.20.5", "/data/2.5/weather", "q=bucharest&APPID=80f21fc11662726c0c3c8c5512d89b3a");
- send_to_server (sockfd, message);
- response = receive_from_server(sockfd);
- printf("%s\n", response);
- close_connection(sockfd);
- // TODO Ex 3
- free(message);
- return 0;
- }
- //REQUEST
- #include <stdlib.h> /* exit, atoi, malloc, free */
- #include <stdio.h>
- #include <unistd.h> /* read, write, close */
- #include <string.h> /* memcpy, memset */
- #include <sys/socket.h> /* socket, connect */
- #include <netinet/in.h> /* struct sockaddr_in, struct sockaddr */
- #include <netdb.h> /* struct hostent, gethostbyname */
- #include <arpa/inet.h>
- #include "helpers.h"
- #include "requests.h"
- char *compute_get_request(char *host, char *url, char *url_params)
- {
- char *message = calloc(BUFLEN, sizeof(char));
- char *line = calloc(LINELEN, sizeof(char));
- /*
- PAS 1: Scriem numele metodei, calea, parametri din url (daca exista) si tipul protocolului
- */
- if (url_params != NULL)
- {
- sprintf(line, "GET %s?%s HTTP/1.1", url, url_params);
- }
- else
- {
- sprintf(line, "GET %s HTTP/1.1", url);
- }
- compute_message(message, line);
- /*
- PAS 2: Adaugam host-ul
- */
- // TODO Ex 0
- sprintf(line, "HOST: %s", host);
- compute_message(message, line);
- /*
- PAS 3 (optional): Adaugam headere si/ sau cookies, respectand forma protocolului
- */
- // TODO BONUS COOKIE
- sprintf(line, "Cookie: isLogged=true");
- compute_message(message, line);
- /*
- PAS 4: Adaugam linia de final
- */
- strcat(message, "\r\n");
- //TODO Ex 0
- return message;
- }
- char *compute_post_request(char *host, char *url, char *form_data)
- {
- char *message = calloc(BUFLEN, sizeof(char));
- char *line = calloc(LINELEN, sizeof(char));
- /*
- PAS 1: Scriem numele metodei, calea si tipul protocolului
- */
- sprintf(line, "POST %s HTTP/1.1", url);
- compute_message(message, line);
- // TODO Ex 2
- /*
- PAS 2: Adaugam host-ul
- */
- // TODO Ex 2
- sprintf(line, "HOST: %s", host);
- compute_message(message, line);
- /*
- PAS 3: Adaugam headere si/ sau cookies, respectand forma protocolului
- ATENTIE!! Headerele Content-Type si Content-Length sunt obligatorii
- */
- //form data
- // TODO Ex 2
- sprintf(line, "Content-length: %ld", strlen(form_data));
- compute_message(message, line);
- sprintf(line, "Content-type: application/x-www-form-urlencoded");
- compute_message(message, line);
- /*
- PAS 4: Adaugam linia de final de antent
- */
- strcat(message, "\r\n");
- // TODO Ex 2
- /*
- PAS 5: Adaugam data
- */
- compute_message(message, form_data);
- // TODO Ex 2
- return message;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement