]>
git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Front.git/blob - cmd/web/js/api.js
b626c5f704e7a33a55f9dfa73997d9205f510d70
3 import App
from './app.js';
7 Api
.API_HOST
= process
.env
.API_HOST
;
8 Api
.API_PORT
= process
.env
.API_PORT
;
10 if (process
.env
.API_HTTPS
=== 'true') {
11 Api
.API_ROOT
= 'https://';
13 Api
.API_ROOT
= 'http://';
16 Api
.API_ROOT
+= Api
.API_HOST
;
17 if (Api
.API_PORT
!== '80') {
18 Api
.API_ROOT
+= ':' + Api
.API_PORT
;
21 Api
.API_ROOT
+= '/api';
28 {'name': 'email', 'mandatory': true, 'inquery': true},
29 {'name': 'password', 'mandatory': true, 'inquery': true}
31 'buildUrl': function() {
39 {'name': 'email', 'mandatory': true, 'inquery': true},
40 {'name': 'password', 'mandatory': true, 'inquery': true}
42 'buildUrl': function() {
50 {'name': 'email', 'mandatory': true, 'inquery': true},
52 'buildUrl': function() {
53 return '/passwordreset';
60 {'name': 'token', 'mandatory': true, 'inquery': true},
61 {'name': 'password', 'mandatory': true, 'inquery': true},
63 'buildUrl': function() {
64 return '/changepassword';
71 {'name': 'token', 'mandatory': true, 'inquery': true},
73 'buildUrl': function() {
74 return '/confirmemail';
81 {'name': 'name', 'mandatory': true, 'inquery': false},
83 'buildUrl': function(params
) {
84 return '/market/' + params
.name
;
87 'MARKET_TEST_CREDENTIALS': {
91 {'name': 'name', 'mandatory': true, 'inquery': false},
93 'buildUrl': function(params
) {
94 return '/market/' + params
.name
+ '/test-credentials';
97 'MARKET_GET_PORTFOLIO': {
101 {'name': 'name', 'mandatory': true, 'inquery': false},
103 'buildUrl': function(params
) {
104 return '/market/' + params
.name
+ '/portfolio';
111 {'name': 'name', 'mandatory': true, 'inquery': false},
112 {'name': 'key', 'mandatory': true, 'inquery': true},
113 {'name': 'secret', 'mandatory': true, 'inquery': true},
115 'buildUrl': function(params
) {
116 return '/market/' + params
.name
+ '/update';
123 'buildUrl': function(params
) {
124 return '/user/account';
131 'buildUrl': function() {
132 return '/otp/enroll';
139 {'name': 'pass', 'mandatory': true, 'inquery': true},
141 'buildUrl': function() {
142 return '/otp/validate';
145 'ADMIN_PORTFOLIOS': {
149 'buildUrl': function() {
150 return '/admin/portfolios';
156 Api
.BuildRequest = function(endpointId
, params
) {
157 var endpoint
= ApiEndpoints
[endpointId
];
161 var jwt
= App
.getUserToken();
163 if (endpoint
=== undefined) {
164 return {'err': 'cannot find endpoint ' + endpointId
};
167 if (endpoint
.auth
=== true && (jwt
=== undefined || jwt
=== null)) {
168 return {'err': 'this endpoint needs auth'};
171 if (jwt
!== undefined && jwt
!== null) {
172 headers
.Authorization
= 'Bearer ' + jwt
;
175 for (var i
= 0; i
< endpoint
.parameters
.length
; i
++) {
176 var parameter
= endpoint
.parameters
[i
];
177 if (parameter
.mandatory
=== true && params
[parameter
.name
] === undefined) {
178 return {'err': 'parameter \'' + parameter
.name
+ '\' is mandatory'};
181 if (parameter
.inquery
=== true) {
182 query
[parameter
.name
] = params
[parameter
.name
];
186 url
= endpoint
.buildUrl(params
);
188 return {'err': null, 'url': Api
.API_ROOT
+ url
, 'headers': headers
, 'params': query
, 'type': endpoint
.type
};
191 Api
.Call = function(endpointId
, params
, fn
) {
192 var request
= Api
.BuildRequest(endpointId
, params
);
194 if (request
.err
!== null) {
195 console
.error('Api BuildRequest error', request
.err
);
196 fn({'err': request
.err
}, -1, {});
200 return Api
.DoRequest(request
.type
, request
.url
, request
.params
, request
.headers
, fn
);
203 Api
.DoRequest = function(type
, url
, params
, headers
, callback
) {
209 error: function(xhr
, status
, err
) {
210 if (status
=== 'abort') {
214 var apiStatus
= null;
215 var apiResponse
= null;
217 if (xhr
.responseJSON
) {
218 apiStatus
= xhr
.responseJSON
.status
;
219 apiResponse
= xhr
.responseJSON
.response
;
220 apiCode
= xhr
.responseJSON
.code
;
223 if (xhr
.status
=== 401 || xhr
.status
=== 403) {
224 if (App
.onUserNotAuthorized(xhr
.status
, apiCode
) === false) {
229 callback({'url': url
, 'err': err
, 'status': status
, 'code': apiCode
, 'xhr': xhr
}, apiStatus
, apiResponse
);
231 success: function(data
) {
233 if (data
.status
!== 'ok') {
234 err
= {'url': url
, 'status': status
};
236 callback(err
, data
.status
, data
.response
);