Sha256: 91ae719dad35031b6774d1c06a2f6c7650d8e3db1b382b5498735b6bd27412dc

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

# frozen_string_literal: true

module Akita
  module HarLogger
    class HarUtils
      # Rack apparently uses 8-bit ASCII for everything, even when the string
      # is not 8-bit ASCII. This reinterprets the given string as UTF-8.
      def self.fixEncoding(v)
        if v == nil || v.encoding == Encoding::UTF_8 then
          v
        else
          String.new(v).force_encoding(Encoding::UTF_8)
        end
      end

      # Converts a Hash into a list of Hash objects. Each entry in the given
      # Hash will be represented in the output by a Hash object that maps
      # 'name' to the entry's key and 'value' to the entry's value.
      def self.hashToList(hash)
        hash.reduce([]) { |accum, (k, v)|
          accum.append({
            name: fixEncoding(k),
            value: fixEncoding(v),
          })
        }
      end

      # Determines whether all values in a Hash are strings.
      def self.allValuesAreStrings(hash)
        hash.each do |_, value|
          if !(value.is_a? String) then
            return false
          end
        end

        return true
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
akita-har_logger-0.2.3 lib/akita/har_logger/har_utils.rb