class FacebookAds::FieldTypes::UploadFile

Constants

MIME_TYPES

Private Class Methods

acceptable?(value) click to toggle source
# File lib/facebook_ads/field_types/upload_file.rb, line 112
def self.acceptable?(value)
  [File, Tempfile, UploadIO].each do |type|
    return true if value.is_a?(type)
  end

  value.is_a?(String) ? File.exists?(value) : false
end

Public Instance Methods

serialize(value) click to toggle source
# File lib/facebook_ads/field_types/upload_file.rb, line 76
def serialize(value)
  case value
    when String, File, Tempfile
      if value.is_a?(String)
        raise InvalidParameterError, "No such file: #{value}" unless File.exists?(value)
        value = File.new(value)
      end

      ext = File.extname(value.path).gsub(/^./,'')
      category, content_type = content_type_for(ext)

      raise 'This type of file is not supported' unless content_type

      if category == :video
        FacebookAds::VideoIO.new(value, content_type)
      else
        ::UploadIO.new(value, content_type)
      end
    when UploadIO
      value
    # when etc etc TODO Rails/Sinatra Upload
    else
      raise 'Unknown data type this field'
  end
end

Private Instance Methods

content_type_for(ext) click to toggle source
# File lib/facebook_ads/field_types/upload_file.rb, line 103
def content_type_for(ext)
  MIME_TYPES.each do |category, types|
    if type = types[ext]
      return [category, type]
    end
  end
  nil
end