Method: FuseClient::Configuration#server_url

Defined in:
lib/fuse_client/configuration.rb

#server_url(index, variables = {}, servers = nil) ⇒ Object

Returns URL based on server settings

Parameters:

  • index

    array index of the server settings

  • variables (defaults to: {})

    hash of variable and the corresponding value



329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
# File 'lib/fuse_client/configuration.rb', line 329

def server_url(index, variables = {}, servers = nil)
  servers = server_settings if servers == nil

  # check array index out of bound
  if (index < 0 || index >= servers.size)
    fail ArgumentError, "Invalid index #{index} when selecting the server. Must be less than #{servers.size}"
  end

  server = servers[index]
  url = server[:url]

  return url unless server.key? :variables

  # go through variable and assign a value
  server[:variables].each do |name, variable|
    if variables.key?(name)
      if (!server[:variables][name].key?(:enum_values) || server[:variables][name][:enum_values].include?(variables[name]))
        url.gsub! "{" + name.to_s + "}", variables[name]
      else
        fail ArgumentError, "The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}."
      end
    else
      # use default value
      url.gsub! "{" + name.to_s + "}", server[:variables][name][:default_value]
    end
  end

  url
end