Class: Remi::DataSource::Salesforce
- Inherits:
-
Object
- Object
- Remi::DataSource::Salesforce
show all
- Includes:
- Remi::DataSource, DataStub
- Defined in:
- lib/remi/cucumber/data_source.rb,
lib/remi/data_source/salesforce.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
#feild_symbolizer
#df=
Methods included from DataStub
#empty_stub_df, #stub_df, #stub_row_array, #stub_values
Constructor Details
#initialize(fields: {}, object:, query:, credentials:, api: :bulk, logger: Remi::Settings.logger) ⇒ Salesforce
Returns a new instance of Salesforce.
6
7
8
9
10
11
12
13
|
# File 'lib/remi/data_source/salesforce.rb', line 6
def initialize(fields: {}, object:, query:, credentials:, api: :bulk, logger: Remi::Settings.logger)
@fields = fields
@sfo = object
@query = query
@credentials = credentials
@api = api
@logger = logger
end
|
Instance Attribute Details
#fields ⇒ Object
Returns the value of attribute fields.
15
16
17
|
# File 'lib/remi/data_source/salesforce.rb', line 15
def fields
@fields
end
|
#raw_result ⇒ Object
Returns the value of attribute raw_result.
16
17
18
|
# File 'lib/remi/data_source/salesforce.rb', line 16
def raw_result
@raw_result
end
|
Instance Method Details
#df ⇒ Object
73
74
75
|
# File 'lib/remi/data_source/salesforce.rb', line 73
def df
@dataframe ||= to_dataframe
end
|
22
23
24
|
# File 'lib/remi/data_source/salesforce.rb', line 22
def
@raw_result = sf_bulk.query(@sfo, @query, 10000)
end
|
#field_symbolizer ⇒ Object
18
19
20
|
# File 'lib/remi/data_source/salesforce.rb', line 18
def field_symbolizer
Remi::FieldSymbolizers[:salesforce]
end
|
#restforce_client ⇒ Object
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/remi/data_source/salesforce.rb', line 32
def restforce_client
@restforce_client ||= begin
client = Restforce.new(@credentials)
client.query('SELECT Id FROM Contact LIMIT 1')
client
end
end
|
#sf_bulk ⇒ Object
43
44
45
|
# File 'lib/remi/data_source/salesforce.rb', line 43
def sf_bulk
@sf_bulk ||= SalesforceBulkApi::Api.new(restforce_client).tap { |o| o.connection.set_status_throttle(5) }
end
|
#to_dataframe ⇒ Object
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/remi/data_source/salesforce.rb', line 47
def to_dataframe
@logger.info "Converting salesforce query results to a dataframe"
hash_array = {}
raw_result['batches'].each do |batch|
next unless batch['response']
batch['response'].each do |record|
record.each do |field, value|
next if ['xsi:type','type'].include? field
(hash_array[field.to_sym] ||= []) << case value.first
when Hash
value.first["xsi:nil"] == "true" ? nil : value.first
else
value.first
end
end
end
batch['response'] = nil
end
Daru::DataFrame.new hash_array, order: hash_array.keys
end
|