datacite/bracco

View on GitHub
app/validators/url-format.js

Summary

Maintainability
A
2 hrs
Test Coverage
import BaseValidator from 'ember-cp-validations/validators/base';
import isURL from 'validator/lib/isURL';

const UrlFormat = BaseValidator.extend({
  validate(value, options) {
    if (!value && options.allowBlank) {
      return true;
    } else if (!value) {
      let message = "This field can't be blank.";
      return message;
      // don't validate info URIs (not handled by validator)
    } else if (value.startsWith('info:')) {
      return true;
    } else {
      // default options for this validator, require_protocol set to true
      let defaultOptions = {
        protocols: ['http', 'https', 'ftp'],
        require_tld: true,
        require_protocol: true,
        require_host: true,
        require_valid_protocol: true,
        allow_underscores: false,
        host_whitelist: false,
        host_blacklist: false,
        allow_trailing_dot: false,
        allow_protocol_relative_urls: false,
        disallow_auth: false
      };

      if (value && isURL(value, Object.assign(defaultOptions, options))) {
        return true;
      } else {
        let message = 'Please enter a valid URL.';
        return message;
      }
    }
  }
});

export default UrlFormat;