Sha256: a54a187b344825b52f097cd553ffb095033d7378a85549c77641eb19ecb5ebdb
Contents?: true
Size: 1.85 KB
Versions: 2
Compression:
Stored size: 1.85 KB
Contents
require "csv" class Bulkforce module Helper extend self CSV_OPTIONS = { col_sep: ",", quote_char: "\"", force_quotes: true, } def records_to_csv records file_mock = StringIO.new csv_client = CSV.new(file_mock, CSV_OPTIONS) all_headers = [] all_rows = [] records.each do |hash| row = CSV::Row.new([],[],false) to_store = hash.inject({}) do |h, (k, v)| if v == nil || v == "" || v == [] h[k] = "#N/A" else h[k] = v.class == Array ? v.join(";") : v end h end row << to_store all_headers << row.headers all_rows << row end all_headers.flatten!.uniq! csv_client << all_headers all_rows.each do |row| csv_client << row.fields(*all_headers) end file_mock.string end def fetch_instance_from_server_url server_url before_sf = server_url[/^https?:\/\/(.+)\.salesforce\.com/, 1] before_sf.gsub(/-api$/,"") end def attachment_keys records records.map do |record| record.select do |key, value| value.class == File end.keys end.flatten.uniq end def transform_values! records, keys keys.each do |key| records.each do |record| file_handle = record[key] if file_handle file_path = File.absolute_path(file_handle) record .merge!({ key => Bulkforce::Helper.absolute_to_relative_path(file_path,"#") }) yield file_path if block_given? end end end end def absolute_to_relative_path input, replacement input.gsub(/(^C:[\/\\])|(^\/)/,replacement) end def parse_csv csv_string CSV.parse(csv_string, headers: true).map{|r| r.to_hash} end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bulkforce-1.0.1 | lib/bulkforce/helper.rb |
bulkforce-1.0.0 | lib/bulkforce/helper.rb |