Sha256: fcb5c00c6c1a78f98b4ad1672650dc54e98b02d0be01b3c3456231ac1800f1b5

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module LedgerSync
  module TemplateLedger
    class Client
      include Ledgers::Client::Mixin

      ROOT_URI = 'https://api.template_ledger.com'
      DEFAULT_HEADERS = { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }.freeze

      attr_reader :api_key

      def initialize(args = {})
        @api_key = args.fetch(:api_key)
      end

      def find(path:)
        url = File.join(ROOT_URI, path)

        request(
          headers: DEFAULT_HEADERS,
          method: :get,
          url: url
        )
      end

      def post(path:, payload:)
        url = File.join(ROOT_URI, path)

        request(
          headers: DEFAULT_HEADERS,
          method: :post,
          body: payload,
          url: url
        )
      end

      def request(method:, url:, body: nil, headers: {})
        LedgerSync::Ledgers::Request.new(
          client: self,
          body: body,
          headers: headers,
          method: method,
          url: url
        ).perform
      end

      def self.new_from_env(**override)
        new(
          {
            api_key: ENV.fetch('TEMPLATE_LEDGER_API_KEY')
          }.merge(override)
        )
      end

      def self.ledger_attributes_to_save
        %i[api_key]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ledger_sync-template_ledger-0.1.0 lib/ledger_sync/template_ledger/client.rb