Автоматически получить порт по умолчанию для запроса - PullRequest
0 голосов
/ 27 февраля 2019

В настоящее время у меня есть следующий код:

    if protocol == 'http'
      port = Net::HTTP.http_default_port()
      endpoint = Net::HTTP.new(host, port)
    else
      port = Net::HTTP.https_default_port()
      endpoint = Net::HTTP.new(host, port)
      endpoint.use_ssl = true
    end
    request = Net::HTTP::Get.new("/item/#{item}")
    request['Authorization'] = "Bearer #{key}"
    response = endpoint.request(request)

Есть ли способ упростить это, чтобы мне не приходилось выбирать порт по умолчанию для использования для себя?

1 Ответ

0 голосов
/ 27 февраля 2019

Вы бы использовали динамическую диспетчеризацию ruby.

port = Net::HTTP.send("#{protocol}_default_port")
endpoint = Net::HTTP.new(host, port)
endpoint.use_ssl = protocol == 'https'

request = Net::HTTP::Get.new("/item/#{item}")
request['Authorization'] = "Bearer #{key}"
response = endpoint.request(request)

ИЛИ более элегантным способом:

path = URI('https://example.com')

Net::HTTP.start(path.host, path.port, use_ssl: path.scheme == 'https') do |http|
  request = Net::HTTP::Get.new path
  request['Authorization'] = "Bearer #{key}"
  response = http.request(request)
end
...