class GoodData::Bricks::WarehouseMiddleware

Connects to the warehouse (ADS) and enriches parameters with GoodData::Datawarehouse

Public Instance Methods

call(params) click to toggle source
# File lib/gooddata/bricks/middleware/dwh_middleware.rb, line 15
def call(params)
  if params.key?('ads_client')
    GoodData.logger.info "Setting up ADS connection to #{params['ads_client']['ads_id'] || params['ads_client']['jdbc_url']}"

    username = params['ads_client']['username'] || params['GDC_USERNAME']
    password = params['ads_client']['password'] || params['GDC_PASSWORD']
    instance_id = params['ads_client']['ads_id']
    jdbc_url = params['ads_client']['jdbc_url']
    sst_token = params['ads_client']['sst'] || params['GDC_SST']

    ads = if username.nil? || password.nil?
            GoodData.logger.info 'Using SST for ADS connection'
            GoodData::Datawarehouse.new_instance(
              instance_id: instance_id,
              jdbc_url: jdbc_url,
              sst: sst_token
            )
          else
            GoodData::Datawarehouse.new(
              username,
              password,
              instance_id,
              jdbc_url: jdbc_url
            )
          end
    @app.call(params.merge('ads_client' => ads, :ads_client => ads))
  else
    @app.call(params)
  end
end