1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# This file is part of TALER
# (C) 2014, 2015, 2016 INRIA
#
# 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 <http://www.gnu.org/licenses/>
#
# @author Marcello Stanisci
"""
definitions of JSON schemas for validating data
"""
import validictory
from django.core.exceptions import ValidationError
auth_basic_schema = {
"type": "object",
"properties": {
"username": {"type": "string"},
"password": {"type": "string"}
}
}
wiredetails_schema = {
"type": "object",
"properties": {
"test": {
"type": "object",
"properties": {
"type": {"type": "string"},
"account_number": {"type": "integer"},
"bank_uri": {"type": "string"},
"name": {"type": "string"},
}
}
}
}
auth_schema = {
"type": "object",
"properties": {
"type": {"type": "string"},
"data": {"type": "object"}
}
}
history_schema = {
"type": "object",
"properties" : {
"auth": auth_schema,
"start": {"type": "integer", "required": False},
"delta": {"type": "integer", "required": False}
}
}
amount_schema = {
"type": "object",
"properties": {
"value": {"type": "integer"},
"fraction": {"type": "integer"},
"currency": {"type": "string"}
}
}
incoming_request_schema = {
"type": "object",
"properties": {
"amount": {"type": amount_schema},
"wtid": {"type": "string"},
"exchange_url": {"type": "string"},
"credit_account": {"type": "integer"},
"auth": auth_schema
}
}
def validate_amount(amount):
validictory.validate(amount, amount_schema)
def validate_history(request_data):
validictory.validate(request_data, history_schema)
def validate_wiredetails(wiredetails):
validictory.validate(wiredetails, wiredetails_schema)
def validate_incoming_request(incoming_request):
validictory.validate(incoming_request, incoming_request_schema)
def validate_auth_basic(auth_basic):
validictory.validate(auth_basic, auth_basic_schema)
|