class CarrierWave::DataUri::Parser

Attributes

data[R]
encoder[R]
extension[R]
type[R]

Public Class Methods

new(data_uri) click to toggle source
# File lib/carrierwave_data_uri/parser.rb, line 6
def initialize(data_uri)
  uri = URI::Data.new data_uri
  @type = uri.content_type
  @extension = @type.split('/')[1]
  @data = uri.data
rescue URI::InvalidURIError
  raise InvalidData, 'Cannot parse data'
end

Public Instance Methods

binary_data() click to toggle source
# File lib/carrierwave_data_uri/parser.rb, line 15
def binary_data
  @data
end
to_file(options = {}) click to toggle source
# File lib/carrierwave_data_uri/parser.rb, line 19
def to_file(options = {})
  @file ||= begin
    file = Tempfile.new ['data_uri_upload', ".#{extension}"]
    file.binmode
    file << binary_data
    file.rewind
    file.original_filename = options[:original_filename]
    file.content_type = options[:content_type]
    file
  end
end