class Multichain::Encoder
Public Class Methods
decode(hexified)
click to toggle source
# File lib/multichain/encoder.rb, line 56 def self.decode hexified dehexify hexified end
dehexify(hexified)
click to toggle source
# File lib/multichain/encoder.rb, line 52 def self.dehexify hexified hexified.scan(/../).map { |x| x.hex.chr }.join end
encode(url, headers = self.headers)
click to toggle source
# File lib/multichain/encoder.rb, line 48 def self.encode url, headers = self.headers hexify url, headers = self.headers end
extract(input_string)
click to toggle source
# File lib/multichain/encoder.rb, line 27 def self.extract input_string parts = input_string.split '|' keys = [ :timestamp, :url, :headers, :hash ] h = {} keys.each_with_index do |k, i| h[k] = parts[i] end h end
hash(url, headers = self.headers)
click to toggle source
# File lib/multichain/encoder.rb, line 13 def self.hash url, headers = self.headers sha256 url, headers = self.headers end
headers()
click to toggle source
# File lib/multichain/encoder.rb, line 3 def self.headers { 'Accept' => 'application/json' } end
hexify(url, headers = self.headers)
click to toggle source
# File lib/multichain/encoder.rb, line 44 def self.hexify url, headers = self.headers input_string(url).each_byte.map { |b| b.to_s(16) }.join end
input_string(url, headers = self.headers)
click to toggle source
# File lib/multichain/encoder.rb, line 17 def self.input_string url, headers = self.headers a = [] a.push Time.new.to_i a.push url a.push headers.to_json a.push sha256(url) a.join '|' end
sha256(url, headers = self.headers)
click to toggle source
# File lib/multichain/encoder.rb, line 9 def self.sha256 url, headers = self.headers body = Digest::SHA256.hexdigest(HTTParty.get(url, headers: headers).body) end
verify(hexified)
click to toggle source
# File lib/multichain/encoder.rb, line 60 def self.verify hexified parts = extract dehexify hexified parts[:hash] == sha256(parts[:url]) end