EXPORT_API int sticker_provider_create(sticker_provider_h *provider_handle)
{
- int ret;
+ CHECK_STICKER_FEATURE();
+ int ret;
if (!provider_handle)
return STICKER_ERROR_INVALID_PARAMETER;
ret = sticker_dbus_init(&provider_struct->gdbus_connection, &provider_struct->server_watcher_id,
&provider_struct->monitor_id, &provider_struct->server_monitor_id, STICKER_CLIENT_LIB_PROVIDER, (void *)provider_struct);
if (ret != STICKER_ERROR_NONE) {
+ //LCOV_EXCL_START
LOGE("Failed to initialize dbus : %d", ret);
free(provider_struct);
return STICKER_ERROR_OPERATION_FAILED;
+ //LCOV_EXCL_STOP
}
*provider_handle = provider_struct;
EXPORT_API int sticker_provider_destroy(sticker_provider_h provider_handle)
{
- LOGD("provider_handle : %p", provider_handle);
- int ret;
+ CHECK_STICKER_FEATURE();
+ int ret;
if (!provider_handle)
return STICKER_ERROR_INVALID_PARAMETER;
- ret = sticker_dbus_shutdown(provider_handle->gdbus_connection, &provider_handle->server_monitor_id, &provider_handle->monitor_id);
+ LOGD("provider_handle : %p", provider_handle);
+ ret = sticker_dbus_shutdown(provider_handle->gdbus_connection, &provider_handle->server_watcher_id,
+ &provider_handle->server_monitor_id, &provider_handle->monitor_id, STICKER_CLIENT_LIB_PROVIDER);
if (ret != STICKER_ERROR_NONE) {
+ //LCOV_EXCL_START
LOGE("Failed to finalize dbus : %d", ret);
free(provider_handle);
return STICKER_ERROR_OPERATION_FAILED;
+ //LCOV_EXCL_STOP
}
if (provider_handle->gdbus_connection)
EXPORT_API int sticker_provider_insert_data(sticker_provider_h provider_handle, sticker_data_h data_handle)
{
+ CHECK_STICKER_FEATURE();
+
int ret;
+ int is_exist = 0;
- if (!provider_handle || !data_handle || (data_handle->sticker_info_id > 0))
+ if (!provider_handle || !data_handle || (data_handle->sticker_info_id > 0) || !data_handle->uri)
return STICKER_ERROR_INVALID_PARAMETER;
+ int len = strlen(STICKER_DIRECTORY) + strlen(data_handle->app_id) + strlen(data_handle->uri) + 3;
+ char *new_path = (char *)calloc(len, sizeof(char));
+ if (!new_path) {
+ return STICKER_ERROR_OUT_OF_MEMORY;
+ }
+
+ if (data_handle->uri[0] == '/')
+ snprintf(new_path, len, "%s/%s%s",STICKER_DIRECTORY, data_handle->app_id, data_handle->uri);
+ else
+ snprintf(new_path, len, "%s/%s/%s",STICKER_DIRECTORY, data_handle->app_id, data_handle->uri);
+
+ ret = sticker_dbus_check_file_exists(provider_handle->gdbus_connection, new_path, &is_exist);
+ if (ret != STICKER_ERROR_NONE) {
+ LOGE("Failed to check file exists : %d", ret);
+ ret = STICKER_ERROR_OPERATION_FAILED;
+ goto cleanup;
+ }
+
+ if (is_exist) {
+ LOGE("Sticker already exists");
+ ret = STICKER_ERROR_FILE_EXISTS;
+ goto cleanup;
+ }
+
ret = sticker_dbus_insert_sticker_info(provider_handle->gdbus_connection, data_handle);
if (ret != STICKER_ERROR_NONE) {
LOGE("Failed to insert sticker information : %d", ret);
- return STICKER_ERROR_OPERATION_FAILED;
+ if (ret == STICKER_CLIENT_ERROR_NO_SUCH_FILE)
+ ret = STICKER_ERROR_NO_SUCH_FILE;
+ else
+ ret = STICKER_ERROR_OPERATION_FAILED;
}
- return STICKER_ERROR_NONE;
+cleanup:
+ if (new_path) {
+ free(new_path);
+ new_path = NULL;
+ }
+
+ return ret;
}
-EXPORT_API int sticker_privider_insert_data_by_json_file(sticker_provider_h provider_handle, const char *json_path, sticker_provider_insert_finished_cb callback, void *user_data)
+EXPORT_API int sticker_provider_insert_data_by_json_file(sticker_provider_h provider_handle, const char *json_path, sticker_provider_insert_finished_cb callback, void *user_data)
{
+ CHECK_STICKER_FEATURE();
+
int ret;
char *app_id = NULL;
package_info_h package_info = NULL;
ret = app_get_id(&app_id);
if (ret != APP_ERROR_NONE) {
- LOGE("Failed to get app_id : %d", ret);
+ LOGE("Failed to get app_id : %d", ret); //LCOV_EXCL_LINE
ret = STICKER_ERROR_OPERATION_FAILED;
goto cleanup;
}
if (access(json_path, F_OK) != 0) {
ret = package_info_create(app_id, &package_info);
if (ret != PACKAGE_MANAGER_ERROR_NONE || package_info == NULL) {
- LOGE("faild to create package_info. ret: %d", ret);
+ LOGE("failed to create package_info. ret: %d", ret); //LCOV_EXCL_LINE
ret = STICKER_ERROR_OPERATION_FAILED;
goto cleanup;
}
ret = package_info_get_root_path(package_info, &app_path);
if (ret != PACKAGE_MANAGER_ERROR_NONE || app_path == NULL) {
- LOGE("faild to create package_info. ret: %d", ret);
+ LOGE("failed to create package_info. ret: %d", ret); //LCOV_EXCL_LINE
ret = STICKER_ERROR_OPERATION_FAILED;
goto cleanup;
}
int path_len = strlen(app_path) + strlen(json_path) + 2;
file_path = (char *)calloc(path_len, sizeof(char));
if (!file_path) {
- LOGE("failed to alloc memory");
+ LOGE("failed to alloc memory"); //LCOV_EXCL_LINE
ret = STICKER_ERROR_OPERATION_FAILED;
goto cleanup;
}
ret = sticker_dbus_insert_sticker_info_by_json(provider_handle->gdbus_connection, app_id, file_path);
if (ret != STICKER_ERROR_NONE) {
LOGE("Failed to load json file : %d", ret);
- return STICKER_ERROR_OPERATION_FAILED;
+ ret = STICKER_ERROR_OPERATION_FAILED;
+ goto cleanup;
}
provider_handle->insert_finished_cb = callback;
EXPORT_API int sticker_provider_update_data(sticker_provider_h provider_handle, sticker_data_h data_handle)
{
- int ret;
+ CHECK_STICKER_FEATURE();
+ int ret;
if (!provider_handle || !data_handle || (data_handle->sticker_info_id <= 0))
return STICKER_ERROR_INVALID_PARAMETER;
ret = sticker_dbus_update_sticker_info(provider_handle->gdbus_connection, data_handle);
if (ret != STICKER_ERROR_NONE) {
+ //LCOV_EXCL_START
LOGE("Failed to update sticker information : %d", ret);
- return STICKER_ERROR_OPERATION_FAILED;
+ if (ret == STICKER_CLIENT_ERROR_FILE_EXISTS)
+ return STICKER_ERROR_FILE_EXISTS;
+ else if (ret == STICKER_CLIENT_ERROR_NO_SUCH_FILE)
+ return STICKER_ERROR_NO_SUCH_FILE;
+ else
+ return STICKER_ERROR_OPERATION_FAILED;
+ //LCOV_EXCL_STOP
}
return STICKER_ERROR_NONE;
EXPORT_API int sticker_provider_delete_data(sticker_provider_h provider_handle, sticker_data_h data_handle)
{
- int ret;
+ CHECK_STICKER_FEATURE();
- if (!provider_handle || (data_handle->sticker_info_id <= 0))
+ int ret;
+ if (!provider_handle || !data_handle || (data_handle->sticker_info_id <= 0))
return STICKER_ERROR_INVALID_PARAMETER;
ret = sticker_dbus_delete_sticker_info(provider_handle->gdbus_connection, data_handle->sticker_info_id);
EXPORT_API int sticker_provider_get_sticker_count(sticker_provider_h provider_handle, int *count)
{
+ CHECK_STICKER_FEATURE();
+
int ret;
char *app_id = NULL;
- if (!provider_handle)
+ if (!provider_handle || !count)
return STICKER_ERROR_INVALID_PARAMETER;
ret = app_get_id(&app_id);
if (ret != APP_ERROR_NONE) {
- LOGE("Failed to get app_id : %d", ret);
+ LOGE("Failed to get app_id : %d", ret); //LCOV_EXCL_LINE
ret = STICKER_ERROR_OPERATION_FAILED;
goto cleanup;
}
EXPORT_API int sticker_provider_data_foreach_all(sticker_provider_h provider_handle, int offset, int count, int *result, sticker_provider_data_foreach_cb callback, void *user_data)
{
+ CHECK_STICKER_FEATURE();
+
int ret;
int info_id;
int sticker_count = 0;
ret = app_get_id(&app_id);
if (ret != APP_ERROR_NONE) {
- LOGE("Failed to get app_id : %d", ret);
+ LOGE("Failed to get app_id : %d", ret); //LCOV_EXCL_LINE
ret = STICKER_ERROR_OPERATION_FAILED;
goto cleanup;
}
g_variant_iter_free(id_iter);
return ret;
-}
\ No newline at end of file
+}
+
+EXPORT_API int sticker_provider_delete_data_by_uri(sticker_provider_h provider_handle, const char *uri)
+{
+ CHECK_STICKER_FEATURE();
+
+ int ret;
+ int is_exist = 0;
+
+ if (!provider_handle || !uri)
+ return STICKER_ERROR_INVALID_PARAMETER;
+
+ ret = sticker_dbus_check_file_exists(provider_handle->gdbus_connection, uri, &is_exist);
+ if (ret != STICKER_ERROR_NONE) {
+ LOGE("Failed to check file exists : %d", ret);
+ return STICKER_ERROR_OPERATION_FAILED;
+ }
+
+ if (!is_exist) {
+ LOGE("Sticker does not exist");
+ return STICKER_ERROR_NO_SUCH_FILE;
+ }
+
+ ret = sticker_dbus_delete_sticker_info_by_uri(provider_handle->gdbus_connection, uri);
+ if (ret != STICKER_ERROR_NONE) {
+ LOGE("Failed to delete sticker information : %d", ret);
+ return STICKER_ERROR_OPERATION_FAILED;
+ }
+
+ return STICKER_ERROR_NONE;
+}