servers.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import validator from 'validator'
  2. import { exists, isArray } from './misc'
  3. import { isTestInstance } from '../core-utils'
  4. import { CONSTRAINTS_FIELDS } from '../../initializers/constants'
  5. function isHostValid (host: string) {
  6. const isURLOptions = {
  7. require_host: true,
  8. require_tld: true
  9. }
  10. // We validate 'localhost', so we don't have the top level domain
  11. if (isTestInstance()) {
  12. isURLOptions.require_tld = false
  13. }
  14. return exists(host) && validator.isURL(host, isURLOptions) && host.split('://').length === 1
  15. }
  16. function isEachUniqueHostValid (hosts: string[]) {
  17. return isArray(hosts) &&
  18. hosts.length !== 0 &&
  19. hosts.every(host => {
  20. return isHostValid(host) && hosts.indexOf(host) === hosts.lastIndexOf(host)
  21. })
  22. }
  23. function isValidContactBody (value: any) {
  24. return exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.CONTACT_FORM.BODY)
  25. }
  26. function isValidContactFromName (value: any) {
  27. return exists(value) && validator.isLength(value, CONSTRAINTS_FIELDS.CONTACT_FORM.FROM_NAME)
  28. }
  29. // ---------------------------------------------------------------------------
  30. export {
  31. isValidContactBody,
  32. isValidContactFromName,
  33. isEachUniqueHostValid,
  34. isHostValid
  35. }