J'ai donc un formulaire qui permet de soumettre plusieurs images à la fois. J'ai également écrit un wrapper pour l'API Imgur dans Ruby. Mon problème est que puisque cela se produit de manière complètement synchrone, cela prend une éternité et expire même pour 10 images. Je me demande s'il y a une meilleure façon de traiter plus d'images. Tout ce que je peux penser est de soumettre de manière asynchrone des formulaires avec une image chacun, mais je ne suis pas sûr si c'est une bonne idée ou si elle ne fera que retarder d'autres demandes.Le téléchargement de plusieurs images vers l'API Imgur avec Ruby est lent
class MissionsController < ApplicationController
def add_images
image_ids = params[:images].collect do |image|
Image.with_imgur(
title: "#{@mission.trip.name} - #{current_user.username}",
image: image,
album_id: @mission.album.imgur_id,
user_id: current_user.id,
trip_id: @mission.trip_id
).imgur_id
end
end
end
class Image < ActiveRecord::Base
def self.with_imgur(options)
trip_id = options.delete(:trip_id)
user_id = options.delete(:user_id)
image = Imgur::Image.create(options)
create(
imgur_id: image["id"],
link: image["link"],
trip_id: trip_id,
user_id: user_id
)
end
end
https://github.com/tomprats/toms-missions/blob/master/app/models/imgur.rb#L116
class Imgur::Image < Base
def self.create(options)
url = "https://api.imgur.com/3/image"
params = {
image: options[:image],
album: options[:album_id],
type: options[:type] || "file", # "file" || "base64" || "URL"
title: options[:title],
description: options[:description]
}
api_post(url, params).body["data"]
end
end