Class: TJSON::DataType::Binary64
Overview
Base64-serialized binary data
Constant Summary
TAGS
Instance Method Summary
collapse
Methods inherited from Scalar
#inspect, #scalar?
[], generate, identify_type, parse
Instance Method Details
#convert(str) ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/tjson/datatype/binary.rb', line 53
def convert(str)
raise TJSON::TypeError, "expected String, got #{str.class}: #{str.inspect}" unless str.is_a?(::String)
raise TJSON::ParseError, "base64url only: #{str.inspect}" if str =~ %r{\+|\/}
raise TJSON::ParseError, "padding disallowed: #{str.inspect}" if str.include?("=")
raise TJSON::ParseError, "invalid base64url: #{str.inspect}" unless str =~ /\A[A-Za-z0-9\-_]*\z/
str = str.ljust((str.length + 3) & ~3, "=") if (str.length % 4).nonzero?
::Base64.urlsafe_decode64(str)
end
|
#generate(binary) ⇒ Object
65
66
67
|
# File 'lib/tjson/datatype/binary.rb', line 65
def generate(binary)
Base64.urlsafe_encode64(binary).delete("=")
end
|
49
50
51
|
# File 'lib/tjson/datatype/binary.rb', line 49
def tag
"b64"
end
|