]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/aviator/lib/puppet/feature/aviator/core/response.rb
add aimonb/aviator to 3rdparty
[dsa-puppet.git] / 3rdparty / modules / aviator / lib / puppet / feature / aviator / core / response.rb
diff --git a/3rdparty/modules/aviator/lib/puppet/feature/aviator/core/response.rb b/3rdparty/modules/aviator/lib/puppet/feature/aviator/core/response.rb
new file mode 100644 (file)
index 0000000..12c9561
--- /dev/null
@@ -0,0 +1,52 @@
+module Aviator
+
+  class Response
+    extend Forwardable
+
+    def_delegators :@response, :status
+
+    attr_reader :request
+
+    def initialize(response, request)
+      @response = response
+      @request  = request
+    end
+
+
+    def body
+      @body ||= if raw_body.length > 0
+        if Aviator::Compatibility::RUBY_1_8_MODE
+          clean_body = raw_body.gsub(/\\ /, ' ')
+        else
+          clean_body = raw_body
+        end
+
+        Hashish.new(JSON.parse(clean_body))
+      else
+        Hashish.new({})
+      end
+    end
+
+
+    def headers
+      @headers ||= Hashish.new(@response.headers)
+    end
+
+
+    def to_hash
+      Hashish.new({
+        :status  => status,
+        :headers => headers,
+        :body    => body
+      })
+    end
+
+    private
+
+    def raw_body
+      @raw_body ||= @response.body
+    end
+
+  end
+
+end