static gboolean meta1_dispatch_v2_SRV_RENEW(struct gridd_reply_ctx_s *reply, struct meta1_backend_s *m1, gpointer ignored) { struct oio_url_s *url = metautils_message_extract_url (reply->request); gboolean ac = metautils_message_extract_flag(reply->request, NAME_MSGKEY_AUTOCREATE, FALSE); gboolean dryrun = metautils_message_extract_flag(reply->request, NAME_MSGKEY_DRYRUN, FALSE); gchar *srvtype = metautils_message_extract_string_copy (reply->request, NAME_MSGKEY_TYPENAME); reply->subject("%s|%s|%s|%d", oio_url_get(url, OIOURL_WHOLE), oio_url_get(url, OIOURL_HEXID), srvtype, dryrun); (void) ignored; gchar **result = NULL; GError *err = meta1_backend_services_poll(m1, url, srvtype, ac, dryrun, &result); if (NULL != err) reply->send_error(0, err); else { reply->add_body(marshall_stringv_and_clean(&result)); reply->send_reply(CODE_FINAL_OK, "OK"); } if (result) g_strfreev (result); oio_url_clean(url); g_free0 (srvtype); return TRUE; }
static gboolean meta1_dispatch_v2_SRV_FORCE(struct gridd_reply_ctx_s *reply, struct meta1_backend_s *m1, gpointer ignored UNUSED) { struct oio_url_s *url = metautils_message_extract_url (reply->request); gboolean ac = metautils_message_extract_flag (reply->request, NAME_MSGKEY_AUTOCREATE, FALSE); gboolean force = metautils_message_extract_flag (reply->request, NAME_MSGKEY_FORCE, FALSE); reply->subject("%s|%s|?", oio_url_get(url, OIOURL_WHOLE), oio_url_get(url, OIOURL_HEXID)); gchar *m1url = NULL; GError *err = metautils_message_extract_body_string(reply->request, &m1url); if (NULL != err) reply->send_error(CODE_BAD_REQUEST, err); else { reply->subject("%s|%s|%s", oio_url_get(url, OIOURL_WHOLE), oio_url_get(url, OIOURL_HEXID), m1url); err = meta1_backend_services_set(m1, url, m1url, ac, force); g_free0 (m1url); if (NULL != err) reply->send_error(0, err); else reply->send_reply(200, "OK"); } oio_url_clean (url); return TRUE; }
static gboolean meta1_dispatch_v2_SRVRELINK(struct gridd_reply_ctx_s *reply, struct meta1_backend_s *m1, gpointer ignored) { GError *err = NULL; gchar *replaced = NULL, *kept = NULL, **newset = NULL; struct oio_url_s *url = NULL; (void) ignored; url = metautils_message_extract_url (reply->request); kept = metautils_message_extract_string_copy (reply->request, NAME_MSGKEY_OLD); replaced = metautils_message_extract_string_copy (reply->request, NAME_MSGKEY_NOTIN); gboolean dryrun = metautils_message_extract_flag (reply->request, NAME_MSGKEY_DRYRUN, FALSE); reply->subject("%s|%s", oio_url_get(url, OIOURL_WHOLE), oio_url_get(url, OIOURL_HEXID)); if (!url) { reply->send_error (0, NEWERROR(CODE_BAD_REQUEST, "Missing field (%s)", "url")); } else { err = meta1_backend_services_relink (m1, url, kept, replaced, dryrun, &newset); if (NULL != err) { reply->send_error (0, err); } else { reply->add_body(marshall_stringv_and_clean(&newset)); reply->send_reply (CODE_FINAL_OK, "OK"); } } oio_url_pclean (&url); g_free0 (kept); g_free0 (replaced); if (newset) g_strfreev (newset); return TRUE; }
static gboolean meta1_dispatch_v2_PROPSET(struct gridd_reply_ctx_s *reply, struct meta1_backend_s *m1, gpointer ignored UNUSED) { struct oio_url_s *url = metautils_message_extract_url (reply->request); gboolean flush = metautils_message_extract_flag(reply->request, NAME_MSGKEY_FLUSH, FALSE); reply->subject("%s|%s", oio_url_get(url, OIOURL_WHOLE), oio_url_get(url, OIOURL_HEXID)); gsize length = 0; void *body = metautils_message_get_BODY(reply->request, &length); gchar **props = NULL; GError *err = KV_decode_buffer(body, length, &props); if (NULL != err) reply->send_error(CODE_BAD_REQUEST, err); else { err = meta1_backend_set_container_properties(m1, url, props, flush); g_strfreev (props); if (NULL != err) reply->send_error(0, err); else reply->send_reply(CODE_FINAL_OK, "OK"); } oio_url_clean (url); return TRUE; }
static int _extract_header_flag(const gchar *n, struct gridd_filter_ctx_s *ctx, struct gridd_reply_ctx_s *reply) { TRACE_FILTER(); if (metautils_message_extract_flag(reply->request, n, 0)) meta2_filter_ctx_add_param(ctx, n, "1"); return FILTER_OK; }
static gboolean meta1_dispatch_v2_SRV_LINK(struct gridd_reply_ctx_s *reply, struct meta1_backend_s *m1, gpointer ignored UNUSED) { struct oio_url_s *url = metautils_message_extract_url (reply->request); gchar *srvtype = metautils_message_extract_string_copy (reply->request, NAME_MSGKEY_TYPENAME); gboolean dryrun = metautils_message_extract_flag(reply->request, NAME_MSGKEY_DRYRUN, FALSE); gboolean autocreate = metautils_message_extract_flag(reply->request, NAME_MSGKEY_AUTOCREATE, FALSE); reply->subject("%s|%s|%s|%d", oio_url_get(url, OIOURL_WHOLE), oio_url_get(url, OIOURL_HEXID), srvtype, dryrun); gchar **result = NULL; GError *err = meta1_backend_services_link (m1, url, srvtype, dryrun, autocreate, &result); if (NULL != err) reply->send_error(0, err); else { reply->add_body(encode_and_clean(STRV_encode_gba, result)); reply->send_reply(CODE_FINAL_OK, "OK"); } oio_url_clean(url); g_free0 (srvtype); return TRUE; }
static gboolean meta1_dispatch_v2_USERDESTROY(struct gridd_reply_ctx_s *reply, struct meta1_backend_s *m1, gpointer ignored UNUSED) { struct oio_url_s *url = metautils_message_extract_url (reply->request); gboolean force = metautils_message_extract_flag(reply->request, NAME_MSGKEY_FORCE, FALSE); reply->subject("%s|%s|%d", oio_url_get(url, OIOURL_WHOLE), oio_url_get(url, OIOURL_HEXID), force); GError *err = meta1_backend_user_destroy(m1, url, force); if (NULL != err) reply->send_error(0, err); else reply->send_reply(CODE_FINAL_OK, "OK"); oio_url_clean (url); return TRUE; }
static gboolean meta1_dispatch_v2_PROPSET(struct gridd_reply_ctx_s *reply, struct meta1_backend_s *m1, gpointer ignored) { GError *err; gchar **strv = NULL; struct oio_url_s *url = metautils_message_extract_url (reply->request); gboolean flush = metautils_message_extract_flag(reply->request, NAME_MSGKEY_FLUSH, FALSE); reply->subject("%s|%s", oio_url_get(url, OIOURL_WHOLE), oio_url_get(url, OIOURL_HEXID)); (void) ignored; if (NULL != (err = metautils_message_extract_body_strv(reply->request, &strv))) reply->send_error(CODE_BAD_REQUEST, err); else if (NULL != (err = meta1_backend_set_container_properties(m1, url, strv, flush))) reply->send_error(0, err); else reply->send_reply(CODE_FINAL_OK, "OK"); if (strv) g_strfreev (strv); oio_url_clean (url); return TRUE; }