gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-exchange] branch master updated: towards GET /purses/PID


From: gnunet
Subject: [taler-exchange] branch master updated: towards GET /purses/PID
Date: Fri, 22 Apr 2022 23:48:18 +0200

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new e40a16aa towards GET /purses/PID
e40a16aa is described below

commit e40a16aa8ea1b5f7257b0bf04d7413c2ad77d3d3
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Fri Apr 22 23:48:15 2022 +0200

    towards GET /purses/PID
---
 src/exchange/taler-exchange-httpd_purses_deposit.h | 47 +++++++++++
 src/exchange/taler-exchange-httpd_purses_get.c     | 91 ++++++++++++++++++++++
 2 files changed, 138 insertions(+)

diff --git a/src/exchange/taler-exchange-httpd_purses_deposit.h 
b/src/exchange/taler-exchange-httpd_purses_deposit.h
new file mode 100644
index 00000000..fa587e97
--- /dev/null
+++ b/src/exchange/taler-exchange-httpd_purses_deposit.h
@@ -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
diff --git a/src/exchange/taler-exchange-httpd_purses_get.c 
b/src/exchange/taler-exchange-httpd_purses_get.c
new file mode 100644
index 00000000..799eeccb
--- /dev/null
+++ b/src/exchange/taler-exchange-httpd_purses_get.c
@@ -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 */

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]