Sha256: 38e6115f1bbb2177c1c9bc4c15932c1da0e7f3b4ca6d484727a01d34856b5821

Contents?: true

Size: 992 Bytes

Versions: 1

Compression:

Stored size: 992 Bytes

Contents

require "time"

module Vultr
  class Middleware < Faraday::Middleware
    ISO_DATE_FORMAT = /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|((\+|-)\d{2}:?\d{2}))\Z/xm

    # This method will be called when the response is being processed.
    # You can alter it as you like, accessing things like response_body, response_headers, and more.
    # Refer to Faraday::Env for a list of accessible fields:
    # https://github.com/lostisland/faraday/blob/main/lib/faraday/options/env.rb
    #
    # @param env [Faraday::Env] the environment of the response being processed.
    def on_complete(env)
      parse_dates! env[:body]
    end

    private

    def parse_dates!(value)
      case value
      when Hash
        value.each { |key, element| value[key] = parse_dates!(element) }
      when Array
        value.each_with_index { |element, index| value[index] = parse_dates!(element) }
      when ISO_DATE_FORMAT
        Time.parse(value)
      else
        value
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vultr-2.0.0 lib/vultr/middleware.rb