lcb_error_t lcb_n1p_mkcmd(lcb_N1QLPARAMS *params, lcb_CMDN1QL *cmd) { lcb_error_t err; /* Build the query */ if (!params->form.nused) { return LCB_EINVAL; /* Empty! */ } if ((err = finalize_field(params, ¶ms->posargs, "args", "]")) != LCB_SUCCESS) { return err; } if (params->scanvec.nused) { if (params->consist_type != LCB_N1P_CONSISTENCY_RYOW) { return LCB_OPTIONS_CONFLICT; } if ((err = finalize_field(params, ¶ms->scanvec, "scan_vector", "}")) != LCB_SUCCESS) { return err; } } if (params->consist_type) { if (-1 == lcb_string_reserve(¶ms->form, 15)) { return LCB_CLIENT_ENOMEM; } } if (params->consist_type == LCB_N1P_CONSISTENCY_RYOW) { if (!params->scanvec.nused) { return LCB_OPTIONS_CONFLICT; } else { lcb_n1p_setoptz(params, PARAM_CONSISTENT, "at_plus"); } } else if (params->consist_type == LCB_N1P_CONSISTENCY_REQUEST) { lcb_n1p_setoptz(params, PARAM_CONSISTENT, "request_plus"); } else if (params->consist_type == LCB_N1P_CONSISTENCY_STATMENT) { lcb_n1p_setoptz(params, PARAM_CONSISTENT, "statement_plus"); } else if (params->consist_type == LCB_N1P_CONSISTENCY_NONE) { } else { return LCB_EINVAL; } cmd->content_type = "application/x-www-form-urlencoded"; cmd->query = params->form.base; cmd->nquery = params->form.nused; return LCB_SUCCESS; }
LIBCOUCHBASE_API const char * lcb_n1p_encode(lcb_N1QLPARAMS *params, lcb_error_t *err) { lcb_error_t err_s = LCB_SUCCESS; if (!err) { err = &err_s; } /* Build the query */ lcb_string_clear(¶ms->reqbuf); if (!params->form.nused) { *err = LCB_EINVAL; return NULL; } if (-1 == lcb_string_append( ¶ms->reqbuf, params->form.base, params->form.nused)) { *err = LCB_CLIENT_ENOMEM; return NULL; } if ((*err = finalize_field(params, ¶ms->posargs, "args", "]")) != LCB_SUCCESS) { return NULL; } if (params->scanvec.nused) { if (params->consist_type != LCB_N1P_CONSISTENCY_RYOW) { *err = LCB_OPTIONS_CONFLICT; return NULL; } if ((*err = finalize_field(params, ¶ms->scanvec, "scan_vector", "}")) != LCB_SUCCESS) { return NULL; } } if (params->consist_type) { if (-1 == lcb_string_reserve(¶ms->reqbuf, 15)) { *err = LCB_CLIENT_ENOMEM; return NULL; } } if (params->consist_type == LCB_N1P_CONSISTENCY_RYOW) { if (!params->scanvec.nused) { *err = LCB_OPTIONS_CONFLICT; return NULL; } else { set_reqbuf_optz(params, PARAM_CONSISTENT, "at_plus"); } } else if (params->consist_type == LCB_N1P_CONSISTENCY_REQUEST) { set_reqbuf_optz(params, PARAM_CONSISTENT, "request_plus"); } else if (params->consist_type == LCB_N1P_CONSISTENCY_STATEMENT) { set_reqbuf_optz(params, PARAM_CONSISTENT, "statement_plus"); } else if (params->consist_type == LCB_N1P_CONSISTENCY_NONE) { /* Nothing */ } else { *err = LCB_EINVAL; return NULL; } return params->reqbuf.base; }