コード例 #1
0
static int
_list_NORMAL(struct gridd_filter_ctx_s *ctx, struct gridd_reply_ctx_s *reply,
		struct list_params_s *lp)
{
	GError *e = NULL;
	struct meta2_backend_s *m2b = meta2_filter_ctx_get_backend(ctx);
	struct hc_url_s *url = meta2_filter_ctx_get_url(ctx);
	struct on_bean_ctx_s *obc = _on_bean_ctx_init(ctx, reply);

	if (hc_url_has(url, HCURL_SNAPSHOT)) {
		lp->snapshot_name = hc_url_get(url, HCURL_SNAPSHOT);
	} else if (hc_url_has(url, HCURL_VERSION)) {
		lp->snapshot_name = hc_url_get(url, HCURL_VERSION);
	}

	e = meta2_backend_list_aliases(m2b, url, lp, _get_cb, obc);
	if (NULL != e) {
		GRID_DEBUG("Fail to return alias for url: %s",
				hc_url_get(url, HCURL_WHOLE));
		_on_bean_ctx_clean(obc);
		meta2_filter_ctx_set_error(ctx, e);
		return FILTER_KO;
	}

	_on_bean_ctx_send_list(obc, TRUE);
	_on_bean_ctx_clean(obc);
	return FILTER_OK;
}
コード例 #2
0
		S3_RESPONSE_HEADER(M2_KEY_PREFIX, lp->params.s3.prefix);
		S3_RESPONSE_HEADER(M2_KEY_MARKER, lp->params.s3.marker);
		S3_RESPONSE_HEADER(M2_KEY_DELIMITER, lp->params.s3.delimiter);
		S3_RESPONSE_HEADER(M2_KEY_MAX_KEYS, (maxkeys_str) ? maxkeys_str : "1000");
		S3_RESPONSE_HEADER("TRUNCATED", truncated ? "true" : "false");
		S3_RESPONSE_HEADER("NEXT_MARKER", next_marker);

		_on_bean_ctx_send_list(obc, TRUE);
	}

	GRID_DEBUG("prefix = %s | marker = %s | delimiter = %s | max-keys = %"G_GINT64_FORMAT,
			lp->params.s3.prefix, lp->params.s3.marker, lp->params.s3.delimiter,
			lp->params.s3.maxkeys);

	e = meta2_backend_list_aliases(m2b, url, lp, s3_list_cb, NULL);
	if (NULL != e) {
		GRID_DEBUG("Fail to return alias for url: %s",
				hc_url_get(url, HCURL_WHOLE));
		_on_bean_ctx_clean(obc);
		meta2_filter_ctx_set_error(ctx, e);
		return FILTER_KO;
	}

	send_result();

	g_free(next_marker);

	g_slist_free(common_prefixes);

	return FILTER_OK;
コード例 #3
0
			if (DESCR(bean) == &descr_struct_ALIASES) {
				_bean_list_cb(&obc->l, bean);
				if (0 == --max)
					next_marker = g_strdup(ALIASES_get_alias(bean)->str);
			} else {
				_bean_list_cb(&obc->l, bean);
			}
		} else {
			if (DESCR(bean) == &descr_struct_ALIASES)
				truncated = TRUE;
			_bean_clean(bean);
		}
	}

	lp->maxkeys ++;
	e = meta2_backend_list_aliases(m2b, url, lp, headers, s3_list_cb, NULL,
			&properties);

	if (NULL != e) {
		GRID_DEBUG("Fail to return alias for url: %s", hc_url_get(url, HCURL_WHOLE));
		_on_bean_ctx_clean(obc);
		meta2_filter_ctx_set_error(ctx, e);
		if (properties) g_strfreev (properties);
		return FILTER_KO;
	}

	S3_RESPONSE_HEADER(NAME_MSGKEY_PREFIX, lp->prefix);
	S3_RESPONSE_HEADER(NAME_MSGKEY_MARKER, lp->marker_start);
	S3_RESPONSE_HEADER(NAME_MSGKEY_MARKER_END, lp->marker_end);
	S3_RESPONSE_HEADER(NAME_MSGKEY_TRUNCATED, truncated ? "true" : "false");
	S3_RESPONSE_HEADER(NAME_MSGKEY_NEXTMARKER, next_marker);