2 * Copyright (C) 2015 "IoT.bzh"
3 * Author "Fulup Ar Foll"
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #include "local-def.h"
23 #include "afb-req-itf.h"
25 static json_object* pingSample (AFB_request *request) {
26 static int pingcount = 0;
27 json_object *response;
31 // request all query key/value
32 len = getQueryAll (request, query, sizeof(query));
33 if (len == 0) strcpy (query,"NoSearchQueryList");
35 // return response to caller
36 // response = jsonNewMessage(AFB_SUCCESS, "Ping Binder Daemon %d query={%s}", pingcount++, query);
37 afb_req_success_f(*request->areq, NULL, "Ping Binder Daemon %d query={%s}", pingcount++, query);
39 if (verbose) fprintf(stderr, "%d: \n", pingcount);
40 return NULL; //(response);
43 static json_object* pingFail (AFB_request *request) {
47 static json_object* pingBug (AFB_request *request) {
50 fprintf (stderr, "Use --timeout=10 to trap error\n");
55 // should never return
60 // For samples https://linuxprograms.wordpress.com/2010/05/20/json-c-libjson-tutorial/
61 static json_object* pingJson (AFB_request *request) {
62 json_object *jresp, *embed;
64 jresp = json_object_new_object();
65 json_object_object_add(jresp, "myString", json_object_new_string ("Some String"));
66 json_object_object_add(jresp, "myInt", json_object_new_int (1234));
68 embed = json_object_new_object();
69 json_object_object_add(embed, "subObjString", json_object_new_string ("Some String"));
70 json_object_object_add(embed, "subObjInt", json_object_new_int (5678));
72 json_object_object_add(jresp,"eobj", embed);
77 // NOTE: this sample does not use session to keep test a basic as possible
78 // in real application most APIs should be protected with AFB_SESSION_CHECK
79 static AFB_restapi pluginApis[]= {
80 {"ping" , AFB_SESSION_NONE, (AFB_apiCB)pingSample , "Ping Application Framework"},
81 {"pingnull" , AFB_SESSION_NONE, (AFB_apiCB)pingFail , "Return NULL"},
82 {"pingbug" , AFB_SESSION_NONE, (AFB_apiCB)pingBug , "Do a Memory Violation"},
83 {"pingJson" , AFB_SESSION_NONE, (AFB_apiCB)pingJson , "Return a JSON object"},
87 static const AFB_plugin plugin = {
88 .type = AFB_PLUGIN_JSON,
89 .info = "Minimal Hello World Sample",
94 const AFB_plugin *pluginRegister () {