OSDN Git Service

25fea5ca0ef34f940caf201e5b0fee0e4f2ae82a
[osdn-codes/osdn-cli.git] / lib / osdn / cli / overrides.rb
1 require 'typhoeus/easy_factory'
2
3 module Typhoeus
4   class EasyFactory
5     alias_method :get_orig, :get
6     def get(*args)
7       easy = get_orig(*args)
8
9       if ENV['CURL_CA_BUNDLE']
10         Ethon::Curl.set_option(:cainfo, ENV['CURL_CA_BUNDLE'], easy.handle)
11       else
12         ["#{ENV['HOME']}/.config/osdn/ca-certificates.crt"] + %w(
13            /usr/local/share/curl/curl-ca-bundle.crt
14            /usr/share/curl/ca-bundle.crt
15            /etc/ssl/certs/ca-certificates.crt
16            /etc/ssl/certs/ca-certificates.pem
17            /etc/pki/tls/certs/ca-bundle.crt
18            /etc/pki/tls/certs/ca-bundle.pem
19            /etc/ssl/ca-bundle.pem
20         ).each do |ca|
21           next unless File.exists? ca
22           Ethon::Curl.set_option(:cainfo, ca, easy.handle)
23         end
24       end
25
26       if OSDN::CLI._show_progress
27         Ethon::Curl.set_option(:noprogress, false, easy.handle)
28       else
29         Ethon::Curl.set_option(:noprogress, true, easy.handle)
30       end
31
32       if OSDN::CLI._rate_limit
33         Ethon::Curl.set_option(:max_send_speed_large, OSDN::CLI._rate_limit, easy.handle)
34         Ethon::Curl.set_option(:max_recv_speed_large, OSDN::CLI._rate_limit, easy.handle)
35       end
36
37       easy
38     end
39   end
40 end