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.

50 lines
1.3KB

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