module Veritrans::Tercerog::Mdk::MdkUtils

MdkUtils 共通ユーティリティモジュール

Constants

DFAULT_ENCODE

デフォルトエンコード

Public Class Methods

mdk_base64_encode(data) click to toggle source

引数のデータをbase64エンコード(SAFE URL)した結果を返します。

@param

data 対象データ

@return

base64エンコード後のデータ(改行なし)

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 114
def mdk_base64_encode(data)
  [data].pack('m').gsub('/', '-').gsub('+', '_').gsub('=', '*').gsub(/\n/, '')
end
mdk_delete_r_n(data) click to toggle source

引数のデータから改行コードを取り除いた値を返す

@param

data 対象データ

@return

改行を取り除いたデータ

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 124
def mdk_delete_r_n(data)
  tmp = data.gsub("\r\n", "")
  tmp = tmp.gsub("\n", "")
  tmp
end
mdk_digest(data) click to toggle source

引数データのダイジェストを取得して、返却します。

@param

data ダイジェスト取得対象データ

@return

ダイジェスト(16進文字列)

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 92
def mdk_digest(data)
  digest_algorithm = Veritrans::Tercerog::Mdk::MdkConfig.instance.message_digest_type
  OpenSSL::Digest.hexdigest(digest_algorithm, data)
end
mdk_encode(to, from, str) click to toggle source

与えられた文字コードにしたがって文字列を変換し、その結果を文字列として返す。

@param

to 変換先の文字コード

@param

from 変換前の文字コード

@param

str 変換したい文字列

@return

結果文字列

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 31
def mdk_encode(to, from, str)

  if str.nil?
    return str
  end

  unless /^([0-9^.]+).([^.]+).([^.]+)/m =~ RUBY_VERSION
    return str
  end

  major = $1.to_i
  if 2 <= major
    return str.encode(to, from)
  else
    return Iconv.conv(to, from, str)
  end
end
mdk_encode_from(enc, str) click to toggle source

与えられた文字コードで構成された文字列をMDKで扱える文字コード(UTF-8)に変換して返す。

引数に文字コードが空の場合は変換処理が行われない。

@param

enc 変換前の文字コード

@param

str 変換したい文字列

@return

結果文字列(UTF-8)

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 57
def mdk_encode_from(enc, str)

  if !str.nil? && !enc.nil? && enc.to_s.upcase != DFAULT_ENCODE
    # エンコードが指定されている場合
    return self::mdk_encode(DFAULT_ENCODE, enc, str)
  else
    return str
  end
end
mdk_encode_to(enc, str) click to toggle source

与えられた文字コードにしたがって文字列を変換し、その結果を文字列として返す。

尚、引数に指定する文字列の文字コードはUTF-8であることを前提としている。 また、引数に文字コードが空の場合は変換処理が行われない。

@param

enc 変換後の文字コード

@param

str 変換したい文字列

@return

結果文字列

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 76
def mdk_encode_to(enc, str)

  if !str.nil? && !enc.nil? && enc.to_s.upcase != DFAULT_ENCODE
    # エンコードが指定されている場合
    return self::mdk_encode(enc, DFAULT_ENCODE, str)
  else
    return str
  end
end
mdk_gmtime() click to toggle source

現在日時(例:20000101010101000)をグリニッジ標準時間で取得する

@return

グリニッジ標準時間の現在日時

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 102
def mdk_gmtime
  Time.now.gmtime.instance_eval {
    '%s%03d' % [strftime('%Y%m%d%H%M%S'), (usec / 1000.0).round]
  }
end
mdk_mask_json(json) click to toggle source

JSON文字列のマスク化を行う。

マスク対象項目は、内部設定ファイルで定義されているMASK_ITEMに設定されている値が対象となる。
値をアスタリスクで全置換する以外のマスクを必要とするならば、当該メソッドを修正する必要がある。
[マスク内容]
・defaultとしては全桁アスタリスクでマスク
・カード番号の場合は上位4桁マスク
・文字列mailaddr(大文字小文字問わない)を含む場合は@までをアスタリスクでマスク

@param

json JSONの文字列

@return

マスク化されたJSONの文字列

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 143
def mdk_mask_json(json)

  if json.nil?
    return nil
  end

  masked_json = json
  masked_json = "" unless "".instance_of?(json.class)

  # コンフィグクラス生成
  config = Veritrans::Tercerog::Mdk::MdkConfig.instance
  # マスク項目を大文字化して取得
  mask_item_list = config[:MASK_ITEM].upcase.split(",")

  mask_item_list.each do |candidate|
    if candidate.include?("MAILADDR")
      masked_json.gsub!(/(\"#{candidate}\":\"[\s]*)([^@]*)(@[^\"]*\")/mi) do |target|
        s1 = $1
        s2 = $2
        s3 = $3

        s1.gsub!(/-/m, "")
        s2.gsub!(/-/m, "")
        s2.gsub!(/./m ,"*")
        s3.gsub!(/-/m, "")
        "#{s1}#{s2}#{s3}"
      end
    elsif candidate.include?("CARDNUMBER")
      masked_json.gsub!(/(\"#{candidate}\":[\s]*\"[^\"]{6})([^\"]*)([^\"]{2}\")/mi) do |target|
        s1 = $1
        s2 = $2
        s3 = $3

        s2.gsub!(/./m ,"*")
        "#{s1}#{s2}#{s3}"
      end
    else
      masked_json.gsub!(/(\"#{candidate}\":[\s]*\")([^\"]*)(\")/mi) do |target|
        s1 = $1
        s2 = $2
        s3 = $3

        s2.gsub!(/./m ,"*")
        "#{s1}#{s2}#{s3}"
      end
    end
  end

  return masked_json
end

Private Instance Methods

mdk_base64_encode(data) click to toggle source

引数のデータをbase64エンコード(SAFE URL)した結果を返します。

@param

data 対象データ

@return

base64エンコード後のデータ(改行なし)

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 114
def mdk_base64_encode(data)
  [data].pack('m').gsub('/', '-').gsub('+', '_').gsub('=', '*').gsub(/\n/, '')
end
mdk_delete_r_n(data) click to toggle source

引数のデータから改行コードを取り除いた値を返す

@param

data 対象データ

@return

改行を取り除いたデータ

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 124
def mdk_delete_r_n(data)
  tmp = data.gsub("\r\n", "")
  tmp = tmp.gsub("\n", "")
  tmp
end
mdk_digest(data) click to toggle source

引数データのダイジェストを取得して、返却します。

@param

data ダイジェスト取得対象データ

@return

ダイジェスト(16進文字列)

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 92
def mdk_digest(data)
  digest_algorithm = Veritrans::Tercerog::Mdk::MdkConfig.instance.message_digest_type
  OpenSSL::Digest.hexdigest(digest_algorithm, data)
end
mdk_encode(to, from, str) click to toggle source

与えられた文字コードにしたがって文字列を変換し、その結果を文字列として返す。

@param

to 変換先の文字コード

@param

from 変換前の文字コード

@param

str 変換したい文字列

@return

結果文字列

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 31
def mdk_encode(to, from, str)

  if str.nil?
    return str
  end

  unless /^([0-9^.]+).([^.]+).([^.]+)/m =~ RUBY_VERSION
    return str
  end

  major = $1.to_i
  if 2 <= major
    return str.encode(to, from)
  else
    return Iconv.conv(to, from, str)
  end
end
mdk_encode_from(enc, str) click to toggle source

与えられた文字コードで構成された文字列をMDKで扱える文字コード(UTF-8)に変換して返す。

引数に文字コードが空の場合は変換処理が行われない。

@param

enc 変換前の文字コード

@param

str 変換したい文字列

@return

結果文字列(UTF-8)

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 57
def mdk_encode_from(enc, str)

  if !str.nil? && !enc.nil? && enc.to_s.upcase != DFAULT_ENCODE
    # エンコードが指定されている場合
    return self::mdk_encode(DFAULT_ENCODE, enc, str)
  else
    return str
  end
end
mdk_encode_to(enc, str) click to toggle source

与えられた文字コードにしたがって文字列を変換し、その結果を文字列として返す。

尚、引数に指定する文字列の文字コードはUTF-8であることを前提としている。 また、引数に文字コードが空の場合は変換処理が行われない。

@param

enc 変換後の文字コード

@param

str 変換したい文字列

@return

結果文字列

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 76
def mdk_encode_to(enc, str)

  if !str.nil? && !enc.nil? && enc.to_s.upcase != DFAULT_ENCODE
    # エンコードが指定されている場合
    return self::mdk_encode(enc, DFAULT_ENCODE, str)
  else
    return str
  end
end
mdk_gmtime() click to toggle source

現在日時(例:20000101010101000)をグリニッジ標準時間で取得する

@return

グリニッジ標準時間の現在日時

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 102
def mdk_gmtime
  Time.now.gmtime.instance_eval {
    '%s%03d' % [strftime('%Y%m%d%H%M%S'), (usec / 1000.0).round]
  }
end
mdk_mask_json(json) click to toggle source

JSON文字列のマスク化を行う。

マスク対象項目は、内部設定ファイルで定義されているMASK_ITEMに設定されている値が対象となる。
値をアスタリスクで全置換する以外のマスクを必要とするならば、当該メソッドを修正する必要がある。
[マスク内容]
・defaultとしては全桁アスタリスクでマスク
・カード番号の場合は上位4桁マスク
・文字列mailaddr(大文字小文字問わない)を含む場合は@までをアスタリスクでマスク

@param

json JSONの文字列

@return

マスク化されたJSONの文字列

# File tgMdk/lib/tg_mdk/mdk_utils.rb, line 143
def mdk_mask_json(json)

  if json.nil?
    return nil
  end

  masked_json = json
  masked_json = "" unless "".instance_of?(json.class)

  # コンフィグクラス生成
  config = Veritrans::Tercerog::Mdk::MdkConfig.instance
  # マスク項目を大文字化して取得
  mask_item_list = config[:MASK_ITEM].upcase.split(",")

  mask_item_list.each do |candidate|
    if candidate.include?("MAILADDR")
      masked_json.gsub!(/(\"#{candidate}\":\"[\s]*)([^@]*)(@[^\"]*\")/mi) do |target|
        s1 = $1
        s2 = $2
        s3 = $3

        s1.gsub!(/-/m, "")
        s2.gsub!(/-/m, "")
        s2.gsub!(/./m ,"*")
        s3.gsub!(/-/m, "")
        "#{s1}#{s2}#{s3}"
      end
    elsif candidate.include?("CARDNUMBER")
      masked_json.gsub!(/(\"#{candidate}\":[\s]*\"[^\"]{6})([^\"]*)([^\"]{2}\")/mi) do |target|
        s1 = $1
        s2 = $2
        s3 = $3

        s2.gsub!(/./m ,"*")
        "#{s1}#{s2}#{s3}"
      end
    else
      masked_json.gsub!(/(\"#{candidate}\":[\s]*\")([^\"]*)(\")/mi) do |target|
        s1 = $1
        s2 = $2
        s3 = $3

        s2.gsub!(/./m ,"*")
        "#{s1}#{s2}#{s3}"
      end
    end
  end

  return masked_json
end