Sha256: c16e53d6839f29ae9ce5434e494555d04e5cf64d10ce3d416ea532278ab93606

Contents?: true

Size: 1.53 KB

Versions: 2

Compression:

Stored size: 1.53 KB

Contents

require "json"
require "hypernova/plugin_helper"

class Hypernova::Response
  include Hypernova::PluginHelper

  def initialize(request)
    @request = request
  end

  # Example parsed body with no error:
  # {
  #   "0" => {
  #     "name" => "hello_world.js",
  #     "html" => "<div>Hello World</div>",
  #     "meta" => {},
  #     "duration" => 100,
  #     "statusCode" => 200,
  #     "success" => true,
  #     "error" => nil,
  #   }
  # }

  # Example parsed body with error:
  # {
  #   "0" => {
  #     "html" => "<p>Error!</p>",
  #     "name" => "goodbye_galaxy.js",
  #     "meta" => {},
  #     "duration" => 100,
  #     "statusCode" => 500,
  #     "success" => false,
  #     "error" => {
  #       "name" => "TypeError",
  #       "message" => "Cannot read property 'forEach' of undefined",
  #       "stack" => [
  #         "TypeError: Cannot read property 'forEach' of undefined",
  #         "at TravelerLanding.componentWillMount",
  #         "at ReactCompositeComponentMixin.mountComponent",
  #       ],
  #     },
  #   }
  # }
  def parsed_body
    response = parse_body
    # This enables backward compatibility with the old server response format.
    # In the new format, the response results are contained within a "results" key. The top level
    # hash contains a "success" and "error" which relates to the whole batch.
    response = response["results"] || response
    after_response(response, response)
  end

  private

  attr_reader :request

  def body
    request.body
  end

  def parse_body
    JSON.parse(body)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hypernova-1.0.1 lib/hypernova/response.rb
hypernova-1.0.0 lib/hypernova/response.rb