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!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.3KB

  1. //
  2. // Copyright (C) Stanislaw Adaszewski, 2020
  3. // Contact: s.adaszewski@gmail.com
  4. // Website: https://adared.ch/wba
  5. // License: GNU Affero General Public License, Version 3
  6. //
  7. import arvadosTypeName from 'arvados-type-name';
  8. import makeArvadosRequest from 'make-arvados-request';
  9. function wbFetchObjects(arvHost, arvToken, uuids) {
  10. const unique = {};
  11. uuids.map(u => (unique[u] = true));
  12. uuids = {};
  13. Object.keys(unique).map(u => {
  14. let typeName = arvadosTypeName(u);
  15. if (!typeName) {
  16. console.log('Unknown type name for UUID: ' + u);
  17. return;
  18. }
  19. if (!(typeName in uuids))
  20. uuids[typeName] = [];
  21. uuids[typeName].push(u);
  22. });
  23. const lookup = {};
  24. let prom = new Promise(accept => accept());
  25. for (let typeName in uuids) {
  26. let filters = [
  27. ['uuid', 'in', uuids[typeName]]
  28. ];
  29. prom = prom.then(() => makeArvadosRequest(arvHost, arvToken,
  30. '/arvados/v1/' + typeName + 's?filters=' +
  31. encodeURIComponent(JSON.stringify(filters))));
  32. prom = prom.then(xhr => xhr.response.items.map(it => (
  33. lookup[it.uuid] = it)));
  34. prom = prom.catch(xhr => console.log(xhr.responseURL + ': ' + xhr.statusText));
  35. }
  36. prom = prom.then(() => lookup);
  37. return prom;
  38. }
  39. export default wbFetchObjects;