Sha256: c4f4c832dd5739a9d90c8361d7087306505d24cd46519a5e63ed1c1d1a2f32c7

Contents?: true

Size: 760 Bytes

Versions: 5

Compression:

Stored size: 760 Bytes

Contents

require 'base32/crockford'
require 'securerandom'

module Cirneco
  module Utils
    # "ZZZZZZZ" decoded as number
    UPPER_LIMIT = 34359738367

    def get_dois_by_prefix(prefix, options={})
      response = get_dois(options)

      if response.body["data"].present?
        response.body["data"] = response.body["data"].select { |doi| doi.start_with?(prefix) }
      end
      response
    end

    def decode_doi(doi)
      prefix, string = doi.split('/', 2)
      Base32::Crockford.decode(string, checksum: true).to_i
    end

    def encode_doi(prefix, options={})
      number = options[:number] || SecureRandom.random_number(UPPER_LIMIT)
      prefix.to_s + "/" + Base32::Crockford.encode(number, split: 4, length: 8, checksum: true)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
cirneco-0.4.9 lib/cirneco/utils.rb
cirneco-0.4.8 lib/cirneco/utils.rb
cirneco-0.4.7 lib/cirneco/utils.rb
cirneco-0.4.6 lib/cirneco/utils.rb
cirneco-0.4.5 lib/cirneco/utils.rb