Sha256: 4243915ea1b771e5d153a33508d775541922c1d2f01a3f95f0071d56e0399ffd

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 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 8-bit ASCII strings as UTF-8.
      def self.fixEncoding(v)
        if v == nil || v.encoding != Encoding::ASCII_8BIT 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.4 lib/akita/har_logger/har_utils.rb