Sha256: d69e0868f5fd27c853da912c71aa18e8142128f5be740c7d11876d6fd6896eab
Contents?: true
Size: 904 Bytes
Versions: 19
Compression:
Stored size: 904 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
19 entries across 19 versions & 1 rubygems