+require 'ethon'
+
+module OSDN; module CLI; module Command
+ class FrsUpload < Base
+ @@_show_progress = false
+ def self._show_progress
+ @@_show_progress
+ end
+ def self._show_progress=(v)
+ need_reset = (!!@@_show_progress != !!v)
+ @@_show_progress = v
+ need_reset and _reset_all_typhoeus_pool
+ end
+
+ def self._reset_all_typhoeus_pool
+ first_easyid = nil
+ while true
+ e = Typhoeus::Pool.get
+ Typhoeus::Pool.release(e)
+ e.__id__ == first_easyid and break
+ first_easyid ||= e.__id__
+ end
+ end
+ end
+end; end; end
+
+module Ethon
+ class Easy
+ module Callbacks
+ alias_method :set_callbacks_orig, :set_callbacks
+ def set_callbacks
+ set_callbacks_orig
+ if OSDN::CLI::Command::FrsUpload._show_progress
+ Curl.set_option(:noprogress, false, handle)
+ else
+ Curl.set_option(:noprogress, true, handle)
+ end
+ end
+ end
+ end
+end