40 lines
1.1 KiB
Ruby
40 lines
1.1 KiB
Ruby
|
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
|