module HrrRbSftp::Protocol::Common::DataTypes::ExtensionPair

This module provides methods to convert extension-name and extension-data pair represented in ::Hash and binary string each other.

Public Class Methods

decode(io) click to toggle source

Convert binary string into extension-name and extension-data pair represented in ::Hash.

@param io [::IO] ::IO instance that has buffer to be read. @return [::Hash{::Symbol=>::String}] Converted extension-name and extension-data pair represented in ::Hash.

# File lib/hrr_rb_sftp/protocol/common/data_types/extension_pair.rb, line 31
def self.decode io
  {
    :"extension-name" => DataTypes::String.decode(io),
    :"extension-data" => DataTypes::String.decode(io),
  }
end
encode(arg) click to toggle source

Convert extension-name and extension-data pair represented in ::Hash into binary string.

@param arg [::Hash{::Symbol=>::String}] Extension-name and extension-data pair represented in ::Hash to be converted. @raise [::ArgumentError] When arg is not ::Hash value. @return [::String] Converted binary string.

# File lib/hrr_rb_sftp/protocol/common/data_types/extension_pair.rb, line 18
def self.encode arg
  unless arg.kind_of? ::Hash
    raise ArgumentError, "must be a kind of Hash, but got #{arg.inspect}"
  end
  DataTypes::String.encode(arg[:"extension-name"]) + DataTypes::String.encode(arg[:"extension-data"])
end