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

Version Path
einvoice-1.2.22 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.21 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.20 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.19 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.18 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.17 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.16 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.15 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.14 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.13 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.12 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.11 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.10 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.9 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.8 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.7 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.6 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.5 lib/faraday/response/decode_tradevan.rb
einvoice-1.2.4 lib/faraday/response/decode_tradevan.rb