method can be static

This commit is contained in:
Christian Grothoff 2020-03-16 16:20:35 +01:00
parent 2e5dc6bc72
commit 211ff7f0a2
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 96 additions and 106 deletions

View File

@ -43,6 +43,101 @@ static json_t *wire_accounts_array;
static json_t *wire_fee_object;
/**
* Convert fee structure to JSON result to be returned
* as part of a /wire response.
*
* @param af fee structure to convert
* @return NULL on error, otherwise json data structure for /wire.
*/
static json_t *
fees_to_json (struct TALER_EXCHANGEDB_AggregateFees *af)
{
json_t *a;
a = json_array ();
if (NULL == a)
{
GNUNET_break (0); /* out of memory? */
return NULL;
}
while (NULL != af)
{
if ( (GNUNET_NO == GNUNET_TIME_round_abs (&af->start_date)) ||
(GNUNET_NO == GNUNET_TIME_round_abs (&af->end_date)) )
{
GNUNET_break (0); /* bad timestamps, should not happen */
json_decref (a);
return NULL;
}
if (0 !=
json_array_append_new (a,
json_pack ("{s:o, s:o, s:o, s:o, s:o}",
"wire_fee", TALER_JSON_from_amount (
&af->wire_fee),
"closing_fee",
TALER_JSON_from_amount (
&af->closing_fee),
"start_date",
GNUNET_JSON_from_time_abs (
af->start_date),
"end_date",
GNUNET_JSON_from_time_abs (
af->end_date),
"sig", GNUNET_JSON_from_data_auto (
&af->master_sig))))
{
GNUNET_break (0); /* out of memory? */
json_decref (a);
return NULL;
}
af = af->next;
}
return a;
}
/**
* Obtain fee structure for @a method wire transfers.
*
* @param method method to load fees for
* @return JSON object (to be freed by caller) with fee structure
*/
static json_t *
get_fees (const char *method)
{
struct TALER_EXCHANGEDB_AggregateFees *af;
struct GNUNET_TIME_Absolute now;
af = TALER_EXCHANGEDB_fees_read (TEH_cfg,
method);
now = GNUNET_TIME_absolute_get ();
while ( (NULL != af) &&
(af->end_date.abs_value_us < now.abs_value_us) )
{
struct TALER_EXCHANGEDB_AggregateFees *n = af->next;
GNUNET_free (af);
af = n;
}
if (NULL == af)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Failed to find current wire transfer fees for `%s' at time %s\n",
method,
GNUNET_STRINGS_absolute_time_to_string (now));
return NULL;
}
{
json_t *j;
j = fees_to_json (af);
TALER_EXCHANGEDB_fees_free (af);
return j;
}
}
/**
* Load wire fees for @a method.
*
@ -57,7 +152,7 @@ load_fee (const char *method)
if (NULL != json_object_get (wire_fee_object,
method))
return GNUNET_OK; /* already have them */
fees = TEH_WIRE_get_fees (method);
fees = get_fees (method);
if (NULL == fees)
return GNUNET_SYSERR;
/* Add fees to #wire_fee_object */
@ -188,101 +283,6 @@ load_account (void *cls,
}
/**
* Convert fee structure to JSON result to be returned
* as part of a /wire response.
*
* @param af fee structure to convert
* @return NULL on error, otherwise json data structure for /wire.
*/
static json_t *
fees_to_json (struct TALER_EXCHANGEDB_AggregateFees *af)
{
json_t *a;
a = json_array ();
if (NULL == a)
{
GNUNET_break (0); /* out of memory? */
return NULL;
}
while (NULL != af)
{
if ( (GNUNET_NO == GNUNET_TIME_round_abs (&af->start_date)) ||
(GNUNET_NO == GNUNET_TIME_round_abs (&af->end_date)) )
{
GNUNET_break (0); /* bad timestamps, should not happen */
json_decref (a);
return NULL;
}
if (0 !=
json_array_append_new (a,
json_pack ("{s:o, s:o, s:o, s:o, s:o}",
"wire_fee", TALER_JSON_from_amount (
&af->wire_fee),
"closing_fee",
TALER_JSON_from_amount (
&af->closing_fee),
"start_date",
GNUNET_JSON_from_time_abs (
af->start_date),
"end_date",
GNUNET_JSON_from_time_abs (
af->end_date),
"sig", GNUNET_JSON_from_data_auto (
&af->master_sig))))
{
GNUNET_break (0); /* out of memory? */
json_decref (a);
return NULL;
}
af = af->next;
}
return a;
}
/**
* Obtain fee structure for @a method wire transfers.
*
* @param method method to load fees for
* @return JSON object (to be freed by caller) with fee structure
*/
json_t *
TEH_WIRE_get_fees (const char *method)
{
struct TALER_EXCHANGEDB_AggregateFees *af;
struct GNUNET_TIME_Absolute now;
af = TALER_EXCHANGEDB_fees_read (TEH_cfg,
method);
now = GNUNET_TIME_absolute_get ();
while ( (NULL != af) &&
(af->end_date.abs_value_us < now.abs_value_us) )
{
struct TALER_EXCHANGEDB_AggregateFees *n = af->next;
GNUNET_free (af);
af = n;
}
if (NULL == af)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Failed to find current wire transfer fees for `%s' at time %s\n",
method,
GNUNET_STRINGS_absolute_time_to_string (now));
return NULL;
}
{
json_t *j;
j = fees_to_json (af);
TALER_EXCHANGEDB_fees_free (af);
return j;
}
}
/**
* Handle a "/wire" request.
*

View File

@ -44,16 +44,6 @@ void
TEH_WIRE_done (void);
/**
* Obtain fee structure for @a wire_plugin_name wire transfers.
*
* @param method method to load fees for
* @return JSON object (to be freed by caller) with fee structure
*/
json_t *
TEH_WIRE_get_fees (const char *method);
/**
* Handle a "/wire" request.
*