add pkgmgrinfo_appinfo_get_metadata_value API 96/66896/1 accepted/tizen/common/20160422.171935 accepted/tizen/ivi/20160422.070338 accepted/tizen/mobile/20160422.070502 accepted/tizen/tv/20160422.070328 accepted/tizen/wearable/20160422.070311 submit/tizen/20160422.041545
authorJunghyun Yeon <jungh.yeon@samsung.com>
Fri, 22 Apr 2016 01:57:37 +0000 (10:57 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Fri, 22 Apr 2016 01:57:37 +0000 (10:57 +0900)
Change-Id: I849d476dc4b83f4a98630cb3ae3f88e87036110c
Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
include/pkgmgr-info.h
src/pkgmgrinfo_appinfo.c

index ab1ed59..ce0d75b 100644 (file)
@@ -2572,6 +2572,43 @@ int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *locale,
 int pkgmgrinfo_appinfo_usr_get_localed_label(const char *appid, const char *locale, uid_t uid, char **label);
 
 /**
+ * @fn int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value)
+ * @brief      This API gets metadata value by given metadata key
+ *
+ * @par                This API is for package-manager client application
+ * @par Sync (or) Async : Synchronous API
+ *
+ * @param[in]  handle  pointer to the application info handle
+ * @param[in]  metadata_key    metadata key
+ * @param[out] metadata_value          pointer to hold metadata value
+ * @return     0 if success, error code(<0) if fail
+ * @retval     PMINFO_R_OK     success
+ * @retval     PMINFO_R_EINVAL invalid argument
+ * @code
+static int get_metadata_value(const char *appid, const char *metadata_key)
+{
+       int ret = 0;
+       pkgmgrinfo_appinfo_h handle = NULL;
+       char *metadata_value = NULL;
+
+       ret = pkgmgrinfo_appinfo_get_appinfo(appid, &handle);
+       if (ret != PMINFO_R_OK)
+               return -1;
+
+       ret = pkgmgrinfo_appinfo_get_metadata_value(handle, metadata_key, &metadata_value);
+       if (ret != PMINFO_R_OK) {
+               pkgmgrinfo_appinfo_destroy_appinfo(handle);
+               return -1;
+       }
+
+       pkgmgrinfo_appinfo_destroy_appinfo(handle);
+       return 0;
+}
+ * @endcode
+ */
+int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value);
+
+/**
  * @fn int pkgmgrinfo_appinfo_get_component(pkgmgrinfo_appinfo_h handle, pkgmgrinfo_app_component *component)
  * @brief      This API gets the component of the application
  *
index 4004fc0..13c31ba 100644 (file)
@@ -1691,6 +1691,31 @@ API int pkgmgrinfo_appinfo_get_localed_label(const char *appid, const char *loca
        return pkgmgrinfo_appinfo_usr_get_localed_label(appid, locale, _getuid(), label);
 }
 
+API int pkgmgrinfo_appinfo_get_metadata_value(pkgmgrinfo_appinfo_h handle, const char *metadata_key, char **metadata_value)
+{
+       retvm_if(handle == NULL, PMINFO_R_EINVAL, "appinfo handle is NULL");
+       retvm_if(metadata_key == NULL, PMINFO_R_EINVAL, "metadata_key is NULL");
+       retvm_if(metadata_value == NULL, PMINFO_R_EINVAL, "metadata_value is NULL");
+
+       GList *list_md = NULL;
+       metadata_x *metadata = NULL;
+       pkgmgr_appinfo_x *info = (pkgmgr_appinfo_x *)handle;
+
+       list_md = info->app_info->metadata;
+
+       for (; list_md; list_md = list_md->next) {
+               metadata = (metadata_x *)list_md->data;
+               if (metadata && metadata->key) {
+                       if (strcasecmp(metadata->key, metadata_key) == 0) {
+                               *metadata_value = (char*)metadata->value;
+                               return PMINFO_R_OK;
+                       }
+               }
+       }
+
+       return PMINFO_R_EINVAL;
+}
+
 static pkgmgrinfo_app_component __appcomponent_convert(const char *comp)
 {
        if (strcasecmp(comp, "uiapp") == 0)