Sha256: 3da0374857a01084932055fd4fe8edef6dd23b39d93ce5807c5e2dc261ddcf42

Contents?: true

Size: 797 Bytes

Versions: 1

Compression:

Stored size: 797 Bytes

Contents

# typed: strict
# frozen_string_literal: true

module Etwin
  module Client
    # HTTP Etwin client interface
    class HttpEtwinClient
      extend T::Helpers
      extend T::Sig

      include EtwinClient

      final!

      sig(:final) { params(base_uri: URI::HTTP).void }
      def initialize(base_uri)
        @base_uri = T.let(base_uri.freeze, URI::HTTP)
        freeze
      end

      sig(:final) { params(auth: Auth, user_id: UserId).returns(User) }
      def get_user(auth, user_id)
        uri = resolve(['users', user_id.to_s])
        res = Faraday.get uri
        pp res
      end

      private

      sig(:final) { params(segments: T::Array[String]).returns(URI::HTTP) }
      def resolve(segments)
        @base_uri.merge("api/v1/#{ segments * '/'}")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
etwin-0.0.1 lib/etwin/client/http_etwin_client.rb