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