Esempio n. 1
0
static void test_format_post_request(void) {
  grpc_http_header hdr = {"x-yz", "abc"};
  grpc_httpcli_request req;
  gpr_slice slice;
  char body_bytes[] = "fake body";
  size_t body_len = 9;

  memset(&req, 0, sizeof(req));
  req.host = "example.com";
  req.http.path = "/index.html";
  req.http.hdr_count = 1;
  req.http.hdrs = &hdr;

  slice = grpc_httpcli_format_post_request(&req, body_bytes, body_len);

  GPR_ASSERT(0 == gpr_slice_str_cmp(slice,
                                    "POST /index.html HTTP/1.0\r\n"
                                    "Host: example.com\r\n"
                                    "Connection: close\r\n"
                                    "User-Agent: " GRPC_HTTPCLI_USER_AGENT
                                    "\r\n"
                                    "x-yz: abc\r\n"
                                    "Content-Type: text/plain\r\n"
                                    "Content-Length: 9\r\n"
                                    "\r\n"
                                    "fake body"));

  gpr_slice_unref(slice);
}
Esempio n. 2
0
static void test_format_post_request_content_type_override(void) {
  grpc_http_header hdrs[2];
  grpc_httpcli_request req;
  gpr_slice slice;
  char body_bytes[] = "fake%20body";
  size_t body_len = 11;

  hdrs[0].key = "x-yz";
  hdrs[0].value = "abc";
  hdrs[1].key = "Content-Type";
  hdrs[1].value = "application/x-www-form-urlencoded";
  memset(&req, 0, sizeof(req));
  req.host = "example.com";
  req.http.path = "/index.html";
  req.http.hdr_count = 2;
  req.http.hdrs = hdrs;

  slice = grpc_httpcli_format_post_request(&req, body_bytes, body_len);

  GPR_ASSERT(0 == gpr_slice_str_cmp(
                      slice,
                      "POST /index.html HTTP/1.0\r\n"
                      "Host: example.com\r\n"
                      "Connection: close\r\n"
                      "User-Agent: " GRPC_HTTPCLI_USER_AGENT "\r\n"
                      "x-yz: abc\r\n"
                      "Content-Type: application/x-www-form-urlencoded\r\n"
                      "Content-Length: 11\r\n"
                      "\r\n"
                      "fake%20body"));

  gpr_slice_unref(slice);
}
Esempio n. 3
0
void grpc_httpcli_post(const grpc_httpcli_request *request,
                       const char *body_bytes, size_t body_size,
                       gpr_timespec deadline,
                       grpc_httpcli_response_cb on_response, void *user_data) {
  internal_request *req;
  if (g_post_override && g_post_override(request, body_bytes, body_size,
                                         deadline, on_response, user_data)) {
    return;
  }
  req = gpr_malloc(sizeof(internal_request));
  memset(req, 0, sizeof(*req));
  req->request_text =
      grpc_httpcli_format_post_request(request, body_bytes, body_size);
  grpc_httpcli_parser_init(&req->parser);
  req->on_response = on_response;
  req->user_data = user_data;
  req->deadline = deadline;
  req->use_ssl = request->use_ssl;
  if (req->use_ssl) {
    req->host = gpr_strdup(request->host);
  }

  grpc_resolve_address(request->host, req->use_ssl ? "https" : "http",
                       on_resolved, req);
}
Esempio n. 4
0
File: httpcli.c Progetto: sihai/grpc
void grpc_httpcli_post(grpc_httpcli_context *context, grpc_pollset *pollset,
                       const grpc_httpcli_request *request,
                       const char *body_bytes, size_t body_size,
                       gpr_timespec deadline,
                       grpc_httpcli_response_cb on_response, void *user_data) {
  internal_request *req;
  char *name;
  if (g_post_override && g_post_override(request, body_bytes, body_size,
                                         deadline, on_response, user_data)) {
    return;
  }
  req = gpr_malloc(sizeof(internal_request));
  memset(req, 0, sizeof(*req));
  req->request_text =
      grpc_httpcli_format_post_request(request, body_bytes, body_size);
  grpc_httpcli_parser_init(&req->parser);
  req->on_response = on_response;
  req->user_data = user_data;
  req->deadline = deadline;
  req->use_ssl = request->use_ssl;
  req->context = context;
  req->pollset = pollset;
  gpr_asprintf(&name, "HTTP:GET:%s:%s", request->host, request->path);
  grpc_iomgr_register_object(&req->iomgr_obj, name);
  gpr_free(name);
  if (req->use_ssl) {
    req->host = gpr_strdup(request->host);
  }

  grpc_pollset_set_add_pollset(&req->context->pollset_set, req->pollset);
  grpc_resolve_address(request->host, req->use_ssl ? "https" : "http",
                       on_resolved, req);
}
Esempio n. 5
0
void grpc_httpcli_post(grpc_exec_ctx *exec_ctx, grpc_httpcli_context *context,
                       grpc_pollset *pollset,
                       const grpc_httpcli_request *request,
                       const char *body_bytes, size_t body_size,
                       gpr_timespec deadline,
                       grpc_httpcli_response_cb on_response, void *user_data) {
  char *name;
  if (g_post_override &&
      g_post_override(exec_ctx, request, body_bytes, body_size, deadline,
                      on_response, user_data)) {
    return;
  }
  gpr_asprintf(&name, "HTTP:POST:%s:%s", request->host, request->path);
  internal_request_begin(
      exec_ctx, context, pollset, request, deadline, on_response, user_data,
      name, grpc_httpcli_format_post_request(request, body_bytes, body_size));
  gpr_free(name);
}
Esempio n. 6
0
static void test_format_post_request_no_body(void) {
  grpc_http_header hdr = {"x-yz", "abc"};
  grpc_httpcli_request req;
  gpr_slice slice;

  memset(&req, 0, sizeof(req));
  req.host = "example.com";
  req.http.path = "/index.html";
  req.http.hdr_count = 1;
  req.http.hdrs = &hdr;

  slice = grpc_httpcli_format_post_request(&req, NULL, 0);

  GPR_ASSERT(0 == gpr_slice_str_cmp(slice,
                                    "POST /index.html HTTP/1.0\r\n"
                                    "Host: example.com\r\n"
                                    "Connection: close\r\n"
                                    "User-Agent: " GRPC_HTTPCLI_USER_AGENT
                                    "\r\n"
                                    "x-yz: abc\r\n"
                                    "\r\n"));

  gpr_slice_unref(slice);
}