/*
- Copyright 2015 IoT.bzh
+ Copyright 2015, 2016, 2017 IoT.bzh
author: José Bollo <jose.bollo@iot.bzh>
* path: STRING, the path of the root directory for the application
* content: STRING, the relative path to the entryu point of the application
* type: STRING, the mime type describing the type 'content'
- * plugins: ARRAY, array of plugins
+ * bindings: ARRAY, array of bindings
* [
- * STRING, path to the plugin
+ * STRING, path to the binding
* ]
* public: OBJECT, public content describing the application widget
* {
if (!pub)
goto error;
- plugs = j_add_new_array(priv, "plugins");
+ plugs = j_add_new_array(priv, "bindings");
if (!plugs)
goto error;
|| !j_add_string(pub, "author", desc->author))
goto error;
- /* extract plugins from features */
+ /* extract bindings from features */
feat = desc->features;
while (feat) {
- static const char prefix[] = FWK_PREFIX_PLUGIN;
+ static const char prefix[] = FWK_PREFIX_BINDING;
if (!memcmp(feat->name, prefix, sizeof prefix - 1)) {
str = json_object_new_string (
feat->name + sizeof prefix - 1);
*/
struct json_object *afm_db_get_application(struct afm_db *afdb, const char *id)
{
+ int i;
struct json_object *result;
- if (!afm_db_ensure_applications(afdb) && json_object_object_get_ex(
- afdb->applications.direct, id, &result))
+
+ if (afm_db_ensure_applications(afdb))
+ return NULL;
+
+ /* search case sensitively */
+ if (json_object_object_get_ex( afdb->applications.direct, id, &result))
return json_object_get(result);
+
+ /* fallback to a case insensitive search */
+ i = json_object_array_length(afdb->applications.pubarr);
+ while (i) {
+ result = json_object_array_get_idx(afdb->applications.pubarr, --i);
+ if (result
+ && json_object_object_get_ex(result, "id", &result)
+ && !strcasecmp(id, json_object_get_string(result))) {
+ if (json_object_object_get_ex( afdb->applications.direct,
+ json_object_get_string(result),
+ &result))
+ return json_object_get(result);
+ else
+ return NULL;
+ }
+ }
return NULL;
}