Module: Dkdeploy::Php::Helpers::Http
- Defined in:
- lib/dkdeploy/php/helpers/http.rb
Overview
HTTP related helpers
Instance Method Summary collapse
-
#call_file_on_server(filename, server) ⇒ Net::HTTPResponse
Local migrations classes directory.
-
#http_get_with_redirect(url:, limit: 5, verify_mode: OpenSSL::SSL::VERIFY_PEER) ⇒ NET::HTTPResponse
Sends a get request that handles redirects.
Instance Method Details
#call_file_on_server(filename, server) ⇒ Net::HTTPResponse
Local migrations classes directory
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/dkdeploy/php/helpers/http.rb', line 14 def call_file_on_server(filename, server) # Setting up URL to call domain_scheme = server.properties.respond_to?(:domain_scheme) ? server.fetch(:domain_scheme) : 'http' domain = server.properties.respond_to?(:domain) ? server.fetch(:domain) : server.hostname web_server_port = domain_scheme == 'https' ? 443 : 80 # Use server configuration, if exists web_server_port = server.fetch(:web_server_port) if server.properties.respond_to?(:web_server_port) ssl_verify_mode = server.properties.respond_to?(:ssl_verify_mode) ? server.fetch(:ssl_verify_mode) : OpenSSL::SSL::VERIFY_PEER url = URI.parse("#{domain_scheme}://#{domain}").merge("/#{filename}") url.port = web_server_port info "Call URL #{url}" http_get_with_redirect url: url, verify_mode: ssl_verify_mode end |
#http_get_with_redirect(url:, limit: 5, verify_mode: OpenSSL::SSL::VERIFY_PEER) ⇒ NET::HTTPResponse
Sends a get request that handles redirects
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/dkdeploy/php/helpers/http.rb', line 36 def http_get_with_redirect(url:, limit: 5, verify_mode: OpenSSL::SSL::VERIFY_PEER) limit = Integer(limit) raise ArgumentError, 'limit cannot be negative' if limit < 0 raise 'too many HTTP redirects' if limit.zero? # configure Net::HTTP http = Net::HTTP.new(url.host, url.port) http.open_timeout = fetch :http_open_timeout http.read_timeout = fetch :http_read_timeout if url.scheme == 'https' http.use_ssl = true http.verify_mode = verify_mode end request = Net::HTTP::Get.new(url.path) # build request response = http.request(request) # call url if response.is_a? Net::HTTPRedirection # Does not handle multiple redirects. Code/idea from http://stackoverflow.com/a/7210600/1796645 location = URI.parse(response.header['location']) info "redirected to #{location}" response = http_get_with_redirect(url: location, limit: limit - 1, verify_mode: verify_mode) end response end |