Module: HasChecksum
- Defined in:
- lib/has_checksum.rb,
lib/has_checksum/version.rb
Defined Under Namespace
Modules: ActiveRecord, ClassMethods, PORO
Constant Summary collapse
- VERSION =
"0.0.1"
Class Method Summary collapse
Class Method Details
.included(klass) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/has_checksum.rb', line 7 def self.included(klass) klass.extend ClassMethods klass.class_eval do private def digest_string(methods) methods.map { |name| public_send(name) }.join("") end def calculate_signature(digest, value, = {}) key = case [:key] when Symbol raise "key option refers to an unknown method '#{options[:key]}'" unless respond_to?([:key]) send([:key]) when Proc [:key][] else [:key] end hmac = OpenSSL::HMAC.new(key.to_s, digest) hmac << value case [:format] when :binary, "binary" hmac.digest else hmac.hexdigest end end def calculate_checksum(klass, value, = {}) case [:format] when :binary, "binary" klass.digest(value) when :base64, "base64" klass.base64digest(value) when :bubblebabble, "bubblebabble" klass.bubblebabble(value) else klass.hexdigest(value) end end end end |