Sha256: cdcd806250a733ac96bd47d258e1d323c5ff5a683c0fb602e56327c9a7d77927

Contents?: true

Size: 991 Bytes

Versions: 41

Compression:

Stored size: 991 Bytes

Contents

module Her
  module Middleware
    # This middleware expects the resource/collection data to be contained in the `data`
    # key of the JSON object
    class JsonApiParser < ParseJSON

      # Parse the response body
      #
      # @param [String] body The response body
      # @return [Mixed] the parsed response
      # @private
      def parse(body)
        json = parse_json(body)

        {
          :data => json[:data] || {},
          :errors => json[:errors] || [],
          :metadata => json[:meta] || {},
        }
      end

      # This method is triggered when the response has been received. It modifies
      # the value of `env[:body]`.
      #
      # @param [Hash] env The response environment
      # @private
      def on_complete(env)
        env[:body] = case env[:status]
                     when 204, 304
                       parse('{}')
                     else
                       parse(env[:body])
                     end
      end
    end
  end
end

Version data entries

41 entries across 41 versions & 2 rubygems

Version Path
test_track_rails_client-8.1.1 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-8.1.0 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-8.0.0 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-7.1.2 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-7.1.1 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-7.0.0 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-6.0.0 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-5.0.1 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-5.0.0 vendor/gems/her/lib/her/middleware/json_api_parser.rb
her-1.1.1 lib/her/middleware/json_api_parser.rb
test_track_rails_client-4.0.2 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-4.0.1 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-4.0.0 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-4.0.0.rc3 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-4.0.0.rc2 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-4.0.0.alpha35 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-4.0.0.alpha34 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-4.0.0.alpha33 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-4.0.0.alpha32 vendor/gems/her/lib/her/middleware/json_api_parser.rb
test_track_rails_client-4.0.0.alpha31 vendor/gems/her/lib/her/middleware/json_api_parser.rb