Class: GoodData::DataSource::BigQueryConnectionInfo

Inherits:
ConnectionInfo show all
Defined in:
lib/gooddata/models/data_source.rb

Instance Attribute Summary

Attributes inherited from Rest::Object

#client, #json

Instance Method Summary collapse

Methods inherited from ConnectionInfo

#connection_info, #connection_info=

Methods included from Mixin::ObjId

#obj_id

Methods inherited from Rest::Object

client, default_client, #saved?

Methods included from Mixin::DataPropertyReader

#data_property_reader

Methods included from Mixin::DataPropertyWriter

#data_property_writer

Methods included from Mixin::MetaPropertyReader

#metadata_property_reader

Methods included from Mixin::MetaPropertyWriter

#metadata_property_writer

Methods included from Mixin::MetaGetter

#meta

Methods included from Mixin::DataGetter

#data

Methods included from Mixin::RootKeyGetter

#root_key

Methods included from Mixin::ContentGetter

#content

Constructor Details

#initialize(connection_info_json) ⇒ BigQueryConnectionInfo

Returns a new instance of BigQueryConnectionInfo.



487
488
489
# File 'lib/gooddata/models/data_source.rb', line 487

def initialize(connection_info_json)
  @json = connection_info_json[GoodData::DataSource::BIGQUERY]
end

Instance Method Details

#client_emailObject



491
492
493
# File 'lib/gooddata/models/data_source.rb', line 491

def client_email
  @json['authentication']['serviceAccount']['clientEmail'] if @json && @json['authentication'] && @json['authentication']['serviceAccount']
end

#client_email=(new_client_email) ⇒ Object



495
496
497
# File 'lib/gooddata/models/data_source.rb', line 495

def client_email=(new_client_email)
  @json['authentication']['serviceAccount']['clientEmail'] = new_client_email
end

#private_keyObject



499
500
501
# File 'lib/gooddata/models/data_source.rb', line 499

def private_key
  @json['authentication']['serviceAccount']['privateKey'] if @json && @json['authentication'] && @json['authentication']['serviceAccount']
end

#private_key=(new_private_key) ⇒ Object



503
504
505
# File 'lib/gooddata/models/data_source.rb', line 503

def private_key=(new_private_key)
  @json['authentication']['serviceAccount']['privateKey'] = new_private_key
end

#projectObject



507
508
509
# File 'lib/gooddata/models/data_source.rb', line 507

def project
  @json['project']
end

#project=(new_project) ⇒ Object



511
512
513
# File 'lib/gooddata/models/data_source.rb', line 511

def project=(new_project)
  @json['project'] = new_project
end

#schemaObject



515
516
517
# File 'lib/gooddata/models/data_source.rb', line 515

def schema
  @json['schema']
end

#schema=(new_schema) ⇒ Object



519
520
521
# File 'lib/gooddata/models/data_source.rb', line 519

def schema=(new_schema)
  @json['schema'] = new_schema
end

#to_update_payloadObject



523
524
525
526
527
528
529
530
531
532
533
534
535
536
# File 'lib/gooddata/models/data_source.rb', line 523

def to_update_payload
  {
    'bigQuery' => {
      'authentication' => {
        'serviceAccount' => {
          'clientEmail' => client_email,
          'privateKey' => private_key
        }
      },
      'project' => project,
      'schema' => schema
    }
  }
end

#validateObject



538
539
540
541
542
# File 'lib/gooddata/models/data_source.rb', line 538

def validate
  fail 'Data source client email has to be provided' if client_email.nil? || client_email.blank?
  fail 'Data source project has to be provided' if project.nil? || project.blank?
  fail ERROR_MESSAGE_NO_SCHEMA if schema.nil? || schema.blank?
end