module Veritrans::Tercerog::Mdk::MdkUtils
MdkUtils 共通ユーティリティモジュール
Constants
- DFAULT_ENCODE
デフォルトエンコード
Public Class Methods
与えられた文字コードにしたがって文字列を変換し、その結果を文字列として返す。¶ ↑
- @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で扱える文字コード(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
与えられた文字コードにしたがって文字列を変換し、その結果を文字列として返す。¶ ↑
尚、引数に指定する文字列の文字コードは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
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") or candidate == "JCNTOKEN" or candidate == "JCNTOKENMEMBERNUM" 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
与えられた文字コードにしたがって文字列を変換し、その結果を文字列として返す。¶ ↑
- @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で扱える文字コード(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
与えられた文字コードにしたがって文字列を変換し、その結果を文字列として返す。¶ ↑
尚、引数に指定する文字列の文字コードは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
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") or candidate == "JCNTOKEN" or candidate == "JCNTOKENMEMBERNUM" 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