module Hashlink
Constants
- VERSION
Public Class Methods
encode( data: '', urls: [], codecs: ['mh-sha2-256', 'mb-base58btc'], meta: {} )
click to toggle source
# File lib/hashlink/hashlink.rb, line 8 def self.encode( data: '', urls: [], codecs: ['mh-sha2-256', 'mb-base58btc'], meta: {} ) if data.empty? && urls.empty? raise 'Either `data` or `urls` must be provided.' end unless urls.empty? urls.each do |url| raise "URL #{url} must be a string." unless url.is_a? String end meta['url'] = urls end result = data codecs_dup = codecs.dup until codecs_dup.empty? codec = codecs_dup.shift.split('-') codec_encoder = codec.shift codec = codec.join('-') if codec_encoder == 'mh' result = Multihashes.encode( Digest::SHA256.digest(result), codec ).unpack('C*') elsif codec_encoder == 'mb' result = Multibases.pack(codec, result).to_s end end "hl:#{result}" end