Module: Radio5::Validations::Regexps

Includes:
Constants
Defined in:
lib/radio5/validations/regexps.rb

Constant Summary collapse

MONGO_ID =
/\A[a-f\d]{24}\z/.freeze
UUID_GENERIC =
/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/.freeze
UUID =
/\A#{UUID_GENERIC}\z/.freeze
COUNTRY_ISO_CODE_GENERIC =
/([A-Z]{3}|KN1)/.freeze
COUNTRY_ISO_CODE =
/\A#{COUNTRY_ISO_CODE_GENERIC}\z/.freeze
ASSET_URL =

NOTE: everything below is used within RSpec custom matchers, they might be migrated to regular validations matchers in future, in case there will be a need to validate fields in response payloads on the fly

lambda do |sub_path, exts, size = nil|
  asset_host = Regexp.escape(ASSET_HOST)
  sub_path   = sub_path.is_a?(Regexp) ? sub_path : Regexp.escape(sub_path)
  exts       = /(#{exts.join("|")})/
  size       = /\/#{size}/ if size

  /#{asset_host}#{sub_path}#{size}\/#{UUID_GENERIC}(_\d+)?\.#{exts}/.freeze
end.freeze
ISLAND_ICON_URL =
ASSET_URL.call("/island/icon", %w[png svg])
ISLAND_SPLASH_URL =
ASSET_URL.call("/island/splash", %w[png svg])
ISLAND_MARKER_URL =
ASSET_URL.call("/island/marker", %w[png svg])
TRACK_COVER_URLS =
IMAGE_SIZES[:track].each_with_object({}) do |image_size, hash|
  sub_path = %r(/cover/#{COUNTRY_ISO_CODE_GENERIC}/\d{4})
  exts     = %w[jpg jpeg png gif]
  regexp   = ASSET_URL.call(sub_path, exts, image_size)

  hash[image_size] = regexp
end.freeze
USER_IMAGE_URLS =
IMAGE_SIZES[:user].each_with_object({}) do |image_size, hash|
  sub_path = %r{/user/\d+}
  exts     = %w[jpg jpeg png gif]
  regexp   = ASSET_URL.call(sub_path, exts, image_size)

  hash[image_size] = regexp
end.freeze
AUDIO_URL =
lambda do |exts|
  exts = /(#{exts.join("|")})/

  /.+\/#{UUID_GENERIC}\.#{exts}\?token=[^&]{22}&expires=\d{10}$/.freeze
end.freeze
MPEG_URL =
AUDIO_URL.call(["mp3", "m4a"]).freeze
OGG_URL =
AUDIO_URL.call(["ogg"]).freeze

Constants included from Constants

Constants::ASSET_HOST, Constants::DECADES, Constants::IMAGE_SIZES, Constants::MAX_PAGE_SIZE, Constants::MOODS, Constants::MOODS_MAPPING, Constants::USER_TRACK_STATUSES, Constants::USER_TRACK_STATUSES_MAPPING