IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an email to s dot adaszewski at gmail dot com. User accounts are meant only to report issues and/or generate pull requests. This is a purpose-specific Git hosting for ADARED projects. Thank you for your understanding!
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

54 rindas
1.6KB

  1. const requestOrdering = {};
  2. function makeArvadosRequest(arvHost, arvToken, endpoint, params={}) {
  3. const defaultParams = {
  4. 'method': 'GET',
  5. 'data': null,
  6. 'contentType': 'application/json;charset=utf-8',
  7. 'responseType': 'json',
  8. 'useSsl': true,
  9. 'requireToken': true,
  10. 'orderStream': null
  11. };
  12. Object.keys(defaultParams).map(k => (params[k] =
  13. (k in params ? params[k] : defaultParams[k])));
  14. let { method, data, contentType, responseType, useSsl, requireToken, orderStream } = params;
  15. let orderId;
  16. if (orderStream) {
  17. if (!(orderStream in requestOrdering))
  18. requestOrdering[orderStream] = { 'counter': 0, 'started': [], 'completed': [] };
  19. requestOrdering[orderStream].counter += 1;
  20. orderId = requestOrdering[orderStream].counter;
  21. requestOrdering[orderStream].started.push(orderId);
  22. }
  23. if (!(arvHost && (arvToken || !requireToken)))
  24. return new Promise((accept, reject) => reject());
  25. let xhr = new XMLHttpRequest();
  26. xhr.open(method, (useSsl ? 'https://' : 'http://') + arvHost + endpoint);
  27. if (arvToken)
  28. xhr.setRequestHeader('Authorization', 'OAuth2 ' + arvToken);
  29. if (data !== null)
  30. xhr.setRequestHeader('Content-Type', contentType);
  31. xhr.responseType = responseType;
  32. let res = new Promise((accept, reject) => {
  33. xhr.onreadystatechange = () => {
  34. if (xhr.readyState !== 4)
  35. return;
  36. if (xhr.status !== 200)
  37. reject(xhr);
  38. else
  39. accept(xhr);
  40. };
  41. xhr.send(data);
  42. });
  43. return res;
  44. }
  45. export default makeArvadosRequest;