From 7508882ed8fc512d608585147e2520a9341401df Mon Sep 17 00:00:00 2001 From: Tadao Tanikawa Date: Fri, 22 Dec 2017 22:57:55 +0900 Subject: Support passing port/token to XDG app from AGL appfw Introducing special string '@port@' and '@token@' in order that runxdg pass them to target XDG application. See detail in README.txt Bug-AGL: SPEC-1096 Change-Id: I6d6cfe62bba50ba5515a6aea6fb2697ae379df5f Signed-off-by: Tadao Tanikawa --- README.txt | 10 ++++++++++ src/runxdg.cpp | 22 ++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/README.txt b/README.txt index 5006c2d..24eb4d9 100644 --- a/README.txt +++ b/README.txt @@ -23,6 +23,16 @@ How to build with SDK e.g. followings are predefined role by default "role": "MediaPlayer|Radio|Phone|Navigation|HVAC|Settings|Dashboard|POI|Mixer" + In order to pass port number and token which are given from + AGL application framework binder to XDG application, + you can use special string '@port@' and '@token@'. + + For 'params', you can use special string '@port@' and '@token@" + to pass them to target XDG application + which are from AGL application framework binder. + + e.g. params = [ --port=@port@ --secret=@token@ ] + 3. Prepare config.xml for widget should be follow. diff --git a/src/runxdg.cpp b/src/runxdg.cpp index 5553ff5..3ff942c 100644 --- a/src/runxdg.cpp +++ b/src/runxdg.cpp @@ -410,7 +410,29 @@ int RunXDG::parse_config (const char *path_to_config) auto params = app->get_array_of("params"); for (const auto& param : *params) { + // replace special string "@port@" and "@token@" + size_t found = param.find("@port@"); + if (found != std::string::npos) { + std::string sub1 = param.substr(0, found); + std::string sub2 = param.substr(found + 6, param.size() - found); + std::string str = sub1 + std::to_string(m_port) + sub2; + pl->m_args_v.push_back(str); + AGL_DEBUG("params[%s] (match @port@)", str.c_str()); + continue; + } + + found = param.find("@token@"); + if (found != std::string::npos) { + std::string sub1 = param.substr(0, found); + std::string sub2 = param.substr(found + 7, param.size() - found); + std::string str = sub1 + m_token + sub2; + pl->m_args_v.push_back(str); + AGL_DEBUG("params[%s] (match @token@)", str.c_str()); + continue; + } + pl->m_args_v.push_back(param); + AGL_DEBUG("params[%s]", param.c_str()); } -- cgit 1.2.3-korg