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.

51 lines
1.5KB

  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. function fetchProjectParents(arvHost, arvToken, uuid) {
  9. let parents = [];
  10. let cb = xhr => {
  11. let objectType = xhr.response['uuid'].split('-')[1];
  12. if (objectType === 'tpzed') {
  13. let name = xhr.response['first_name'] + ' ' + xhr.response['last_name'];
  14. parents.push({ 'name': name, 'uuid': xhr.response['uuid'] });
  15. } else {
  16. parents.push({ 'name': xhr.response['name'],
  17. 'uuid': xhr.response['uuid'] });
  18. }
  19. if (!xhr.response['owner_uuid'] ||
  20. xhr.response['owner_uuid'].endsWith('-tpzed-000000000000000')) {
  21. return parents.reverse();
  22. }
  23. objectType = xhr.response['owner_uuid'].split('-')[1];
  24. if (objectType === 'tpzed') {
  25. return makeArvadosRequest(arvHost, arvToken,
  26. '/arvados/v1/users/' + xhr.response['owner_uuid']).then(cb);
  27. } else {
  28. return makeArvadosRequest(arvHost, arvToken,
  29. '/arvados/v1/groups/' + xhr.response['owner_uuid']).then(cb);
  30. }
  31. };
  32. let objectType = uuid.split('-')[1];
  33. let prom = makeArvadosRequest(arvHost, arvToken,
  34. '/arvados/v1/' + (objectType === 'tpzed' ? 'users' : 'groups') + '/' + uuid);
  35. prom = prom.then(cb);
  36. return prom;
  37. }
  38. export default fetchProjectParents;