uint8_t test_response_write ( ) {
    Response *response = response_create(0);
    response->write = test_write;

    response_write(response, (uint8_t *) "Hello");

    check((response->headers_sent == 1), "headers are sent");
    check((response->code == 200), "response code is set to 200");

    const char *expected = "HTTP/1.1 200 OK\r\nContent-type: text/html\r\n\r\nHello";
    check((strcmp((char *) write_buffer, expected) == 0), "output is correct");


    reset_write();

    response = response_create(0);
    response->write = test_write;

    check((response->headers_sent == 0), "response_create returns a clean response");

    response_set_content_type(response, (uint8_t *) "test/foo");

    check((strcmp((char *) response->content_type, "test/foo") == 0), "the content_type is set correctly");
    response_write(response, (uint8_t *) "Hello");

    check((response->headers_sent == 1), "headers are sent");
    check((response->code == 200), "response code is set to 200");

    const char *expected2 = "HTTP/1.1 200 OK\r\nContent-type: test/foo\r\n\r\nHello";
    check((strcmp((char *) write_buffer, expected2) == 0), "output is correct");


    reset_write();

    response = response_create(0);
    response->write = test_write;

    response->code = 404;

    check((response->code == 404), "the response code is set correctly");
    response_write(response, (uint8_t *) "Hello");

    check((response->headers_sent == 1), "headers are sent");
    check((response->code == 404), "response code is still set to 404");

    const char *expected3 = "HTTP/1.1 404 NOT FOUND\r\nContent-type: text/html\r\n\r\nHello";
    check((strcmp((char *) write_buffer, expected3) == 0), "output is correct");

    done();
}
Exemple #2
0
void cmd_adduser(void) {
    Ceo__AddUser *in_proto;
    Ceo__AddUserResponse *out_proto = response_create();
    struct strbuf in = STRBUF_INIT;
    struct strbuf out = STRBUF_INIT;

    if (strbuf_read(&in, STDIN_FILENO, 0) < 0)
        fatalpe("read");

    in_proto = ceo__add_user__unpack(&protobuf_c_default_allocator,
                                     in.len, (uint8_t *)in.buf);
    if (!in_proto)
        fatal("malformed add user message");

    char *client = getenv("CEO_USER");
    if (!client)
        fatal("environment variable CEO_USER is not set");

    adduser(in_proto, out_proto, client);

    strbuf_grow(&out, ceo__add_user_response__get_packed_size(out_proto));
    strbuf_setlen(&out, ceo__add_user_response__pack(out_proto, (uint8_t *)out.buf));

    if (full_write(STDOUT_FILENO, out.buf, out.len))
        fatalpe("write: stdout");

    ceo__add_user__free_unpacked(in_proto, &protobuf_c_default_allocator);
    response_delete(out_proto);

    strbuf_release(&in);
    strbuf_release(&out);
}
void route (WiFiClient socket, Router *router, uint8_t *req) {
#else
void route (uint8_t socket, Router *router, uint8_t *req) {
#endif
  Request *request;
  Response *response;

  request = parse_request(req);
  response = response_create(socket);

  if (router->write) {
    response->write = router->write;
  }

  if (request->method == HTTP_ERROR) {
    five_hundred(request, response);
  } else {
    int8_t found = find_route(router, request->path);

    if (found != -1) {
      router->routes[found].method(request, response);
    } else {
      four_oh_four(request, response);
    }
  }
}
Exemple #4
0
/*
 * utilities
 */
static void
test_setup(void)
{
    req = request_create();
    rsp = response_create();
    buf = buf_create();
}
HttpClient *httpclient_create(char *host, char *port){
	HttpClient *httpClient;
    //request_init();

    httpClient = (HttpClient *)malloc(sizeof(HttpClient));
    if(httpClient == NULL){
        printf("failed to create httpClient instance\n");
        return  NULL;
    }
    httpClient->request = request_create(host, port);;
    httpClient->response = response_create();

    return  httpClient;
}