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.

52 lines
1.4KB

  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 makeArvadosRequest from 'make-arvados-request';
  8. import arvadosTypeName from 'arvados-type-name';
  9. import arvadosObjectName from 'arvados-object-name';
  10. function fetchObjectParents(arvHost, arvToken, uuid) {
  11. let parents = [];
  12. let cb = xhr => {
  13. const item = xhr.response.items[0];
  14. if (!item)
  15. return parents.reverse();
  16. item.name = arvadosObjectName(item);
  17. parents.push(item);
  18. if (!item.owner_uuid ||
  19. item.owner_uuid.endsWith('-tpzed-000000000000000')) {
  20. return parents.reverse();
  21. }
  22. const objectType = arvadosTypeName(item.owner_uuid);
  23. const filters = [
  24. ['uuid', '=', item.owner_uuid]
  25. ];
  26. return makeArvadosRequest(arvHost, arvToken,
  27. '/arvados/v1/' + objectType + 's' +
  28. '?filters=' + encodeURIComponent(JSON.stringify(filters))).then(cb);
  29. };
  30. const objectType = arvadosTypeName(uuid);
  31. const filters = [
  32. ['uuid', '=', uuid]
  33. ];
  34. let prom = makeArvadosRequest(arvHost, arvToken,
  35. '/arvados/v1/' + objectType + 's' +
  36. '?filters=' + encodeURIComponent(JSON.stringify(filters)));
  37. prom = prom.then(cb);
  38. return prom;
  39. }
  40. export default fetchObjectParents;