Sha256: 9a66f2013055dd3529f827466bd3dbd5dd1c29098c554d2911d6f4cfc3f72dc0

Contents?: true

Size: 841 Bytes

Versions: 4

Compression:

Stored size: 841 Bytes

Contents

module ApiResource
  module Formats

    autoload :FileUploadFormat, 'api_resource/formats/file_upload_format'
    autoload :JsonFormat, 'api_resource/formats/json_format'
    autoload :XmlFormat, 'api_resource/formats/xml_format'


    # Lookup the format class from a mime type reference symbol. Example:
    #
    #   ActiveResource::Formats[:xml]  # => ActiveResource::Formats::XmlFormat
    #   ActiveResource::Formats[:json] # => ActiveResource::Formats::JsonFormat
    def self.[](mime_type_reference)
      format_name = ActiveSupport::Inflector.camelize(mime_type_reference.to_s) + "Format"
      begin
        ApiResource::Formats.const_get(format_name)
      rescue NameError => e
        raise BadFormat.new("#{mime_type_reference} is not a valid format")
      end
    end

    class BadFormat < StandardError
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
api_resource-0.6.25 lib/api_resource/formats.rb
api_resource-0.6.24 lib/api_resource/formats.rb
api_resource-0.6.23 lib/api_resource/formats.rb
api_resource-0.6.22 lib/api_resource/formats.rb