lib/chronicle/etl/loaders/rest_loader.rb in chronicle-etl-0.2.3 vs lib/chronicle/etl/loaders/rest_loader.rb in chronicle-etl-0.2.4

- old
+ new

@@ -3,28 +3,31 @@ require 'json' module Chronicle module ETL class RestLoader < Chronicle::ETL::Loader - def initialize(options={}) + def initialize( options={} ) super(options) end - def load(result) + def load(record) + payload = Chronicle::ETL::Utils::JSONAPI.serialize(record) + # have the outer data key that json-api expects + payload = { data: payload } unless payload[:data] + uri = URI.parse("#{@options[:hostname]}#{@options[:endpoint]}") header = { "Authorization" => "Bearer #{@options[:access_token]}", "Content-Type": 'application/json' } + use_ssl = uri.scheme == 'https' - http = Net::HTTP.new(uri.host, uri.port) - request = Net::HTTP::Post.new(uri.request_uri, header) - - obj = {data: result} unless result[:data] - request.body = obj.to_json - - response = http.request(request) + Net::HTTP.start(uri.host, uri.port, use_ssl: use_ssl) do |http| + request = Net::HTTP::Post.new(uri.request_uri, header) + request.body = payload.to_json + http.request(request) + end end end end end