require 'excon' module Gitlab module StorageCheck class GitlabCaller def initialize(options) @options = options end def call! Gitlab::StorageCheck::Response.new(get_response) rescue Errno::ECONNREFUSED, Excon::Error # Server not ready, treated as invalid response. Gitlab::StorageCheck::Response.new(nil) end def get_response scheme, *other_parts = URI.split(@options.target) socket_path = if scheme == 'unix' other_parts.compact.join end connection = Excon.new(@options.target, socket: socket_path) connection.post(path: Gitlab::StorageCheck::ENDPOINT, headers: headers) end def headers @headers ||= begin headers = {} headers['Content-Type'] = headers['Accept'] = 'application/json' headers['TOKEN'] = @options.token if @options.token headers end end end end end