Commit 2a0b489b authored by Matthew Burket's avatar Matthew Burket
Browse files

I belive I now have a MVP

parent d8496bbd
Loading
Loading
Loading
Loading
+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>
+42 −68
Original line number Diff line number Diff line
@@ -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/" />
@@ -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>
@@ -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>
@@ -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>
@@ -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" />
@@ -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" />
@@ -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>
@@ -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">
@@ -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">
@@ -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">
@@ -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
+29 −1
Original line number Diff line number Diff line
@@ -4,6 +4,9 @@

#include "connect.h"
#include "buffer.h"
#include <time.h>

int calc_date(char *deltaString, char *returnTime);

/// Initalize the connection
///
@@ -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
@@ -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);
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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
+6 −14
Original line number Diff line number Diff line
@@ -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;
@@ -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]);
    }
@@ -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);