class CarrierWave::Storage::Flickr::File

Public Class Methods

new(uploader, base, info = nil) click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 64
def initialize(uploader, base, info = nil)
  @uploader = uploader
  @base = base
  @info = FlickRaw::Response.build(info, 'photo') if info
end

Public Instance Methods

delete() click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 92
def delete
  flickr.photos.delete 'photo_id' => @info['id']
end
path() click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 74
def path
  url
end
store(new_file) click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 78
def store(new_file)
  file = new_file.to_file

  photo_id = flickr.upload_photo file, **store_options

  add_to_album(photo_id) if album.present?

  apply_license(photo_id, license_id) if license_id.present?

  file.close if file && !file.closed?

  @info = flickr.photos.getInfo('photo_id' => photo_id)
end
url(format: :original) click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 70
def url(format: :original)
  FlickRaw.public_send(format_getter(format), @info) if @info
end

Private Instance Methods

add_to_album(photo_id) click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 98
def add_to_album(photo_id)
  flickr.photosets.addPhoto(
    'photo_id' => photo_id,
    'photoset_id' => album)
end
album() click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 104
def album
  @uploader.flickr_credentials[:album]
end
apply_license(photo_id, license_id) click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 108
def apply_license(photo_id, license_id)
  flickr.photos.licenses.setLicense(
    'license_id' => license_id,
    'photo_id' => photo_id)
end
format_getter(format) click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 129
def format_getter(format)
  {
    square:       :url_s,
    large_square: :url_q,
    thumbnail:    :url_t,
    small:        :url_m,
    small_320:    :url_n,
    medium:       :url,
    medium_640:   :url_z,
    medium_800:   :url_c,
    large:        :url_b,
    original:     :url_o
  }.fetch(format)
end
license_id() click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 114
def license_id
  @uploader.flickr_credentials[:license_id]
end
model() click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 125
def model
  @uploader.model
end
store_options() click to toggle source
# File lib/carrierwave/storage/flickr.rb, line 118
def store_options
  {}.tap do |options|
    options[:title] = model.title if model.respond_to?(:title)
    options[:description] = model.description if model.respond_to?(:description)
  end.reject { |k, v| v.blank? }
end