OSDN Git Service

Add bandwidth limit option.
authorTatsuki Sugiura <sugi@nemui.org>
Tue, 19 Jul 2016 10:41:19 +0000 (19:41 +0900)
committerTatsuki Sugiura <sugi@nemui.org>
Tue, 19 Jul 2016 10:41:19 +0000 (19:41 +0900)
lib/osdn/cli.rb
lib/osdn/cli/command/frs_upload.rb
lib/osdn/cli/command/relfile.rb
lib/osdn/cli/overrides.rb

index fdc18d1..47962cd 100644 (file)
@@ -30,8 +30,17 @@ module OSDN
       @@_show_progress = v
     end
 
       @@_show_progress = v
     end
 
+    @@_rate_limit = nil
+    def _rate_limit
+      @@_rate_limit
+    end
+    def _rate_limit=(v)
+      @@_rate_limit = v
+    end
+
     module_function :client_id, :client_secret,
     module_function :client_id, :client_secret,
-                    :_show_progress, :_show_progress=
+                    :_show_progress, :_show_progress=,
+                    :_rate_limit, :_rate_limit=
     
     module Command
       autoload :Login,     'osdn/cli/command/login'
     
     module Command
       autoload :Login,     'osdn/cli/command/login'
index 601964f..b6a473a 100644 (file)
@@ -12,6 +12,7 @@ module OSDN; module CLI; module Command
       puts "      --force-digest         Calc local file digest forcely"
       puts "      --progress             Force to show upload progress"
       puts "      --no-progress          Force to hide upload progress"
       puts "      --force-digest         Calc local file digest forcely"
       puts "      --progress             Force to show upload progress"
       puts "      --no-progress          Force to hide upload progress"
+      puts "      --bwlimit=RATE         Limit bandwidth (in KB)"
     end
 
     def run
     end
 
     def run
@@ -25,6 +26,7 @@ module OSDN; module CLI; module Command
         [ '--force-digest', GetoptLong::NO_ARGUMENT],
         [ '--progress', GetoptLong::NO_ARGUMENT],
         [ '--no-progress', GetoptLong::NO_ARGUMENT],
         [ '--force-digest', GetoptLong::NO_ARGUMENT],
         [ '--progress', GetoptLong::NO_ARGUMENT],
         [ '--no-progress', GetoptLong::NO_ARGUMENT],
+        [ '--bwlimit', GetoptLong::REQUIRED_ARGUMENT ],
       )
       opts.each do |opt, arg|
         case opt
       )
       opts.each do |opt, arg|
         case opt
@@ -51,6 +53,9 @@ module OSDN; module CLI; module Command
           @show_progress = true
         when '--no-progress'
           @show_progress = false
           @show_progress = true
         when '--no-progress'
           @show_progress = false
+        when '--bwlimit'
+          arg.to_i != 0 and
+            OSDN::CLI._rate_limit = arg.to_i * 1024
         end
       end
 
         end
       end
 
index ca2b4e8..b7ad732 100644 (file)
@@ -17,6 +17,7 @@ module OSDN; module CLI; module Command
       puts "      --force-digest         Calc local file digest forcely"
       puts "      --progress             Force to show upload progress"
       puts "      --no-progress          Force to hide upload progress"
       puts "      --force-digest         Calc local file digest forcely"
       puts "      --progress             Force to show upload progress"
       puts "      --no-progress          Force to hide upload progress"
+      puts "      --bwlimit=RATE         Limit bandwidth (in KB)"
     end
 
     def self.description
     end
 
     def self.description
@@ -33,6 +34,7 @@ module OSDN; module CLI; module Command
         [ '--force-digest', GetoptLong::NO_ARGUMENT],
         [ '--progress', GetoptLong::NO_ARGUMENT],
         [ '--no-progress', GetoptLong::NO_ARGUMENT],
         [ '--force-digest', GetoptLong::NO_ARGUMENT],
         [ '--progress', GetoptLong::NO_ARGUMENT],
         [ '--no-progress', GetoptLong::NO_ARGUMENT],
+        [ '--bwlimit', GetoptLong::REQUIRED_ARGUMENT ],
       )
       opts.each do |opt, arg|
         case opt
       )
       opts.each do |opt, arg|
         case opt
@@ -60,6 +62,9 @@ module OSDN; module CLI; module Command
           @show_progress = true
         when '--no-progress'
           @show_progress = false
           @show_progress = true
         when '--no-progress'
           @show_progress = false
+        when '--bwlimit'
+          arg.to_i != 0 and
+            OSDN::CLI._rate_limit = arg.to_i * 1024
         end
       end
     end
         end
       end
     end
index 6bb7b42..25fea5c 100644 (file)
@@ -5,6 +5,7 @@ module Typhoeus
     alias_method :get_orig, :get
     def get(*args)
       easy = get_orig(*args)
     alias_method :get_orig, :get
     def get(*args)
       easy = get_orig(*args)
+
       if ENV['CURL_CA_BUNDLE']
         Ethon::Curl.set_option(:cainfo, ENV['CURL_CA_BUNDLE'], easy.handle)
       else
       if ENV['CURL_CA_BUNDLE']
         Ethon::Curl.set_option(:cainfo, ENV['CURL_CA_BUNDLE'], easy.handle)
       else
@@ -21,12 +22,18 @@ module Typhoeus
           Ethon::Curl.set_option(:cainfo, ca, easy.handle)
         end
       end
           Ethon::Curl.set_option(:cainfo, ca, easy.handle)
         end
       end
+
       if OSDN::CLI._show_progress
         Ethon::Curl.set_option(:noprogress, false, easy.handle)
       if OSDN::CLI._show_progress
         Ethon::Curl.set_option(:noprogress, false, easy.handle)
-        
       else
         Ethon::Curl.set_option(:noprogress, true, easy.handle)
       end
       else
         Ethon::Curl.set_option(:noprogress, true, easy.handle)
       end
+
+      if OSDN::CLI._rate_limit
+        Ethon::Curl.set_option(:max_send_speed_large, OSDN::CLI._rate_limit, easy.handle)
+        Ethon::Curl.set_option(:max_recv_speed_large, OSDN::CLI._rate_limit, easy.handle)
+      end
+
       easy
     end
   end
       easy
     end
   end