Sha256: 75a9e491babab301e21d77c5761180e08372c16b5f006b8d2cc255531825925a

Contents?: true

Size: 711 Bytes

Versions: 13

Compression:

Stored size: 711 Bytes

Contents

# frozen_string_literal: true

require "dry/monads"

module Tana
  module API
    # A low-level API client for making basic HTTP requests.
    class Client
      include Import[:configuration, :http]
      include Dry::Monads[:result]

      def post path, body = nil, **parameters
        call __method__, path, json: body, params: parameters
      end

      private

      def call method, path, **options
        http.auth("Bearer #{configuration.token}")
            .headers(accept: configuration.accept)
            .public_send(method, "#{configuration.url}/#{path}", options)
            .then { |response| response.status.success? ? Success(response) : Failure(response) }
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
tana-0.13.0 lib/tana/api/client.rb
tana-0.12.0 lib/tana/api/client.rb
tana-0.11.0 lib/tana/api/client.rb
tana-0.10.0 lib/tana/api/client.rb
tana-0.9.0 lib/tana/api/client.rb
tana-0.8.0 lib/tana/api/client.rb
tana-0.7.0 lib/tana/api/client.rb
tana-0.6.0 lib/tana/api/client.rb
tana-0.4.0 lib/tana/api/client.rb
tana-0.3.0 lib/tana/api/client.rb
tana-0.2.0 lib/tana/api/client.rb
tana-0.1.0 lib/tana/api/client.rb
tana-0.0.0 lib/tana/api/client.rb