Method: IMGSrc::API#upload

Defined in:
lib/imgsrc.rb

#upload(name, files) ⇒ Object

Upload files to album

Raises:

  • (RuntimeError)


143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'lib/imgsrc.rb', line 143

def upload(name, files)
    raise RuntimeError, 'user is not logined (no storage host)' unless @stor_conn
    album = get_album(name)
    uri = "/cli/post.php?#{@Login.map{ |k, v| "#{k}=#{v}" }.join('&')}&album_id=#{album.id}"
    photos = nil
    files.each do |file|    # imgsrc.ru badly handles multi-file uploads (unstable work, unrecoverable errors)
        puts "uploading #{file}..."
        photos, retries = nil, 3
        begin
            photos = do_upload(uri, [file], :nobase64)
        rescue Exception => x
            puts "#{File.basename(file)}: upload failed (#{x.message}), #{retries - 1} retries left"
            retry if (retries -= 1) > 0
            raise UploadError, x.message
        end
    end
    album.photos, album.size = photos, photos.size if photos    # imgsrc returns whole album in response
    pp album
end