enum http_rc_e _reply_success_json (struct req_args_s *args, GString * gstr) { int code = gstr && gstr->len > 0 ? HTTP_CODE_OK : HTTP_CODE_NO_CONTENT; const gchar *msg = gstr && gstr->len > 0 ? "OK" : "No Content"; return _reply_json (args, code, msg, gstr); }
// TODO: factorize the two following functions enum http_rc_e action_admin_meta0_list(struct req_args_s *args) { GError *err = NULL; GSList *m0_lst = NULL; GSList *m1_lst = NULL; GString *json = NULL; err = conscience_get_services(NS(), NAME_SRVTYPE_META0, FALSE, &m0_lst); if (!err) { for (GSList *l = m0_lst; l; l = l->next) { g_clear_error(&err); service_info_t *m0 = l->data; gchar m0_url[STRLEN_ADDRINFO] = {0}; grid_addrinfo_to_string(&(m0->addr), m0_url, sizeof(m0_url)); err = meta0_remote_get_meta1_all(m0_url, &m1_lst); if (!err || !CODE_IS_NETWORK_ERROR(err->code)) break; } g_slist_free_full(m0_lst, (GDestroyNotify)service_info_clean); } if (m1_lst) { json = _m0_mapping_from_m1_list(m1_lst); meta0_utils_list_clean(m1_lst); return _reply_json(args, HTTP_CODE_OK, "OK", json); } return _reply_common_error(args, err); }
enum http_rc_e _reply_notfound_error (struct req_args_s *args, GError * err) { return _reply_json (args, HTTP_CODE_NOT_FOUND, "Not found", _create_status_error (err)); }
enum http_rc_e _reply_not_implemented (struct req_args_s *args) { return _reply_json (args, HTTP_CODE_NOT_IMPLEMENTED, "Not implemented", _create_status_error (NEWERROR(CODE_NOT_IMPLEMENTED, "NYI"))); }
enum http_rc_e _reply_bad_gateway (struct req_args_s *args, GError * err) { return _reply_json (args, HTTP_CODE_BAD_GATEWAY, "Bad Gateway", _create_status_error (err)); }
enum http_rc_e _reply_system_error (struct req_args_s *args, GError * err) { return _reply_json (args, HTTP_CODE_INTERNAL_ERROR, "Internal error", _create_status_error (err)); }
enum http_rc_e _reply_format_error (struct req_args_s *args, GError * err) { return _reply_json (args, HTTP_CODE_BAD_REQUEST, "Bad request", _create_status_error (err)); }
enum http_rc_e _reply_created (struct req_args_s *args) { return _reply_json (args, HTTP_CODE_CREATED, "Created", NULL); }
enum http_rc_e _reply_accepted (struct req_args_s *args) { return _reply_json (args, HTTP_CODE_ACCEPTED, "Already Accepted", NULL); }
enum http_rc_e _reply_nocontent (struct req_args_s *args) { return _reply_json (args, HTTP_CODE_NO_CONTENT, "No Content", NULL); }
enum http_rc_e _reply_conflict_error (struct req_args_s *args, GError * err) { return _reply_json (args, HTTP_CODE_CONFLICT, "Conflict", _create_status_error (err)); }
enum http_rc_e _reply_method_error (struct req_args_s *args) { return _reply_json (args, HTTP_CODE_METHOD_NOT_ALLOWED, "Method not allowed", NULL); }
enum http_rc_e _reply_forbidden_error (struct req_args_s *args, GError * err) { return _reply_json (args, HTTP_CODE_FORBIDDEN, "Forbidden", _create_status_error (err)); }