#define ACCOUNT_CUSTOM_DATA_KEY_KEY "key"
#define ACCOUNT_CUSTOM_DATA_KEY_VALUE "value"
+#define VARIANT_LABEL_LIST "label_list"
+#define VARIANT_PROVIDER_FEATURE_LIST "provider_feature"
+
static label_s *_variant_to_label(GVariant *variant)
{
gchar *app_id = NULL;
return label_data;
}
-GSList *variant_to_label_list(GVariant *variant)
+static provider_feature_s *_variant_to_provider_feature(GVariant *variant)
{
- GSList *list = NULL;
- GVariantIter iter;
- GVariant *value;
+ gchar *key = NULL;
+ gchar *app_id = NULL;
g_return_val_if_fail(variant != NULL, NULL);
- g_variant_iter_init(&iter, variant);
- while ((value = g_variant_iter_next_value(&iter))) {
- list = g_slist_append(list, _variant_to_label(value));
- g_variant_unref(value);
+ g_variant_get(variant, "(ss)", &key, &app_id);
+
+ provider_feature_s *provider_feature_data = (provider_feature_s *)calloc(1, sizeof(provider_feature_s));
+ if (provider_feature_data == NULL) {
+ _ERR("provider_feature_s calloc failed - out of memory.");
+ return NULL;
}
- return list;
-}
+ provider_feature_data->key = g_strdup(key);
+
+ provider_feature_data->app_id = g_strdup(app_id);
+ g_free(key);
+ g_free(app_id);
+
+ return provider_feature_data;
+}
static GVariant *_label_to_variant(label_s *label_data)
{
return variant;
}
+static GSList *get_variant_to_list(GVariant *variant, const char* variant_type)
+{
+ _INFO("get_variant_to_list start");
+ GSList *list = NULL;
+ GVariantIter iter;
+ GVariant *value;
+
+ g_return_val_if_fail(variant_type != NULL, NULL);
+ g_return_val_if_fail(variant != NULL, NULL);
+ g_variant_iter_init(&iter, variant);
+
+ if (g_strcmp0(variant_type, VARIANT_LABEL_LIST) == 0) {
+ while ((value = g_variant_iter_next_value(&iter))) {
+ list = g_slist_append(list, _variant_to_label(value));
+ g_variant_unref(value);
+ }
+ } else if (g_strcmp0(variant_type, VARIANT_PROVIDER_FEATURE_LIST) == 0) {
+ while ((value = g_variant_iter_next_value(&iter))) {
+ list = g_slist_append(list, _variant_to_provider_feature(value));
+ g_variant_unref(value);
+ }
+ }
+ _INFO("get_variant_to_list end");
+ return list;
+}
+
+GSList *variant_to_label_list(GVariant *variant)
+{
+ GSList *list = NULL;
+ list = get_variant_to_list(variant, VARIANT_LABEL_LIST);
+ g_return_val_if_fail(list != NULL, NULL);
+ return list;
+}
+
GVariant *label_list_to_variant(GSList *list)
{
GVariantBuilder builder;
return variant;
}
-
-static provider_feature_s *_variant_to_provider_feature(GVariant *variant)
-{
- gchar *key = NULL;
- gchar *app_id = NULL;
-
- g_return_val_if_fail(variant != NULL, NULL);
-
- g_variant_get(variant, "(ss)", &key, &app_id);
-
- provider_feature_s *provider_feature_data = (provider_feature_s *)calloc(1, sizeof(provider_feature_s));
- if (provider_feature_data == NULL) {
- _ERR("provider_feature_s calloc failed - out of memory.");
- return NULL;
- }
-
- provider_feature_data->key = g_strdup(key);
-
- provider_feature_data->app_id = g_strdup(app_id);
-
- g_free(key);
- g_free(app_id);
-
- return provider_feature_data;
-}
-
GSList *variant_to_provider_feature_list(GVariant *variant)
{
GSList *list = NULL;
- GVariantIter iter;
- GVariant *value;
-
- g_return_val_if_fail(variant != NULL, NULL);
-
- g_variant_iter_init(&iter, variant);
- while ((value = g_variant_iter_next_value(&iter))) {
- list = g_slist_append(list, _variant_to_provider_feature(value));
- g_variant_unref(value);
- }
-
+ list = get_variant_to_list(variant, VARIANT_PROVIDER_FEATURE_LIST);
+ g_return_val_if_fail(list != NULL, NULL);
return list;
}
g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);
for (iter = list; iter != NULL; iter = g_slist_next(iter)) {
provider_feature_data = (provider_feature_s *)(iter->data);
- g_variant_builder_add_value(
- &builder,
+ g_variant_builder_add_value(&builder,
_provider_feature_to_variant(provider_feature_data));
}
variant = g_variant_builder_end(&builder);
return g_variant_builder_end(&builder);
}
-account_s *umarshal_account(GVariant *in_data)
+account_s* get_unmarshal_data(GVariantIter *iterator)
{
- _INFO("umarshal_account start");
+ _INFO("get_unmarshal_data start");
+ gchar *key = NULL;
+ GVariant *value = NULL;
- if (in_data == NULL) {
- _ERR("Null input");
+ if (iterator == NULL) {
+ _ERR("received NULL iterator");
return NULL;
}
return NULL;
}
- GVariantIter iter;
- gchar *key = NULL;
- GVariant *value = NULL;
-
- g_variant_iter_init(&iter, in_data);
-
- while (g_variant_iter_loop(&iter, "{sv}", &key, &value)) {
+ while (g_variant_iter_loop(iterator, "{sv}", &key, &value)) {
if (!strcmp(key, ACCOUNT_DATA_KEY_ID))
account->id = g_variant_get_int32(value);
else if (!strcmp(key, ACCOUNT_DATA_KEY_CUSTOM_LIST))
account->custom_list = unmarshal_custom_list(value);
}
+ _INFO("get_unmarshal_data end");
+ return account;
+}
+
+account_s *umarshal_account(GVariant *in_data)
+{
+ _INFO("umarshal_account start");
+ GVariantIter iter;
+
+ if (in_data == NULL) {
+ _ERR("Null input");
+ return NULL;
+ }
+
+ g_variant_iter_init(&iter, in_data);
+
+ account_s *account = get_unmarshal_data(&iter);
+ if (account == NULL) {
+ _ERR("failed to get un-marshal data");
+ return NULL;
+ }
_INFO("unmarshal_account end");
return account;
GSList *list = NULL;
GVariantIter iter;
GVariantIter *iter_row = NULL;
- const gchar *key = NULL;
- GVariant *value = NULL;
if (variant == NULL) {
_ERR("input NULL");
g_variant_iter_init(&iter, variant);
while (g_variant_iter_loop(&iter, "a{sv}", &iter_row)) {
- account_s *account = (account_s *)calloc(1, sizeof(account_s));
+ account_s *account = get_unmarshal_data(iter_row);
if (account == NULL) {
- ACCOUNT_FATAL("account_s calloc failed - out of memory.");
- break;
- }
-
- while (g_variant_iter_loop(iter_row, "{sv}", &key, &value)) {
- if (!g_strcmp0(key, ACCOUNT_DATA_KEY_ID))
- account->id = g_variant_get_int32(value);
-
- if (!g_strcmp0(key, ACCOUNT_DATA_KEY_USER_NAME))
- account->user_name = g_strdup(g_variant_get_string(value, NULL));
- else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_EMAIL))
- account->email_address = g_strdup(g_variant_get_string(value, NULL));
- else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_DISPLAY_NAME))
- account->display_name = g_strdup(g_variant_get_string(value, NULL));
- else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_ICON_PATH))
- account->icon_path = g_strdup(g_variant_get_string(value, NULL));
- else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_SOURCE))
- account->source = g_strdup(g_variant_get_string(value, NULL));
- else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_PACKAGE_NAME))
- account->package_name = g_strdup(g_variant_get_string(value, NULL));
- else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_ACCESS_TOKEN))
- account->access_token = g_strdup(g_variant_get_string(value, NULL));
- else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_DOMAIN_NAME))
- account->domain_name = g_strdup(g_variant_get_string(value, NULL));
- else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_AUTH_TYPE))
- account->auth_type = g_variant_get_int32(value);
- else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_SECRET))
- account->secret = g_variant_get_int32(value);
- else if (!g_strcmp0(key, ACCOUNT_DATA_KEY_SYNC_SUPPORT))
- account->sync_support = g_variant_get_int32(value);
- else if (!strcmp(key, ACCOUNT_DATA_KEY_USER_DATA_INT)) {
- int i;
- int *tmp_user_ints = unmarshal_user_int_array(value);
- if (tmp_user_ints != NULL) {
- for (i = 0; i < USER_INT_CNT; i++)
- account->user_data_int[i] = tmp_user_ints[i];
- }
- _ACCOUNT_FREE(tmp_user_ints);
- } else if (!strcmp(key, ACCOUNT_DATA_KEY_USER_DATA_TXT)) {
- int i;
- char **tmp_user_txts = unmarshal_user_txt_array(value);
- if (*tmp_user_txts != NULL) {
- for (i = 0; i < USER_TXT_CNT; i++) {
- account->user_data_txt[i] = strdup(tmp_user_txts[i]);
- _ACCOUNT_FREE(tmp_user_txts[i]);
- }
- }
- _ACCOUNT_FREE(tmp_user_txts);
- } else if (!strcmp(key, ACCOUNT_DATA_KEY_CAPABILITY_LIST))
- account->capablity_list = unmarshal_capability_list(value);
- else if (!strcmp(key, ACCOUNT_DATA_KEY_CUSTOM_LIST))
- account->custom_list = unmarshal_custom_list(value);
+ _ERR("failed to get un-marshal data");
+ return NULL;
}
list = g_slist_append(list, account);
}