def sign_up(data)
begin
response = @client.post(
@url.merge(@url.path + '/capistrano/sign-up'),
{'Content-Type' => 'application/json',
'User-Agent' => user_agent,
},
data.to_json,
)
rescue StandardError => e
raise FatalError.new(e)
end
response_code = response.code.to_i
if response_code >= 200 && response_code < 300
JSON.parse(response.body, symbolize_names: true)
elsif response_code == 422
data = JSON.parse(response.body, symbolize_names: true)
if data.fetch(:reason, 'ok') == 'invalid'
data
else
raise ProtocolError.new(response)
end
else
raise ProtocolError.new(response)
end
end