gnunet-svn
[Top][All Lists]
Advanced

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

[taler-donau] branch master updated: [donau] some changes on issue recei


From: gnunet
Subject: [taler-donau] branch master updated: [donau] some changes on issue receipt
Date: Tue, 19 Mar 2024 21:08:12 +0100

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

lukas-matyja pushed a commit to branch master
in repository donau.

The following commit(s) were added to refs/heads/master by this push:
     new b31b93e  [donau] some changes on issue receipt
b31b93e is described below

commit b31b93eda7e62079894c9d65758068fe3d6a8c32
Author: Matyja Lukas Adam <lukas.matyja@students.bfh.ch>
AuthorDate: Tue Mar 19 21:08:29 2024 +0100

    [donau] some changes on issue receipt
---
 src/donau/donau-httpd_batch-issue.h      |  2 +-
 src/donau/donau-httpd_issue-receipts.h   | 41 --------------------------------
 src/donau/donau-httpd_post-batch-issue.c | 38 ++++++++++++++++++++++-------
 3 files changed, 31 insertions(+), 50 deletions(-)

diff --git a/src/donau/donau-httpd_batch-issue.h 
b/src/donau/donau-httpd_batch-issue.h
index 053d4bd..c919475 100644
--- a/src/donau/donau-httpd_batch-issue.h
+++ b/src/donau/donau-httpd_batch-issue.h
@@ -36,6 +36,6 @@ MHD_RESULT
 DH_handler_issue_receipts_post (
   struct DH_RequestContext *rc,
   const json_t *root,
-  const char *const args[]);
+  const char *const args[1]);
 
 #endif
diff --git a/src/donau/donau-httpd_issue-receipts.h 
b/src/donau/donau-httpd_issue-receipts.h
deleted file mode 100644
index 053d4bd..0000000
--- a/src/donau/donau-httpd_issue-receipts.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-  This file is part of TALER
-  Copyright (C) 2024 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 donau-httpd_batch-issue.h
- * @brief Handle /batch-issue requests
- * @author Lukas Matyja
- */
-#ifndef DONAU_HTTPD_ISSUE_RECEIPTS_H
-#define DONAU_HTTPD_ISSUE_RECEIPTS_H
-
-#include <microhttpd.h>
-#include "donau-httpd.h"
-
-
-/**
- * Handle a POST "/batch-issue" request.
- *
- * @param connection the MHD connection to handle
- * @param root uploaded JSON data
- * @return MHD result code
- */
-MHD_RESULT
-DH_handler_issue_receipts_post (
-  struct DH_RequestContext *rc,
-  const json_t *root,
-  const char *const args[]);
-
-#endif
diff --git a/src/donau/donau-httpd_post-batch-issue.c 
b/src/donau/donau-httpd_post-batch-issue.c
index 336237a..fa709c6 100644
--- a/src/donau/donau-httpd_post-batch-issue.c
+++ b/src/donau/donau-httpd_post-batch-issue.c
@@ -204,13 +204,13 @@ DH_handler_issue_receipts_post (struct DH_RequestContext 
*rc,
   }
 
   // Get charity pub
-  struct DONAUDB_CharityMetaData meta;
-  enum GNUNET_DB_QueryStatus qs;
+  struct DONAUDB_CharityMetaData charity_meta;
+  enum GNUNET_DB_QueryStatus qs_charity;
 
-  qs = DH_plugin->lookup_charity (DH_plugin->cls,
+  qs_charity = DH_plugin->lookup_charity (DH_plugin->cls,
                                                                        
(uint64_t) charity_id,
-                                                                       &meta);
-  switch (qs)
+                                                                       
&charity_meta);
+  switch (qs_charity)
   {
   case GNUNET_DB_STATUS_HARD_ERROR:
   case GNUNET_DB_STATUS_SOFT_ERROR:
@@ -233,7 +233,7 @@ DH_handler_issue_receipts_post (struct DH_RequestContext 
*rc,
   /* verify charity signature */
   if (GNUNET_OK !=
                  DONAU_charity_budi_key_pair_verify(num_bkp, &irc.bkp,
-                                                                               
          &meta.charity_pub,
+                                                                               
          &charity_meta.charity_pub,
                                                                                
          &irc.charity_sig))
   {
        GNUNET_break_op (0);
@@ -245,13 +245,35 @@ DH_handler_issue_receipts_post (struct DH_RequestContext 
*rc,
   }
 
   /* request already made? -> idempotent */
+  enum GNUNET_DB_QueryStatus qs_check_receipts;
+  struct DONAUDB_IssuedReceiptsMetaData check_receipts_meta;
+  struct DONAU_BudiKeyPairsHashP bkp_hash;
+  GNUNET_CRYPTO_hash (irc.bkp,
+                      sizeof (irc.bkp[0]) * num_bkp,
+                      &bkp_hash.hash);
 
-
+  qs_check_receipts = DH_plugin->lookup_issued_receipts (DH_plugin->cls,
+                                                                       
bkp_hash,
+                                                                       
&check_receipts_meta);
+  switch (qs_check_receipts)
+  {
+  case GNUNET_DB_STATUS_HARD_ERROR:
+  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,
+                                                                          
NULL);
+  case GNUNET_DB_STATUS_SUCCESS_NO_RESULTS:
+       break; // it's the first request from the charity, we can proceed
+  case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
+         // A request was already made. We do not change the annual limit
+       break;
+  }
   /* check annual limit and change it -> Rollback if we could not save the 
request*/
   /* save Request (charity signature, charity id, amount, hash over bkps) and 
make it idempotent*/
   /* sign budis and send the signatures back */
 
-
 //  {
 //    MHD_RESULT mhd_ret;
 //

-- 
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]