diff options
Diffstat (limited to 'app/models/namespaces/randomized_suffix_path.rb')
-rw-r--r-- | app/models/namespaces/randomized_suffix_path.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/app/models/namespaces/randomized_suffix_path.rb b/app/models/namespaces/randomized_suffix_path.rb new file mode 100644 index 00000000000..586d7bff5c3 --- /dev/null +++ b/app/models/namespaces/randomized_suffix_path.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +module Namespaces + class RandomizedSuffixPath + MAX_TRIES = 4 + LEADING_ZEROS = /^0+/.freeze + + def initialize(path) + @path = path + end + + def call(new_count) + @count = new_count.to_i + to_s + end + + def to_s + "#{path}#{suffix}" + end + + private + + attr_reader :count, :path + + def randomized_suffix + Time.current.strftime('%L%M%V').sub(LEADING_ZEROS, '').to_i + offset + end + + def offset + count - MAX_TRIES - 1 + end + + def suffix + return if count.nil? + return randomized_suffix if count > MAX_TRIES + return count if count > 0 + end + end +end |