Beispiel #1
0
static int lcurl_url_get(lua_State *L, CURLUPart what, CURLUcode empty) {
  lcurl_url_t *p = lcurl_geturl(L);
  CURLUcode code;
  char *part = NULL;
  unsigned int flags = 0;

  flags = (unsigned int)lutil_optint64(L, 2, 0);

  code = curl_url_get(p->url, what, &part, flags);
  if (code != CURLUE_OK) {
    if (part) {
      curl_free(part);
      part = NULL;
    }

    if (code != empty) {
      return lcurl_fail_ex(L, p->err_mode, LCURL_ERROR_URL, code);
    }
  }

  if (part == NULL) {
    lutil_push_null(L);
  }
  else {
    lua_pushstring(L, part);
    curl_free(part);
  }

  return 1;
}
Beispiel #2
0
int lcurl_url_create(lua_State *L, int error_mode){
  lcurl_url_t *p;

  p = lutil_newudatap(L, lcurl_url_t, LCURL_URL);

  p->url = curl_url();
  if(!p->url) return lcurl_fail_ex(L, p->err_mode, LCURL_ERROR_URL, CURLUE_OUT_OF_MEMORY);

  p->err_mode = error_mode;

  if (lua_gettop(L) > 1) {
    const char *url = luaL_checkstring(L, 1);
    unsigned int flags = 0;
    CURLUcode code;

    if (lua_gettop(L) > 2) {
      flags = (unsigned int)lutil_optint64(L, 2, 0);
    }

    code = curl_url_set(p->url, CURLUPART_URL, url, flags);
    if (code != CURLUE_OK) {
      return lcurl_fail_ex(L, p->err_mode, LCURL_ERROR_URL, code);
    }
  }

  return 1;
}
Beispiel #3
0
static int lcurl_url_set(lua_State *L, CURLUPart what){
  lcurl_url_t *p = lcurl_geturl(L);
  CURLUcode code;
  const char *part;
  unsigned int flags = 0;
  
  luaL_argcheck(L, lua_type(L, 2) == LUA_TSTRING || lutil_is_null(L, 2), 2, "string expected");

  part = lua_tostring(L, 2);
  flags = (unsigned int)lutil_optint64(L, 3, 0);

  code = curl_url_set(p->url, what, part, flags);
  if (code != CURLUE_OK) {
    return lcurl_fail_ex(L, p->err_mode, LCURL_ERROR_URL, code);
  }

  lua_settop(L, 1);
  return 1;
}
Beispiel #4
0
curl_socket_t lcurl_opt_os_socket(lua_State *L, int idx, curl_socket_t def) {
  if (lua_islightuserdata(L, idx))
    return (curl_socket_t)lua_touserdata(L, idx);

  return (curl_socket_t)lutil_optint64(L, idx, def);
}