Sha256: dfe1a67b9bb3375e52943a7885c6cf34b65a98a327e4b2d7a8873cfa80bf076f

Contents?: true

Size: 932 Bytes

Versions: 1

Compression:

Stored size: 932 Bytes

Contents

# frozen_string_literal: true

require 'net/http'
require 'uri'
require 'json'
require 'chronicle/serialization'

module Chronicle
  module ETL
    class RestLoader < Chronicle::ETL::Loader
      register_connector do |r|
        r.identifier = :rest
        r.description = 'a REST endpoint'
      end

      setting :hostname, required: true
      setting :endpoint, required: true
      setting :access_token

      def load(payload)
        uri = URI.parse("#{@config.hostname}#{@config.endpoint}")

        header = {
          'Authorization' => "Bearer #{@config.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.6.1 lib/chronicle/etl/loaders/rest_loader.rb