class GoodData::Bricks::GoodDataMiddleware

Constants

DEFAULT_HOSTNAME
DEFAULT_PROTOCOL

Public Instance Methods

call(params) click to toggle source
# File lib/gooddata/bricks/middleware/gooddata_middleware.rb, line 15
def call(params)
  # Convert possible jruby hash to plain hash
  params = params.to_hash

  # Transform keys
  params = GoodData::Helpers.deep_stringify_keys(params)

  # Set logger
  logger = params['GDC_LOGGER']
  GoodData.logger = logger
  server = "#{params['CLIENT_GDC_PROTOCOL'] || DEFAULT_PROTOCOL}://#{params['CLIENT_GDC_HOSTNAME'] || DEFAULT_HOSTNAME}"
  opts = {
    server: server,
    verify_ssl: params['GDC_VERIFY_SSL'].to_b,
    username: params['GDC_USERNAME'],
    password: params['GDC_PASSWORD'],
    sst_token: params['GDC_SST']
  }
  # Connect Client
  client = GoodData.connect(opts)

  opts = params['development_client']
  development_client = if opts
                         GoodData.connect(GoodData::Helpers.deep_symbolize_keys(opts))
                       else
                         client
                       end

  new_params = {
    'GDC_GD_CLIENT' => client,
    'development_client' => development_client
  }

  if params['GDC_PROJECT_ID']
    new_params['gdc_project'] = GoodData.project = client.projects(params['GDC_PROJECT_ID'])
  end

  returning_value = @app.call(params.merge(new_params))
  begin
    client.disconnect
  rescue
    puts 'Tried to disconnect. Was unsuccessful. Proceeding anyway.'
  end
  returning_value
end