module Executrix::Http

Public Instance Methods

add_batch(*args) click to toggle source
# File lib/executrix/http.rb, line 24
def add_batch *args
  r = Http::Request.add_batch(*args)
  process_xml_response(nori.parse(process_http_request(r)))
end
add_file_upload_batch(instance, session_id, job_id, data, api_version) click to toggle source
# File lib/executrix/http.rb, line 44
def add_file_upload_batch instance, session_id, job_id, data, api_version
  headers = {
    'Content-Type' => 'zip/csv',
    'X-SFDC-Session' => session_id}
  r = Http::Request.new(
    :post,
    Http::Request.generic_host(instance),
    "/services/async/#{api_version}/job/#{job_id}/batch",
    data,
    headers)
  process_xml_response(nori.parse(process_http_request(r)))
end
close_job(*args) click to toggle source
# File lib/executrix/http.rb, line 19
def close_job *args
  r = Http::Request.close_job(*args)
  process_xml_response(nori.parse(process_http_request(r)))
end
create_job(*args) click to toggle source
# File lib/executrix/http.rb, line 14
def create_job *args
  r = Http::Request.create_job(*args)
  process_xml_response(nori.parse(process_http_request(r)))
end
login(*args) click to toggle source
# File lib/executrix/http.rb, line 9
def login *args
  r = Http::Request.login(*args)
  process_soap_response(nori.parse(process_http_request(r)))
end
process_http_request(r) click to toggle source
# File lib/executrix/http.rb, line 57
def process_http_request(r)
  http = Net::HTTP.new(r.host, 443)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  http_request = Net::HTTP.
  const_get(r.http_method.capitalize).
    new(r.path, r.headers)
  http_request.body = r.body if r.body
  http.request(http_request).body
end
query_batch(*args) click to toggle source
# File lib/executrix/http.rb, line 29
def query_batch *args
  r = Http::Request.query_batch(*args)
  process_xml_response(nori.parse(process_http_request(r)))
end
query_batch_result_data(*args) click to toggle source
# File lib/executrix/http.rb, line 39
def query_batch_result_data *args
  r = Http::Request.query_batch_result_data(*args)
  normalize_csv(process_http_request(r))
end
query_batch_result_id(*args) click to toggle source
# File lib/executrix/http.rb, line 34
def query_batch_result_id *args
  r = Http::Request.query_batch_result_id(*args)
  process_xml_response(nori.parse(process_http_request(r)))
end

Private Instance Methods

nori() click to toggle source
# File lib/executrix/http.rb, line 69
def nori
  Nori.new(
    :advanced_typecasting => true,
    :strip_namespaces => true,
    :convert_tags_to => lambda { |tag| tag.snakecase.to_sym })
end
normalize_csv(res) click to toggle source
# File lib/executrix/http.rb, line 84
def normalize_csv res
  res.gsub(/\n\s+/, "\n")
end
process_soap_response(res) click to toggle source
# File lib/executrix/http.rb, line 88
def process_soap_response res
  raw_result = res.fetch(:body){res.fetch(:envelope).fetch(:body)}
  raise raw_result[:fault][:faultstring] if raw_result[:fault]

  login_result = raw_result[:login_response][:result]
  instance = Helper.fetch_instance_from_server_url(login_result[:server_url])
  login_result.merge(instance: instance)
end
process_xml_response(res) click to toggle source
# File lib/executrix/http.rb, line 76
def process_xml_response res
  if res[:error]
    raise "#{res[:error][:exception_code]}: #{res[:error][:exception_message]}"
  end

  res.values.first
end