/* This file is part of TALER (C) 2019-2021 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 General Public License for more details. You should have received a copy of the GNU General Public License along with TALER; see the file COPYING. If not, see */ /** * @file taler-merchant-httpd_private-get-instances-ID.c * @brief implement GET /instances/$ID * @author Christian Grothoff */ #include "platform.h" #include "taler-merchant-httpd_private-get-instances-ID.h" #include /** * Handle a GET "/instances/$ID" request. * * @param mi instance to return information about * @param connection the MHD connection to handle * @return MHD result code */ static MHD_RESULT get_instances_ID (struct TMH_MerchantInstance *mi, struct MHD_Connection *connection) { json_t *ja; json_t *auth; GNUNET_assert (NULL != mi); ja = json_array (); GNUNET_assert (NULL != ja); for (struct TMH_WireMethod *wm = mi->wm_head; NULL != wm; wm = wm->next) { GNUNET_assert ( 0 == json_array_append_new ( ja, GNUNET_JSON_PACK ( GNUNET_JSON_pack_string ( "payto_uri", json_string_value (json_object_get (wm->j_wire, "payto_uri"))), GNUNET_JSON_pack_data_auto ("h_wire", &wm->h_wire), GNUNET_JSON_pack_string ( "salt", json_string_value (json_object_get (wm->j_wire, "salt"))), GNUNET_JSON_pack_bool ("active", wm->active)))); } auth = GNUNET_JSON_PACK ( GNUNET_JSON_pack_string ("method", GNUNET_is_zero (mi->auth.auth_hash.bits) ? "external" : "token")); return TALER_MHD_REPLY_JSON_PACK ( connection, MHD_HTTP_OK, GNUNET_JSON_pack_array_steal ("accounts", ja), GNUNET_JSON_pack_string ("name", mi->settings.name), GNUNET_JSON_pack_data_auto ("merchant_pub", &mi->merchant_pub), GNUNET_JSON_pack_object_incref ("address", mi->settings.address), GNUNET_JSON_pack_object_incref ("jurisdiction", mi->settings.jurisdiction), TALER_JSON_pack_amount ("default_max_wire_fee", &mi->settings.default_max_wire_fee), TALER_JSON_pack_amount ("default_max_deposit_fee", &mi->settings.default_max_deposit_fee), GNUNET_JSON_pack_uint64 ("default_wire_fee_amortization", mi->settings.default_wire_fee_amortization), GNUNET_JSON_pack_time_rel ("default_wire_transfer_delay", mi->settings.default_wire_transfer_delay), GNUNET_JSON_pack_time_rel ("default_pay_delay", mi->settings.default_pay_delay), GNUNET_JSON_pack_object_steal ("auth", auth)); } MHD_RESULT TMH_private_get_instances_ID (const struct TMH_RequestHandler *rh, struct MHD_Connection *connection, struct TMH_HandlerContext *hc) { struct TMH_MerchantInstance *mi = hc->instance; return get_instances_ID (mi, connection); } MHD_RESULT TMH_private_get_instances_default_ID (const struct TMH_RequestHandler *rh, struct MHD_Connection *connection, struct TMH_HandlerContext *hc) { struct TMH_MerchantInstance *mi; mi = TMH_lookup_instance (hc->infix); if ( (NULL == mi) || (mi->deleted) ) { return TALER_MHD_reply_with_error (connection, MHD_HTTP_NOT_FOUND, TALER_EC_MERCHANT_GENERIC_INSTANCE_UNKNOWN, hc->infix); } return get_instances_ID (mi, connection); } /* end of taler-merchant-httpd_private-get-instances-ID.c */