int wpCreatePostStruct(xmlrpc_env *env, char *username, char*password, wppost_t *post, xmlrpc_value **paramArray, int mode) { int retval = 0; xmlrpc_value *blogidP, *postidP, *usernameP, *passwordP, *titleP, *descriptionP, *dateP, *publishP, *categoryP, *contentP, *tokenP; char *token; char *categories = NULL, *catPtr; if ( mode == 0 ) { post->blogid = wpGetBlogId(username, password, post->url); if (post->blogid == NULL) { fprintf(stderr, "NULL Blog Id\n"); retval = 1; goto out; } blogidP = xmlrpc_string_new(env, post->blogid); postidP = NULL; } else { blogidP = NULL; postidP = xmlrpc_string_new(env, post->postid); } usernameP = xmlrpc_string_new(env, username); passwordP = xmlrpc_string_new(env, password); titleP = xmlrpc_string_new(env, post->subject); descriptionP = xmlrpc_string_new(env, post->body); if(!strcmp(post->status, "draft")) { publishP = xmlrpc_bool_new(env, FALSE); } else { publishP = xmlrpc_bool_new(env, TRUE); } dateP = xmlrpc_datetime_new_sec(env, time(NULL)); asprintf(&categories, "%s", post->categories); catPtr = categories; categoryP = xmlrpc_array_new(env); token = strtok(categories, ","); tokenP = xmlrpc_string_new(env, token); xmlrpc_array_append_item(env, categoryP, tokenP); while( (token = strtok( (char *) NULL, ",") ) != NULL ) { tokenP = xmlrpc_string_new(env, token); xmlrpc_array_append_item(env, categoryP, tokenP); } free(catPtr); contentP = xmlrpc_struct_new(env); xmlrpc_struct_set_value(env, contentP, "title", titleP); xmlrpc_struct_set_value(env, contentP, "description", descriptionP); xmlrpc_struct_set_value(env, contentP, "dateCreated", dateP); xmlrpc_struct_set_value(env, contentP, "categories", categoryP); /* Populate the Parameter Array */ *paramArray = xmlrpc_array_new(env); if (mode == 0) xmlrpc_array_append_item(env, *paramArray, blogidP); else xmlrpc_array_append_item(env, *paramArray, postidP); xmlrpc_array_append_item(env, *paramArray, usernameP); xmlrpc_array_append_item(env, *paramArray, passwordP); xmlrpc_array_append_item(env, *paramArray, contentP); xmlrpc_array_append_item(env, *paramArray, publishP); out: return retval; }
static void test_value_bool(void) { xmlrpc_value * v; xmlrpc_env env; xmlrpc_bool b; /* Test booleans. */ xmlrpc_env_init(&env); TEST(streq(xmlrpc_type_name(XMLRPC_TYPE_BOOL), "BOOL")); v = xmlrpc_bool_new(&env, (xmlrpc_bool) 1); TEST_NO_FAULT(&env); TEST(XMLRPC_TYPE_BOOL == xmlrpc_value_type(v)); xmlrpc_read_bool(&env, v, &b); TEST_NO_FAULT(&env); TEST(b); xmlrpc_DECREF(v); v = xmlrpc_build_value(&env, "b", (xmlrpc_bool) 0); TEST_NO_FAULT(&env); TEST(v != NULL); TEST(XMLRPC_TYPE_BOOL == xmlrpc_value_type(v)); xmlrpc_decompose_value(&env, v, "b", &b); xmlrpc_DECREF(v); TEST_NO_FAULT(&env); TEST(!b); xmlrpc_env_clean(&env); }
void xr_setBoolInResult (void *data, int val) { CallerP c = (Caller *) data; if (c->result) xmlrpc_DECREF (c->result); if (!xr_errstat) c->result = xmlrpc_bool_new (c->env, (xmlrpc_bool)val); }
static void parseBoolean(xmlrpc_env * const envP, const char * const str, xmlrpc_value ** const valuePP) { /*---------------------------------------------------------------------------- Parse the content of a <boolean> XML-RPC XML element, e.g. "1". 'str' is that content. -----------------------------------------------------------------------------*/ XMLRPC_ASSERT_ENV_OK(envP); XMLRPC_ASSERT_PTR_OK(str); if (xmlrpc_streq(str, "0") || xmlrpc_streq(str, "1")) *valuePP = xmlrpc_bool_new(envP, xmlrpc_streq(str, "1") ? 1 : 0); else setParseFault(envP, "<boolean> XML element content must be either " "'0' or '1' according to XML-RPC. This one has '%s'", str); }
cWrapper(xmlrpc_bool const cppvalue) { env_wrap env; this->valueP = xmlrpc_bool_new(&env.env_c, cppvalue); throwIfError(env); }