Sha256: 639ba267850ded0650b40532cf2d1372ea09aaebe6dd445a68c906d7c5c1c451

Contents?: true

Size: 688 Bytes

Versions: 9

Compression:

Stored size: 688 Bytes

Contents

require 'multi_json'
require 'json-schema'

module Rakuna
  module Content
    # Mixin to add JSON support to resources
    module JSON
      def content_types_provided
        [['application/json', :to_json]]
      end

      def content_types_accepted
        [['application/json', :from_json]]
      end

      def from_json
        input
      end

      def payload
        @payload ||= MultiJson.load request.body.to_s
      end

      def to_json
        MultiJson.dump output
      end

      def valid?
        return true unless self.methods.include? validation_schema
        @valid ||= JSON::Validator.validate validation_schema, request.body.to_s
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
rakuna-0.7.3 lib/rakuna/content/json.rb
rakuna-0.7.2 lib/rakuna/content/json.rb
rakuna-0.7.1 lib/rakuna/content/json.rb
rakuna-0.7.0 lib/rakuna/content/json.rb
rakuna-0.6.0 lib/rakuna/content/json.rb
rakuna-0.5.0 lib/rakuna/content/json.rb
rakuna-0.4.0 lib/rakuna/content/json.rb
rakuna-0.3.0 lib/rakuna/content/json.rb
rakuna-0.2.0 lib/rakuna/content/json.rb