Sha256: 448e6ad16638bf41f67ffb88f7e0b1906063db0652f3d6f003366c5b8fa8b176

Contents?: true

Size: 903 Bytes

Versions: 1

Compression:

Stored size: 903 Bytes

Contents

require 'net/http'
require 'uri'
require 'json'

module Chronicle
  module ETL
    class RestLoader < Chronicle::ETL::Loader
      def initialize( options={} )
        super(options)
      end

      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'

        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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
chronicle-etl-0.2.4 lib/chronicle/etl/loaders/rest_loader.rb