Loading .idea/dictionaries/mburket.xml +1 −0 Original line number Diff line number Diff line <component name="ProjectDictionaryState"> <dictionary name="mburket"> <words> <w>calcuates</w> <w>connetion</w> <w>descired</w> <w>initalize</w> Loading .idea/workspace.xml +42 −68 Original line number Diff line number Diff line Loading @@ -12,11 +12,9 @@ </component> <component name="ChangeListManager"> <list default="true" id="36048fb3-fc75-499f-9004-4a458a9d082e" name="Default" comment=""> <change afterPath="$PROJECT_DIR$/urlParse.c" afterDir="false" /> <change afterPath="$PROJECT_DIR$/urlParse.h" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/CMakeLists.txt" beforeDir="false" afterPath="$PROJECT_DIR$/CMakeLists.txt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/dictionaries/mburket.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dictionaries/mburket.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/connect.c" beforeDir="false" afterPath="$PROJECT_DIR$/connect.c" afterDir="false" /> <change beforePath="$PROJECT_DIR$/connect.h" beforeDir="false" afterPath="$PROJECT_DIR$/connect.h" afterDir="false" /> <change beforePath="$PROJECT_DIR$/main.c" beforeDir="false" afterPath="$PROJECT_DIR$/main.c" afterDir="false" /> </list> <ignored path="$PROJECT_DIR$/cmake-build-debug/" /> Loading @@ -33,8 +31,8 @@ <file leaf-file-name="buffer.c" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/buffer.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="180"> <caret line="10" column="20" selection-start-line="10" selection-start-column="20" selection-end-line="10" selection-end-column="20" /> <state relative-caret-position="666"> <caret line="62" column="9" selection-start-line="62" selection-start-column="9" selection-end-line="62" selection-end-column="9" /> <folding> <element signature="e#40#59#0" expanded="true" /> </folding> Loading @@ -42,34 +40,25 @@ </provider> </entry> </file> <file leaf-file-name="connect.c" pinned="false" current-in-tab="true"> <entry file="file://$PROJECT_DIR$/connect.c"> <file leaf-file-name="main.c" pinned="false" current-in-tab="true"> <entry file="file://$PROJECT_DIR$/main.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="444"> <caret line="75" column="27" selection-start-line="75" selection-start-column="27" selection-end-line="75" selection-end-column="27" /> <state relative-caret-position="540"> <caret line="68" selection-start-line="68" selection-end-line="68" /> <folding> <element signature="e#42#62#0" expanded="true" /> <element signature="e#0#19#0" expanded="true" /> </folding> </state> </provider> </entry> </file> <file leaf-file-name="urlParse.h" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/urlParse.h"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="108"> <caret line="6" column="15" selection-start-line="6" selection-start-column="4" selection-end-line="6" selection-end-column="15" /> </state> </provider> </entry> </file> <file leaf-file-name="main.c" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/main.c"> <file leaf-file-name="connect.c" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/connect.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="742"> <caret line="75" column="23" selection-start-line="75" selection-start-column="8" selection-end-line="75" selection-end-column="23" /> <state relative-caret-position="490"> <caret line="105" selection-start-line="105" selection-end-line="105" /> <folding> <element signature="e#0#19#0" expanded="true" /> <element signature="e#42#62#0" expanded="true" /> </folding> </state> </provider> Loading Loading @@ -101,8 +90,8 @@ <option value="$PROJECT_DIR$/,gitignore" /> <option value="$PROJECT_DIR$/urlParse.c" /> <option value="$PROJECT_DIR$/urlParse.h" /> <option value="$PROJECT_DIR$/main.c" /> <option value="$PROJECT_DIR$/connect.c" /> <option value="$PROJECT_DIR$/main.c" /> </list> </option> </component> Loading Loading @@ -161,7 +150,7 @@ </component> <component name="RunManager" selected="Application.http_client"> <configuration name="Build All" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS_2="true" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="coms352_project2_part1" RUN_TARGET_NAME="http_client" EXPLICIT_BUILD_TARGET_NAME="all" /> <configuration name="http_client" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="www.google.com" PASS_PARENT_ENVS_2="true" PROJECT_NAME="coms352_project2_part1" TARGET_NAME="http_client" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="coms352_project2_part1" RUN_TARGET_NAME="http_client" /> <configuration name="http_client" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="-h -d 12:10:12 http://google.com " PASS_PARENT_ENVS_2="true" PROJECT_NAME="coms352_project2_part1" TARGET_NAME="http_client" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="coms352_project2_part1" RUN_TARGET_NAME="http_client" /> <list> <item itemvalue="Application.Build All" /> <item itemvalue="Application.http_client" /> Loading @@ -181,12 +170,12 @@ <workItem from="1522346739296" duration="3244000" /> <workItem from="1523115745573" duration="9472000" /> <workItem from="1523128673229" duration="5207000" /> <workItem from="1523307294356" duration="902000" /> <workItem from="1523307294356" duration="2707000" /> </task> <servers /> </component> <component name="TimeTrackingManager"> <option name="totallyTimeSpent" value="20556000" /> <option name="totallyTimeSpent" value="22361000" /> </component> <component name="ToolWindowManager"> <frame x="0" y="27" width="2560" height="1573" extended-state="6" /> Loading Loading @@ -223,24 +212,9 @@ <breakpoints> <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType"> <url>file://$PROJECT_DIR$/connect.c</url> <line>49</line> <option name="timeStamp" value="5" /> </line-breakpoint> <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType"> <url>file://$PROJECT_DIR$/connect.c</url> <line>93</line> <line>105</line> <option name="timeStamp" value="20" /> </line-breakpoint> <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType"> <url>file://$PROJECT_DIR$/connect.c</url> <line>115</line> <option name="timeStamp" value="22" /> </line-breakpoint> <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType"> <url>file://$PROJECT_DIR$/connect.c</url> <line>103</line> <option name="timeStamp" value="24" /> </line-breakpoint> </breakpoints> <option name="time" value="25" /> </breakpoint-manager> Loading Loading @@ -403,13 +377,6 @@ </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/LICENSE"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="12114"> <caret line="673" column="50" selection-start-line="673" selection-start-column="50" selection-end-line="673" selection-end-column="50" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/README.md"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="144"> Loading Loading @@ -455,16 +422,6 @@ </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/buffer.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="180"> <caret line="10" column="20" selection-start-line="10" selection-start-column="20" selection-end-line="10" selection-end-column="20" /> <folding> <element signature="e#40#59#0" expanded="true" /> </folding> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/urlParse.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="288"> Loading @@ -475,6 +432,13 @@ </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/LICENSE"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="630"> <caret line="35" column="71" lean-forward="true" selection-start-line="35" selection-start-column="71" selection-end-line="35" selection-end-column="71" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/urlParse.h"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="108"> Loading @@ -482,25 +446,35 @@ </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/main.c"> <entry file="file://$PROJECT_DIR$/buffer.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="742"> <caret line="75" column="23" selection-start-line="75" selection-start-column="8" selection-end-line="75" selection-end-column="23" /> <state relative-caret-position="666"> <caret line="62" column="9" selection-start-line="62" selection-start-column="9" selection-end-line="62" selection-end-column="9" /> <folding> <element signature="e#0#19#0" expanded="true" /> <element signature="e#40#59#0" expanded="true" /> </folding> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/connect.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="444"> <caret line="75" column="27" selection-start-line="75" selection-start-column="27" selection-end-line="75" selection-end-column="27" /> <state relative-caret-position="490"> <caret line="105" selection-start-line="105" selection-end-line="105" /> <folding> <element signature="e#42#62#0" expanded="true" /> </folding> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/main.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="540"> <caret line="68" selection-start-line="68" selection-end-line="68" /> <folding> <element signature="e#0#19#0" expanded="true" /> </folding> </state> </provider> </entry> </component> </project> No newline at end of file connect.c +29 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,9 @@ #include "connect.h" #include "buffer.h" #include <time.h> int calc_date(char *deltaString, char *returnTime); /// Initalize the connection /// Loading Loading @@ -65,7 +68,7 @@ int establish_connect(struct addrinfo *info) { /// \param path path to request /// \param head if true use the head method on the url /// \return number of bytes sent to the server int execate_request(int socketfd, char *hostname, char *path, int head) { int execate_request(int socketfd, char *hostname, char *path, int head, int date, char *date_string) { // Reqeust is a buffer GrowthBuffer request; // Init the buffer Loading @@ -87,6 +90,15 @@ int execate_request(int socketfd, char *hostname, char *path, int head) { appendBuffer(&request, hostLine, strlen(hostLine)); appendBuffer(&request, hostname, strlen(hostname)); appendBuffer(&request, "\r\n", 2); // Build If-Modified-Since Header if (date) { char *ModLine = "If-Modified-Since: "; appendBuffer(&request, ModLine, strlen(ModLine)); char *timeStamp = malloc(sizeof(char) * 256); calc_date(date_string, timeStamp); appendBuffer(&request, timeStamp, strlen(timeStamp)); appendBuffer(&request, "\r\n", 2); } // Close off the request appendBuffer(&request, "\r\n", 2); appendBuffer(&request, "\r\n", 2); Loading Loading @@ -118,3 +130,19 @@ int get_result(int socketfd, GrowthBuffer *recvBuff, int recvBuffSize) { } } } /// Calculates the time stamp based on the time delta string /// /// \param deltaString /// \param returnTime /// \return int calc_date(char *deltaString, char *returnTime) { int day = 0; int hour = 0; int min = 0; sscanf(deltaString, "%d:%d:%d", &day, &hour, &min); time_t n_time; n_time=time(0); n_time=n_time-(day*24*3600+hour*3600+min*60); strcpy(returnTime, ctime(&n_time)); } No newline at end of file connect.h +1 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ void init_connection(char *hostname, int port, struct addrinfo **info); int establish_connect(struct addrinfo *info); int execate_request(int socketfd, char *hostname, char *path, int head); int execate_request(int socketfd, char *hostname, char *path, int head, int date, char *date_string); int get_result(int socketfd, GrowthBuffer *recvBuff, int recvBuffSize); #endif //COMS352_PROJECT2_PART1_CONNECT_H main.c +6 −14 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ int main (int argc, char **argv) { // getopts section based on // https://www.gnu.org/software/libc/manual/html_node/Example-of-Getopt.html#Example-of-Getopt while ((c = getopt(argc, argv, "hd:")) != -1) while ((c = getopt(argc, argv, "hd:")) != -1) { switch (c) { case 'h': header_only = 1; Loading @@ -52,15 +52,12 @@ int main (int argc, char **argv) { default: abort(); } } printf("header_only = %d, timeDelta = %d, cvalue = %s\n", header_only, timeDelta, cvalue); for (index = optind; index < argc; index++) for (index = optind; index < argc; index++) { printf("Non-option argument %s\n", argv[index]); } printf("\noptind: %s\n", (argv[optind])); if (argv[optind] == NULL) { show_help_exit(argv[0]); } Loading @@ -69,14 +66,9 @@ int main (int argc, char **argv) { int port = 80; char *page = malloc(sizeof(char) * 256); getUrlParts(argv[optind], &host, &port, &page); printf("\nhost: %s\n", host); init_connection(host, 80, &addressInfo); int sockfd = establish_connect(addressInfo); if (header_only == 1) { execate_request(sockfd, host, page, 1); } else { execate_request(sockfd, host, page, 0); } execate_request(sockfd, host, page, header_only, timeDelta, cvalue); GrowthBuffer gp; initBuffer(&gp, 50); Loading Loading
.idea/dictionaries/mburket.xml +1 −0 Original line number Diff line number Diff line <component name="ProjectDictionaryState"> <dictionary name="mburket"> <words> <w>calcuates</w> <w>connetion</w> <w>descired</w> <w>initalize</w> Loading
.idea/workspace.xml +42 −68 Original line number Diff line number Diff line Loading @@ -12,11 +12,9 @@ </component> <component name="ChangeListManager"> <list default="true" id="36048fb3-fc75-499f-9004-4a458a9d082e" name="Default" comment=""> <change afterPath="$PROJECT_DIR$/urlParse.c" afterDir="false" /> <change afterPath="$PROJECT_DIR$/urlParse.h" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/CMakeLists.txt" beforeDir="false" afterPath="$PROJECT_DIR$/CMakeLists.txt" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/dictionaries/mburket.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dictionaries/mburket.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/connect.c" beforeDir="false" afterPath="$PROJECT_DIR$/connect.c" afterDir="false" /> <change beforePath="$PROJECT_DIR$/connect.h" beforeDir="false" afterPath="$PROJECT_DIR$/connect.h" afterDir="false" /> <change beforePath="$PROJECT_DIR$/main.c" beforeDir="false" afterPath="$PROJECT_DIR$/main.c" afterDir="false" /> </list> <ignored path="$PROJECT_DIR$/cmake-build-debug/" /> Loading @@ -33,8 +31,8 @@ <file leaf-file-name="buffer.c" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/buffer.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="180"> <caret line="10" column="20" selection-start-line="10" selection-start-column="20" selection-end-line="10" selection-end-column="20" /> <state relative-caret-position="666"> <caret line="62" column="9" selection-start-line="62" selection-start-column="9" selection-end-line="62" selection-end-column="9" /> <folding> <element signature="e#40#59#0" expanded="true" /> </folding> Loading @@ -42,34 +40,25 @@ </provider> </entry> </file> <file leaf-file-name="connect.c" pinned="false" current-in-tab="true"> <entry file="file://$PROJECT_DIR$/connect.c"> <file leaf-file-name="main.c" pinned="false" current-in-tab="true"> <entry file="file://$PROJECT_DIR$/main.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="444"> <caret line="75" column="27" selection-start-line="75" selection-start-column="27" selection-end-line="75" selection-end-column="27" /> <state relative-caret-position="540"> <caret line="68" selection-start-line="68" selection-end-line="68" /> <folding> <element signature="e#42#62#0" expanded="true" /> <element signature="e#0#19#0" expanded="true" /> </folding> </state> </provider> </entry> </file> <file leaf-file-name="urlParse.h" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/urlParse.h"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="108"> <caret line="6" column="15" selection-start-line="6" selection-start-column="4" selection-end-line="6" selection-end-column="15" /> </state> </provider> </entry> </file> <file leaf-file-name="main.c" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/main.c"> <file leaf-file-name="connect.c" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/connect.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="742"> <caret line="75" column="23" selection-start-line="75" selection-start-column="8" selection-end-line="75" selection-end-column="23" /> <state relative-caret-position="490"> <caret line="105" selection-start-line="105" selection-end-line="105" /> <folding> <element signature="e#0#19#0" expanded="true" /> <element signature="e#42#62#0" expanded="true" /> </folding> </state> </provider> Loading Loading @@ -101,8 +90,8 @@ <option value="$PROJECT_DIR$/,gitignore" /> <option value="$PROJECT_DIR$/urlParse.c" /> <option value="$PROJECT_DIR$/urlParse.h" /> <option value="$PROJECT_DIR$/main.c" /> <option value="$PROJECT_DIR$/connect.c" /> <option value="$PROJECT_DIR$/main.c" /> </list> </option> </component> Loading Loading @@ -161,7 +150,7 @@ </component> <component name="RunManager" selected="Application.http_client"> <configuration name="Build All" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS_2="true" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="coms352_project2_part1" RUN_TARGET_NAME="http_client" EXPLICIT_BUILD_TARGET_NAME="all" /> <configuration name="http_client" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="www.google.com" PASS_PARENT_ENVS_2="true" PROJECT_NAME="coms352_project2_part1" TARGET_NAME="http_client" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="coms352_project2_part1" RUN_TARGET_NAME="http_client" /> <configuration name="http_client" type="CMakeRunConfiguration" factoryName="Application" PROGRAM_PARAMS="-h -d 12:10:12 http://google.com " PASS_PARENT_ENVS_2="true" PROJECT_NAME="coms352_project2_part1" TARGET_NAME="http_client" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="coms352_project2_part1" RUN_TARGET_NAME="http_client" /> <list> <item itemvalue="Application.Build All" /> <item itemvalue="Application.http_client" /> Loading @@ -181,12 +170,12 @@ <workItem from="1522346739296" duration="3244000" /> <workItem from="1523115745573" duration="9472000" /> <workItem from="1523128673229" duration="5207000" /> <workItem from="1523307294356" duration="902000" /> <workItem from="1523307294356" duration="2707000" /> </task> <servers /> </component> <component name="TimeTrackingManager"> <option name="totallyTimeSpent" value="20556000" /> <option name="totallyTimeSpent" value="22361000" /> </component> <component name="ToolWindowManager"> <frame x="0" y="27" width="2560" height="1573" extended-state="6" /> Loading Loading @@ -223,24 +212,9 @@ <breakpoints> <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType"> <url>file://$PROJECT_DIR$/connect.c</url> <line>49</line> <option name="timeStamp" value="5" /> </line-breakpoint> <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType"> <url>file://$PROJECT_DIR$/connect.c</url> <line>93</line> <line>105</line> <option name="timeStamp" value="20" /> </line-breakpoint> <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType"> <url>file://$PROJECT_DIR$/connect.c</url> <line>115</line> <option name="timeStamp" value="22" /> </line-breakpoint> <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType"> <url>file://$PROJECT_DIR$/connect.c</url> <line>103</line> <option name="timeStamp" value="24" /> </line-breakpoint> </breakpoints> <option name="time" value="25" /> </breakpoint-manager> Loading Loading @@ -403,13 +377,6 @@ </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/LICENSE"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="12114"> <caret line="673" column="50" selection-start-line="673" selection-start-column="50" selection-end-line="673" selection-end-column="50" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/README.md"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="144"> Loading Loading @@ -455,16 +422,6 @@ </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/buffer.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="180"> <caret line="10" column="20" selection-start-line="10" selection-start-column="20" selection-end-line="10" selection-end-column="20" /> <folding> <element signature="e#40#59#0" expanded="true" /> </folding> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/urlParse.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="288"> Loading @@ -475,6 +432,13 @@ </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/LICENSE"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="630"> <caret line="35" column="71" lean-forward="true" selection-start-line="35" selection-start-column="71" selection-end-line="35" selection-end-column="71" /> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/urlParse.h"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="108"> Loading @@ -482,25 +446,35 @@ </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/main.c"> <entry file="file://$PROJECT_DIR$/buffer.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="742"> <caret line="75" column="23" selection-start-line="75" selection-start-column="8" selection-end-line="75" selection-end-column="23" /> <state relative-caret-position="666"> <caret line="62" column="9" selection-start-line="62" selection-start-column="9" selection-end-line="62" selection-end-column="9" /> <folding> <element signature="e#0#19#0" expanded="true" /> <element signature="e#40#59#0" expanded="true" /> </folding> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/connect.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="444"> <caret line="75" column="27" selection-start-line="75" selection-start-column="27" selection-end-line="75" selection-end-column="27" /> <state relative-caret-position="490"> <caret line="105" selection-start-line="105" selection-end-line="105" /> <folding> <element signature="e#42#62#0" expanded="true" /> </folding> </state> </provider> </entry> <entry file="file://$PROJECT_DIR$/main.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="540"> <caret line="68" selection-start-line="68" selection-end-line="68" /> <folding> <element signature="e#0#19#0" expanded="true" /> </folding> </state> </provider> </entry> </component> </project> No newline at end of file
connect.c +29 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,9 @@ #include "connect.h" #include "buffer.h" #include <time.h> int calc_date(char *deltaString, char *returnTime); /// Initalize the connection /// Loading Loading @@ -65,7 +68,7 @@ int establish_connect(struct addrinfo *info) { /// \param path path to request /// \param head if true use the head method on the url /// \return number of bytes sent to the server int execate_request(int socketfd, char *hostname, char *path, int head) { int execate_request(int socketfd, char *hostname, char *path, int head, int date, char *date_string) { // Reqeust is a buffer GrowthBuffer request; // Init the buffer Loading @@ -87,6 +90,15 @@ int execate_request(int socketfd, char *hostname, char *path, int head) { appendBuffer(&request, hostLine, strlen(hostLine)); appendBuffer(&request, hostname, strlen(hostname)); appendBuffer(&request, "\r\n", 2); // Build If-Modified-Since Header if (date) { char *ModLine = "If-Modified-Since: "; appendBuffer(&request, ModLine, strlen(ModLine)); char *timeStamp = malloc(sizeof(char) * 256); calc_date(date_string, timeStamp); appendBuffer(&request, timeStamp, strlen(timeStamp)); appendBuffer(&request, "\r\n", 2); } // Close off the request appendBuffer(&request, "\r\n", 2); appendBuffer(&request, "\r\n", 2); Loading Loading @@ -118,3 +130,19 @@ int get_result(int socketfd, GrowthBuffer *recvBuff, int recvBuffSize) { } } } /// Calculates the time stamp based on the time delta string /// /// \param deltaString /// \param returnTime /// \return int calc_date(char *deltaString, char *returnTime) { int day = 0; int hour = 0; int min = 0; sscanf(deltaString, "%d:%d:%d", &day, &hour, &min); time_t n_time; n_time=time(0); n_time=n_time-(day*24*3600+hour*3600+min*60); strcpy(returnTime, ctime(&n_time)); } No newline at end of file
connect.h +1 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ void init_connection(char *hostname, int port, struct addrinfo **info); int establish_connect(struct addrinfo *info); int execate_request(int socketfd, char *hostname, char *path, int head); int execate_request(int socketfd, char *hostname, char *path, int head, int date, char *date_string); int get_result(int socketfd, GrowthBuffer *recvBuff, int recvBuffSize); #endif //COMS352_PROJECT2_PART1_CONNECT_H
main.c +6 −14 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ int main (int argc, char **argv) { // getopts section based on // https://www.gnu.org/software/libc/manual/html_node/Example-of-Getopt.html#Example-of-Getopt while ((c = getopt(argc, argv, "hd:")) != -1) while ((c = getopt(argc, argv, "hd:")) != -1) { switch (c) { case 'h': header_only = 1; Loading @@ -52,15 +52,12 @@ int main (int argc, char **argv) { default: abort(); } } printf("header_only = %d, timeDelta = %d, cvalue = %s\n", header_only, timeDelta, cvalue); for (index = optind; index < argc; index++) for (index = optind; index < argc; index++) { printf("Non-option argument %s\n", argv[index]); } printf("\noptind: %s\n", (argv[optind])); if (argv[optind] == NULL) { show_help_exit(argv[0]); } Loading @@ -69,14 +66,9 @@ int main (int argc, char **argv) { int port = 80; char *page = malloc(sizeof(char) * 256); getUrlParts(argv[optind], &host, &port, &page); printf("\nhost: %s\n", host); init_connection(host, 80, &addressInfo); int sockfd = establish_connect(addressInfo); if (header_only == 1) { execate_request(sockfd, host, page, 1); } else { execate_request(sockfd, host, page, 0); } execate_request(sockfd, host, page, header_only, timeDelta, cvalue); GrowthBuffer gp; initBuffer(&gp, 50); Loading