import ApiError from '@rancher/ember-api-store/models/error'; import { get } from '@ember/object'; export default { stringify(err) { var str; if ( typeof err === 'string' ) { str = err; } else if ( err instanceof ApiError ) { if ( err.get('code') === 'ActionNotAvailable' ) { str = 'This action is not currently available'; } else if ( err.get('status') === 422 ) { str = 'Validation failed in API:'; var something = false; if ( err.get('fieldName') ) { str += ` ${ err.get('fieldName') }`; something = true; if ( err.get('message') ) { str += ` ${ err.get('message') }`; } } if ( err.get('detail') ) { str += ` (${ err.get('detail') })`; something = true; } if ( !something ) { if ( err.get('message') ) { str += ` ${ err.get('message') }`; something = true; } } if ( !something ) { str += ` (${ err.get('code') })`; } switch ( err.get('code') ) { case 'MissingRequired': str += ' is required'; break; case 'NotUnique': str += ' is not unique'; break; case 'NotNullable': str += ' must be set'; break; case 'InvalidOption': str += ' is not a valid option'; break; case 'InvalidCharacters': str += ' contains invalid characters'; break; case 'MinLengthExceeded': str += ' is not long enough'; break; case 'MaxLengthExceeded': str += ' is too long'; break; case 'MinLimitExceeded': str += ' is too small'; break; case 'MaxLimitExceded': str += ' is too big'; break; } } else if ( err.get('status') === 404 ) { str = `${ err.get('message') }`; if (get(err, 'opt')) { str = `: ${ err.get('opt.url') }`; } } else { str = err.get('message'); if ( err.get('detail') ) { if ( str ) { str += ` (${ err.get('detail') })`; } else { str = err.get('detail'); } } } } else if ( typeof err === 'object' ) { if ( err.message ) { str = err.message; if ( err.detail ) { if ( str ) { str += ` (${ err.detail })`; } else { str = err.detail; } } } else if ( err.detail ) { str = err.detail; } } else { // Good luck... str = err; } return str; }, };