15. ruby - リンクチェック - openuri.rb 外部ドキュメントのリカバリ

 
15.1 外部ドキュメントのリカバリ

15.1 外部ドキュメントのリカバリ

 fetch.rb で

html = open(uri).read
 のみであるとエラーになるケースが多々あるので、Net::HTTP でパラメータも分けて取得するようにしました。
=begin

  open(uri).read ではエラーになるものが多いので、細かくしてみる
  本クラスへの引数の URI は encode・parse 済
  例外は上位にキャッチさせる

=end

require('pry')
require('uri')
require('open-uri')
require('searchName')
require('exceptlog.rb')

class Openuri
  def initialize()
  end

  def execute(uri)
    http = Net::HTTP::new(uri.host, uri.port)

    if (uri.port == 443)
      http.use_ssl = true
      http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    end

    hash = Hash.new

    ARGV[1..-1].each do | param |
      array = param.split('=')
      hash[array[0]] = array[1]
    end

    if (hash.size <= 0)
      get = Net::HTTP::Get::new(uri.path)

      response = http.start do | value |
        value.request(get)
      end
    else
      post = Net::HTTP::Post::new(uri.path)

      post.set_form_data(hash, ';')

      response = http.start do | value |
        value.request(post)
      end
    end

    return response.body;
  end
end