class CryptoconditionsRuby::Fulfillment
Constants
- FEATURE_BITMASK
- REGEX
- TYPE_ID
Public Class Methods
from_binary(reader)
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 40 def self.from_binary(reader) reader = Utils::Reader.from_source(reader) cls_type = reader.read_uint16 cls = TypeRegistry.get_class_from_type_id(cls_type) fulfillment = cls.new payload_length = reader.read_length_prefix fulfillment.parse_payload(reader, payload_length) fulfillment end
from_dict(data)
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 52 def self.from_dict(data) cls_type = data['type_id'] cls = TypeRegistry.get_class_from_type_id(cls_type) fulfillment = cls.new fulfillment.parse_dict(data) fulfillment end
from_uri(serialized_fulfillment)
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 13 def self.from_uri(serialized_fulfillment) return serialized_fulfillment if serialized_fulfillment.is_a?(Fulfillment) unless serialized_fulfillment.is_a?(String) raise TypeError, 'Serialized fulfillment must be a string' end pieces = serialized_fulfillment.split(':', -1) unless pieces.first == 'cf' raise TypeError, 'Serialized fulfillment must start with "cf:"' end unless serialized_fulfillment.match(Fulfillment::REGEX) raise TypeError, 'Invalid fulfillment format' end type_id = pieces[1].to_i(16) payload = Base64.urlsafe_decode64(base64_add_padding(pieces[2])) cls = TypeRegistry.get_class_from_type_id(type_id) fulfillment = cls.new fulfillment.parse_payload(Utils::Reader.from_source(payload), payload.length) fulfillment end
Public Instance Methods
calculate_max_fulfillment_length()
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 89 def calculate_max_fulfillment_length predictor = Utils::Predictor.new write_payload(predictor) predictor.size end
condition()
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 68 def condition condition = Condition.new condition.type_id = type_id condition.bitmask = bitmask condition.hash = generate_hash condition.max_fulfillment_length = calculate_max_fulfillment_length condition end
condition_binary()
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 81 def condition_binary condition.serialize_binary end
condition_uri()
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 77 def condition_uri condition.serialize_uri end
generate_hash()
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 85 def generate_hash raise 'Implement me' end
parse_dict(_data)
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 130 def parse_dict(_data) raise 'Implement me' end
parse_payload(_reader, *_args)
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 122 def parse_payload(_reader, *_args) raise 'Implement me' end
serialize_binary()
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 105 def serialize_binary writer = Utils::Writer.new writer.write_uint16(type_id) writer.write_var_octet_string(serialize_payload) writer.buffer end
serialize_payload()
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 112 def serialize_payload writer = Utils::Writer.new write_payload(writer) writer.buffer end
serialize_uri()
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 95 def serialize_uri format( 'cf:%x:%s', type_id, base64_remove_padding( Base64.urlsafe_encode64(serialize_payload) ) ) end
to_dict()
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 126 def to_dict raise 'Implement me' end
type_id()
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 60 def type_id self.class::TYPE_ID end
validate(**_kwargs)
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 134 def validate(**_kwargs) raise 'Implement me' end
write_payload(_writer)
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 118 def write_payload(_writer) raise 'Implement me' end
Private Instance Methods
bitmask()
click to toggle source
# File lib/cryptoconditions_ruby/fulfillment.rb, line 64 def bitmask self.class::FEATURE_BITMASK end