towards GET /purses/PID
This commit is contained in:
parent
c30c7cde4d
commit
e40a16aa8e
47
src/exchange/taler-exchange-httpd_purses_deposit.h
Normal file
47
src/exchange/taler-exchange-httpd_purses_deposit.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
This file is part of TALER
|
||||||
|
Copyright (C) 2022 Taler Systems SA
|
||||||
|
|
||||||
|
TALER is free software; you can redistribute it and/or modify it under the
|
||||||
|
terms of the GNU Affero General Public License as published by the Free Software
|
||||||
|
Foundation; either version 3, or (at your option) any later version.
|
||||||
|
|
||||||
|
TALER is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License along with
|
||||||
|
TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* @file taler-exchange-httpd_purses_deposit.h
|
||||||
|
* @brief Handle /purses/$PID/deposit requests
|
||||||
|
* @author Christian Grothoff
|
||||||
|
*/
|
||||||
|
#ifndef TALER_EXCHANGE_HTTPD_PURSES_DEPOSIT_H
|
||||||
|
#define TALER_EXCHANGE_HTTPD_PURSES_DEPOSIT_H
|
||||||
|
|
||||||
|
#include <gnunet/gnunet_util_lib.h>
|
||||||
|
#include <microhttpd.h>
|
||||||
|
#include "taler-exchange-httpd.h"
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle a "/purses/$PURSE_PUB/deposit" request. Parses the JSON, and, if
|
||||||
|
* successful, passes the JSON data to #deposit_transaction() to further check
|
||||||
|
* the details of the operation specified. If everything checks out, this
|
||||||
|
* will ultimately lead to the "purses deposit" being executed, or rejected.
|
||||||
|
*
|
||||||
|
* @param connection the MHD connection to handle
|
||||||
|
* @param purse_pub public key of the purse
|
||||||
|
* @param root uploaded JSON data
|
||||||
|
* @return MHD result code
|
||||||
|
*/
|
||||||
|
MHD_RESULT
|
||||||
|
TEH_handler_purses_deposit (
|
||||||
|
struct MHD_Connection *connection,
|
||||||
|
const struct TALER_PurseContractPublicKeyP *purse_pub,
|
||||||
|
const json_t *root);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
91
src/exchange/taler-exchange-httpd_purses_get.c
Normal file
91
src/exchange/taler-exchange-httpd_purses_get.c
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
/*
|
||||||
|
This file is part of TALER
|
||||||
|
Copyright (C) 2022 Taler Systems SA
|
||||||
|
|
||||||
|
TALER is free software; you can redistribute it and/or modify it under the
|
||||||
|
terms of the GNU Affero General Public License as published by the Free Software
|
||||||
|
Foundation; either version 3, or (at your option) any later version.
|
||||||
|
|
||||||
|
TALER is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Affero General Public License along with
|
||||||
|
TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* @file taler-exchange-httpd_purses_get.c
|
||||||
|
* @brief Handle GET /purses/$PID requests
|
||||||
|
* @author Christian Grothoff
|
||||||
|
*/
|
||||||
|
#include "platform.h"
|
||||||
|
#include <gnunet/gnunet_util_lib.h>
|
||||||
|
#include <jansson.h>
|
||||||
|
#include <microhttpd.h>
|
||||||
|
#include "taler_mhd_lib.h"
|
||||||
|
#include "taler-exchange-httpd_purses.h"
|
||||||
|
#include "taler-exchange-httpd_mhd.h"
|
||||||
|
#include "taler-exchange-httpd_responses.h"
|
||||||
|
|
||||||
|
// FIXME: add long-polling support!
|
||||||
|
|
||||||
|
MHD_RESULT
|
||||||
|
TEH_handler_pursess_get (struct TEH_RequestContext *rc,
|
||||||
|
const char *const args[1])
|
||||||
|
{
|
||||||
|
struct TALER_PurseContractPublicKeyP purse_pub;
|
||||||
|
enum GNUNET_DB_QueryStatus qs;
|
||||||
|
MHD_RESULT res;
|
||||||
|
struct GNUNET_TIME_Timestamp merge_timestamp = {0};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_STRINGS_string_to_data (args[0],
|
||||||
|
strlen (args[0]),
|
||||||
|
&purse_pub,
|
||||||
|
sizeof (purse_pub)))
|
||||||
|
{
|
||||||
|
GNUNET_break_op (0);
|
||||||
|
return TALER_MHD_reply_with_error (rc->connection,
|
||||||
|
MHD_HTTP_BAD_REQUEST,
|
||||||
|
TALER_EC_EXCHANGE_PURSES_INVALID_PURSE_PUB,
|
||||||
|
args[0]);
|
||||||
|
}
|
||||||
|
#if FIXME
|
||||||
|
qs = TEH_plugin->select_purse (TEH_plugin->cls,
|
||||||
|
&purse_pub,
|
||||||
|
&merge_timestamp,
|
||||||
|
...);
|
||||||
|
switch (qs)
|
||||||
|
{
|
||||||
|
case GNUNET_DB_STATUS_HARD_ERROR:
|
||||||
|
GNUNET_break (0);
|
||||||
|
return TALER_MHD_reply_with_error (rc->connection,
|
||||||
|
MHD_HTTP_INTERNAL_SERVER_ERROR,
|
||||||
|
TALER_EC_GENERIC_DB_FETCH_FAILED,
|
||||||
|
"select_purses");
|
||||||
|
case GNUNET_DB_STATUS_SOFT_ERROR:
|
||||||
|
GNUNET_break (0);
|
||||||
|
return TALER_MHD_reply_with_error (rc->connection,
|
||||||
|
MHD_HTTP_INTERNAL_SERVER_ERROR,
|
||||||
|
TALER_EC_GENERIC_DB_FETCH_FAILED,
|
||||||
|
"select_purses");
|
||||||
|
case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
|
||||||
|
return TALER_MHD_reply_with_error (rc->connection,
|
||||||
|
MHD_HTTP_NOT_FOUND,
|
||||||
|
TALER_EC_EXCHANGE_PURSESS_UNKNOWN,
|
||||||
|
NULL);
|
||||||
|
case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
|
||||||
|
break; /* handled below */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
res = TALER_MHD_REPLY_JSON_PACK (
|
||||||
|
rc->connection,
|
||||||
|
MHD_HTTP_OK,
|
||||||
|
GNUNET_JSON_pack_timestamp ("merge_timestamp",
|
||||||
|
&merge_timestamp));
|
||||||
|
GNUNET_free (epurses);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* end of taler-exchange-httpd_purses_get.c */
|
Loading…
Reference in New Issue
Block a user