Sha256: 7bf1b761699d04fe2ce4a8cc82812f5adb4cf7bd4d4078476d36b40d16e473a8

Contents?: true

Size: 1.18 KB

Versions: 3

Compression:

Stored size: 1.18 KB

Contents

module Moceansdk
  module Modules

    class ResponseFactory
      def self.create_object(raw_response)
        begin
          res = JSON.load(raw_response, proc {|obj|
            case obj
            when Hash
              obj.each {|k, v|
                obj[k] = if v.is_a? Float
                           # hardcoded float to 4 decimal string
                           sprintf('%.4f', v)
                         elsif v.is_a? Integer
                           v.to_s
                         else
                           v
                         end
              }
            when Array
              obj.map! {|v| v}
            end
          })
        rescue JSON::JSONError
          begin
            res = XmlSimple.xml_in(raw_response, 'ForceArray': false)
          rescue StandardError
            raise Moceansdk::Exceptions::MoceanError, 'unable to parse response, ' + raw_response
          end
        end

        hashed_res = HashExtended.new.merge(res)
        hashed_res.to_dot
      end
    end

    class HashExtended < Hash
      attr_accessor :raw_response

      def to_s
        @raw_response
      end

      def to_hash
        inspect
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
moceansdk-1.1.1 lib/moceansdk/modules/response_factory.rb
moceansdk-1.1.0 lib/moceansdk/modules/response_factory.rb
moceansdk-1.0.1 lib/moceansdk/modules/response_factory.rb