static gboolean meta1_dispatch_v2_PROPGET(struct gridd_reply_ctx_s *reply, struct meta1_backend_s *m1, gpointer ignored) { GError *err; gchar **strv = NULL, **result = NULL; struct oio_url_s *url = metautils_message_extract_url (reply->request); 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_get_container_properties(m1, url, strv, &result))) reply->send_error(0, err); else { reply->add_body(marshall_stringv_and_clean(&result)); reply->send_reply(CODE_FINAL_OK, "OK"); } if (strv) g_strfreev (strv); if (result) g_strfreev (result); oio_url_clean (url); return TRUE; }
static gboolean meta1_dispatch_v2_PROPGET(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); 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 **keys = NULL; GError *err = STRV_decode_buffer(body, length, &keys); if (NULL != err) reply->send_error(CODE_BAD_REQUEST, err); else { gchar **result = NULL; err = meta1_backend_get_container_properties(m1, url, keys, &result); g_strfreev (keys); if (NULL != err) reply->send_error(0, err); else { reply->add_body(encode_and_clean(KV_encode_gba, result)); reply->send_reply(CODE_FINAL_OK, "OK"); } } oio_url_clean (url); return TRUE; }