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
- .generate(prefix = nil, size: 96, time: Time.now, base: Snowflake::BASE) ⇒ Object
- .verify(snowflake, size: 96, base: Snowflake::BASE) ⇒ Object
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 |