summaryrefslogtreecommitdiff
path: root/src/lib/merchant_api_get_orders.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-06-14 15:17:11 +0200
committerChristian Grothoff <christian@grothoff.org>2020-06-14 15:17:11 +0200
commit458d1ac531f52e7802e054bfd151631af4d9d6e0 (patch)
treeda08479965817d153994a5aad662879e63efa62d /src/lib/merchant_api_get_orders.c
parent573a2270a09266199ac0062b18b2aacab13a8c59 (diff)
downloadmerchant-458d1ac531f52e7802e054bfd151631af4d9d6e0.tar.gz
merchant-458d1ac531f52e7802e054bfd151631af4d9d6e0.tar.bz2
merchant-458d1ac531f52e7802e054bfd151631af4d9d6e0.zip
clean up logic: use new EXCHANGE_YNA enum, avoid crazy macro construction to build URLs, use full power of TALER_url_join() instead
Diffstat (limited to 'src/lib/merchant_api_get_orders.c')
-rw-r--r--src/lib/merchant_api_get_orders.c178
1 files changed, 62 insertions, 116 deletions
diff --git a/src/lib/merchant_api_get_orders.c b/src/lib/merchant_api_get_orders.c
index 1b65b995..9d1ac3e7 100644
--- a/src/lib/merchant_api_get_orders.c
+++ b/src/lib/merchant_api_get_orders.c
@@ -216,9 +216,9 @@ TALER_MERCHANT_orders_get (
{
return TALER_MERCHANT_orders_get2 (ctx,
backend_url,
- TALER_MERCHANT_YNA_ALL,
- TALER_MERCHANT_YNA_ALL,
- TALER_MERCHANT_YNA_ALL,
+ TALER_EXCHANGE_YNA_ALL,
+ TALER_EXCHANGE_YNA_ALL,
+ TALER_EXCHANGE_YNA_ALL,
GNUNET_TIME_UNIT_FOREVER_ABS,
UINT64_MAX,
-20, /* default is most recent 20 entries */
@@ -250,9 +250,9 @@ struct TALER_MERCHANT_OrdersGetHandle *
TALER_MERCHANT_orders_get2 (
struct GNUNET_CURL_Context *ctx,
const char *backend_url,
- enum TALER_MERCHANT_YesNoAll paid,
- enum TALER_MERCHANT_YesNoAll refunded,
- enum TALER_MERCHANT_YesNoAll wired,
+ enum TALER_EXCHANGE_YesNoAll paid,
+ enum TALER_EXCHANGE_YesNoAll refunded,
+ enum TALER_EXCHANGE_YesNoAll wired,
struct GNUNET_TIME_Absolute date,
uint64_t start_row,
int64_t delta,
@@ -278,123 +278,69 @@ TALER_MERCHANT_orders_get2 (
/* build ogh->url with the various optional arguments */
{
- struct GNUNET_Buffer buf = { 0 };
- bool first = true;
- /**
- * Macro to append @a a and @a b to @a buf, using
- * the right separators between key (@a a) and
- * value (@a b). Uses "first" to decide between
- * using "?" and "&" as the separator.
- *
- * @param a a key
- * @param b a value
- */
-#define APPEND(a,b) \
- do { \
- if (first) \
- GNUNET_buffer_write_str (&buf, \
- "?"); \
- else \
- GNUNET_buffer_write_str (&buf, \
- "&"); \
- first = false; \
- GNUNET_buffer_write_str (&buf, (a)); \
- GNUNET_buffer_write_str (&buf, "="); \
- GNUNET_buffer_write_str (&buf, (b)); \
- } while (0)
-
- {
- char *url;
-
- url = TALER_url_join (backend_url,
- "private/orders",
- NULL);
- if (NULL == url)
- goto finished;
- GNUNET_buffer_write_str (&buf,
- url);
- GNUNET_free (url);
- }
- if (TALER_MERCHANT_YNA_ALL != paid)
- APPEND ("paid",
- (TALER_MERCHANT_YNA_YES == paid) ? "yes" : "no");
- if (TALER_MERCHANT_YNA_ALL != refunded)
- APPEND ("refunded",
- (TALER_MERCHANT_YNA_YES == refunded) ? "yes" : "no");
- if (TALER_MERCHANT_YNA_ALL != wired)
- APPEND ("wired",
- (TALER_MERCHANT_YNA_YES == wired) ? "yes" : "no");
+ const char *dstr;
+ bool have_date;
+ bool have_srow;
+ char cbuf[30];
+ char dbuf[30];
+ char tbuf[30];
+
+ GNUNET_snprintf (tbuf,
+ sizeof (tbuf),
+ "%llu",
+ (unsigned long long) timeout_ms);
+ GNUNET_snprintf (dbuf,
+ sizeof (dbuf),
+ "%lld",
+ (long long) delta);
+ GNUNET_snprintf (cbuf,
+ sizeof (cbuf),
+ "%llu",
+ (unsigned long long) start_row);
+ dstr = GNUNET_STRINGS_absolute_time_to_string (date);
if (delta > 0)
{
- if (0 != date.abs_value_us)
- {
- const char *str;
-
- str = GNUNET_STRINGS_absolute_time_to_string (date);
- APPEND ("date",
- str);
- }
- if (0 != start_row)
- {
- char cbuf[30];
-
- GNUNET_snprintf (cbuf,
- sizeof (cbuf),
- "%llu",
- (unsigned long long) start_row);
- APPEND ("start",
- cbuf);
- }
+ have_date = (0 != date.abs_value_us);
+ have_srow = (0 != start_row);
}
else
{
- if (GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us != date.abs_value_us)
- {
- const char *str;
-
- str = GNUNET_STRINGS_absolute_time_to_string (date);
- APPEND ("date",
- str);
- }
- if (UINT64_MAX != start_row)
- {
- char cbuf[30];
-
- GNUNET_snprintf (cbuf,
- sizeof (cbuf),
- "%llu",
- (unsigned long long) start_row);
- APPEND ("start",
- cbuf);
- }
+ have_date = (GNUNET_TIME_UNIT_FOREVER_ABS.abs_value_us !=
+ date.abs_value_us);
+ have_srow = (UINT64_MAX != start_row);
}
- if (-20 != delta)
- {
- char cbuf[30];
-
- GNUNET_snprintf (cbuf,
- sizeof (cbuf),
- "%lld",
- (long long) delta);
- APPEND ("delta",
- cbuf);
- }
- if (0 != timeout_ms)
- {
- char cbuf[30];
-
- GNUNET_snprintf (cbuf,
- sizeof (cbuf),
- "%llu",
- (unsigned long long) timeout_ms);
- APPEND ("timeout_ms",
- cbuf);
- }
- ogh->url = GNUNET_buffer_reap_str (&buf);
-#undef APPEND
+ ogh->url = TALER_url_join (backend_url,
+ "private/orders",
+ "paid",
+ (TALER_EXCHANGE_YNA_ALL != paid)
+ ? TALER_yna_to_string (paid)
+ : NULL,
+ "refunded",
+ (TALER_EXCHANGE_YNA_ALL != refunded)
+ ? TALER_yna_to_string (refunded)
+ : NULL,
+ "wired",
+ (TALER_EXCHANGE_YNA_ALL != wired)
+ ? TALER_yna_to_string (wired)
+ : NULL,
+ "date",
+ (have_date)
+ ? dstr
+ : NULL,
+ "start",
+ (have_srow)
+ ? cbuf
+ : NULL,
+ "delta",
+ (-20 != delta)
+ ? dbuf
+ : NULL,
+ "timeout_ms",
+ (0 != timeout_ms)
+ ? tbuf
+ : NULL,
+ NULL);
}
-
-finished:
if (NULL == ogh->url)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,