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.

44 lines
1.3KB

  1. import makeArvadosRequest from 'make-arvados-request';
  2. function fetchProjectParents(arvHost, arvToken, uuid) {
  3. let parents = [];
  4. let cb = xhr => {
  5. let objectType = xhr.response['uuid'].split('-')[1];
  6. if (objectType === 'tpzed') {
  7. let name = xhr.response['first_name'] + ' ' + xhr.response['last_name'];
  8. parents.push({ 'name': name, 'uuid': xhr.response['uuid'] });
  9. } else {
  10. parents.push({ 'name': xhr.response['name'],
  11. 'uuid': xhr.response['uuid'] });
  12. }
  13. if (!xhr.response['owner_uuid'] ||
  14. xhr.response['owner_uuid'].endsWith('-tpzed-000000000000000')) {
  15. return parents.reverse();
  16. }
  17. objectType = xhr.response['owner_uuid'].split('-')[1];
  18. if (objectType === 'tpzed') {
  19. return makeArvadosRequest(arvHost, arvToken,
  20. '/arvados/v1/users/' + xhr.response['owner_uuid']).then(cb);
  21. } else {
  22. return makeArvadosRequest(arvHost, arvToken,
  23. '/arvados/v1/groups/' + xhr.response['owner_uuid']).then(cb);
  24. }
  25. };
  26. let objectType = uuid.split('-')[1];
  27. let prom = makeArvadosRequest(arvHost, arvToken,
  28. '/arvados/v1/' + (objectType === 'tpzed' ? 'users' : 'groups') + '/' + uuid);
  29. prom = prom.then(cb);
  30. return prom;
  31. }
  32. export default fetchProjectParents;