Sha256: b9d0bb7901cef9750c4088e469aa1e186cce0a4461fab878100c2584c5073f69
Contents?: true
Size: 905 Bytes
Versions: 5
Compression:
Stored size: 905 Bytes
Contents
require 'faraday' module Faraday class Response::DecodeTradevan < Faraday::Middleware dependency do require 'base64' unless defined?(::Base64) require 'openssl' unless defined?(::OpenSSL) end def initialize(app, key) super(app) @key = key end def call(env) @app.call(env).on_complete do |env| if env[:body] && env[:body]['Success'] != 'E' env[:body]['Message'] = decrypt(@key, env[:body]['Message']) end end end private def decrypt(key, content) cipher = OpenSSL::Cipher::AES.new(128, :CBC) cipher.decrypt cipher.key = key cipher.iv = key cipher.padding = 0 decrypted = cipher.update(Base64.decode64(content)) + cipher.final JSON.load(decrypted.strip!) end end end Faraday::Response.register_middleware decode_tradevan: Faraday::Response::DecodeTradevan
Version data entries
5 entries across 5 versions & 1 rubygems