Module: Snowflakey

Defined in:
lib/snowflakey.rb,
lib/snowflakey/version.rb,
lib/snowflakey/snowflake.rb

Defined Under Namespace

Classes: Snowflake

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.generate(prefix = nil, size: 96, time: Time.now, base: Snowflake::BASE) ⇒ Object



10
11
12
13
14
# File 'lib/snowflakey.rb', line 10

def generate(prefix = nil, size: 96, time: Time.now, base: Snowflake::BASE)
  r = (SecureRandom.random_number * 1e16).round

  Snowflake.new(prefix, size, time.utc, r, base).to_s
end

.verify(snowflake, size: 96, base: Snowflake::BASE) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/snowflakey.rb', line 16

def verify(snowflake, size: 96, base: Snowflake::BASE)
  id, prefix = snowflake.reverse.split("_", 2).map { |s| s.reverse }
  ms         = id.to_i(base) >> (size - 41)
  time       = Time.at((ms / 1e3)).utc
  id         = Baseconv.convert(id, from_base: base.to_i, to_base: 10)
  id         = id.to_i % (2 ** (size - 41))

  Snowflake.new(prefix, size, time, id, base)
end