class Ably::Models::MessageEncoders::Base64

Base64 binary Encoder and Decoder Uses encoding identifier ‘base64’

Constants

ENCODING_ID

Public Instance Methods

decode(message, channel_options) click to toggle source
# File lib/submodules/ably-ruby/lib/ably/models/message_encoders/base64.rb, line 20
def decode(message, channel_options)
  if is_base64_encoded?(message)
    message[:data] = ::Base64.decode64(message[:data])
    strip_current_encoding_part message
  end
end
encode(message, channel_options) click to toggle source
# File lib/submodules/ably-ruby/lib/ably/models/message_encoders/base64.rb, line 11
def encode(message, channel_options)
  return if is_empty?(message)

  if is_binary?(message) && transport_protocol_text?
    message[:data] = ::Base64.encode64(message[:data])
    add_encoding_to_message ENCODING_ID, message
  end
end

Private Instance Methods

is_base64_encoded?(message) click to toggle source
# File lib/submodules/ably-ruby/lib/ably/models/message_encoders/base64.rb, line 32
def is_base64_encoded?(message)
  current_encoding_part(message).to_s.match(/^#{ENCODING_ID}$/i)
end
is_binary?(message) click to toggle source
# File lib/submodules/ably-ruby/lib/ably/models/message_encoders/base64.rb, line 28
def is_binary?(message)
  message[:data].kind_of?(String) && message[:data].encoding == Encoding::ASCII_8BIT
end
transport_protocol_text?() click to toggle source
# File lib/submodules/ably-ruby/lib/ably/models/message_encoders/base64.rb, line 36
def transport_protocol_text?
  !options[:binary_protocol]
end