- const char *value = afb_req_value(request, _event);
- if(value) {
- AFB_INFO("subscribe event %s", value);
- if(!isSupportEvent(value)) {
- AFB_WARNING("subscibe event isn't existing.");
- ret = AFB_EVENT_BAD_REQUEST;
+ struct json_object *ev_obj, *req_obj = afb_req_json(request);
+ if(json_object_object_get_ex(req_obj, _event, &ev_obj)) {
+ std::unordered_set<std::string> ev_set;
+ if(json_object_get_type(ev_obj) == json_type_string) {
+ ev_set.insert(json_object_get_string(ev_obj));
+ }
+ else if(json_object_get_type(ev_obj) == json_type_array) {
+ int array_len = json_object_array_length(ev_obj);
+ for (int i = 0; i < array_len; ++i) {
+ struct json_object *obj = json_object_array_get_idx(ev_obj, i);
+ ev_set.insert(json_object_get_string(obj));
+ }