merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit d17145ee46b69a42b34b7e13d5a0c8ad8045bf44
parent 3f382cba6a69363fd0bc872b582f7a68526a74eb
Author: Marcello Stanisci <marcello.stanisci@inria.fr>
Date:   Thu, 27 Apr 2017 18:28:27 +0200

reverting renamings

Diffstat:
Asrc/mitm/mitm.py | 76++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Dsrc/mitm/taler-merchant-mitm | 74--------------------------------------------------------------------------
2 files changed, 76 insertions(+), 74 deletions(-)

diff --git a/src/mitm/mitm.py b/src/mitm/mitm.py @@ -0,0 +1,76 @@ +#This file is part of TALER +#Copyright (C) 2014, 2015, 2016, 2017 GNUnet e.V. and INRIA +# +#TALER is free software; you can redistribute it and/or modify it under the +#terms of the GNU Lesser General Public License as published by the Free Software +#Foundation; either version 2.1, 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 Lesser General Public License for more details. +# +#You should have received a copy of the GNU Lesser General Public License along with +#TALER; see the file COPYING.LGPL. If not, see <http://www.gnu.org/licenses/> + +# @author Marcello Stanisci +# @brief Error generator for responses coming from the exchange + +from flask import (request, + Flask, + jsonify) +import requests +from urllib.parse import (urljoin, + urlencode, + urlparse, + urlunparse) +from pytaler import amount +import base64 +import os +import logging +import json +from random import randint +from datetime import datetime + +# FIXME + +# 1) make this as a standalone executable, like taler-merchant-mitm. +# 2) accept the exchange url as a cli option. + +app = Flask(__name__) +app.secret_key = base64.b64encode(os.urandom(64)).decode('utf-8') +logger = logging.getLogger(__name__) +exchange_url = os.environ.get("TALER_EXCHANGE_URL") +assert(None != exchange_url) + +# The functions taking 'resp' as parameter are responsible for +# modifying the data to return. + +def track_transaction(resp): + return resp + +def track_transfer(resp): + return resp + +@app.route('/', defaults={'path': ''}) +@app.route('/<path:path>', methods=["GET", "POST"]) +def all(path): + body = request.get_json() + url = list(urlparse(request.url)) + xurl = urlparse(exchange_url) + url[0] = xurl[0] + url[1] = xurl[1] + url = urlunparse(url) + if "POST" == request.method: + r = requests.post(urljoin(url, path), json=body) + else: + r = requests.get(urljoin(url, path), json=body) + resp = dict() + if "application/json" == r.headers["Content-Type"]: + resp = r.json() + dispatcher = { + "track_transaction": track_transaction, + "track_transfer": track_transfer + } + func = dispatcher.get(request.headers.get("X-Taler-Mitm"), + lambda x: x) + return jsonify(func(resp)), r.status_code diff --git a/src/mitm/taler-merchant-mitm b/src/mitm/taler-merchant-mitm @@ -1,74 +0,0 @@ -#This file is part of TALER -#Copyright (C) 2014, 2015, 2016, 2017 GNUnet e.V. and INRIA -# -#TALER is free software; you can redistribute it and/or modify it under the -#terms of the GNU Lesser General Public License as published by the Free Software -#Foundation; either version 2.1, 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 Lesser General Public License for more details. -# -#You should have received a copy of the GNU Lesser General Public License along with -#TALER; see the file COPYING.LGPL. If not, see <http://www.gnu.org/licenses/> - -# @author Marcello Stanisci -# @brief Error generator for responses coming from the exchange - -from flask import (request, - Flask, - jsonify) -import requests -from urllib.parse import (urljoin, - urlencode, - urlparse, - urlunparse) -from pytaler import amount -import base64 -import os -import logging -import json -from random import randint -from datetime import datetime - -# FIXME make this as a standalone executable, like taler-merchant-mitm. -# accept the exchange url as a cli option. - -app = Flask(__name__) -app.secret_key = base64.b64encode(os.urandom(64)).decode('utf-8') -logger = logging.getLogger(__name__) -exchange_url = os.environ.get("TALER_EXCHANGE_URL") -assert(None != exchange_url) - -# The functions taking 'resp' as parameter are responsible for -# modifying the data to return. - -def track_transaction(resp): - return resp - -def track_transfer(resp): - return resp - -@app.route('/', defaults={'path': ''}) -@app.route('/<path:path>', methods=["GET", "POST"]) -def all(path): - body = request.get_json() - url = list(urlparse(request.url)) - xurl = urlparse(exchange_url) - url[0] = xurl[0] - url[1] = xurl[1] - url = urlunparse(url) - if "POST" == request.method: - r = requests.post(urljoin(url, path), json=body) - else: - r = requests.get(urljoin(url, path), json=body) - resp = dict() - if "application/json" == r.headers["Content-Type"]: - resp = r.json() - dispatcher = { - "track_transaction": track_transaction, - "track_transfer": track_transfer - } - func = dispatcher.get(request.headers.get("X-Taler-Mitm"), - lambda x: x) - return jsonify(func(resp)), r.status_code