diff --git a/lib/milvus/client.rb b/lib/milvus/client.rb index 9062382..138fc62 100644 --- a/lib/milvus/client.rb +++ b/lib/milvus/client.rb @@ -4,13 +4,22 @@ module Milvus class Client - attr_reader :url, :api_key + attr_reader :url, :api_key, :adapter, :raise_error, :logger API_VERSION = "v2/vectordb" - def initialize(url:, api_key: nil) + def initialize( + url:, + api_key: nil, + adapter: Faraday.default_adapter, + raise_error: false, + logger: nil + ) @url = url @api_key = api_key + @adapter = adapter + @raise_error = raise_error + @logger = logger || Logger.new($stdout) end def collections @@ -47,8 +56,10 @@ def connection faraday.request :authorization, :Bearer, api_key end faraday.request :json + faraday.response :logger, logger, {headers: true, bodies: true, errors: true} + faraday.response :raise_error if raise_error faraday.response :json, content_type: /\bjson$/ - faraday.adapter Faraday.default_adapter + faraday.adapter adapter end end end diff --git a/spec/milvus/client_spec.rb b/spec/milvus/client_spec.rb new file mode 100644 index 0000000..a8350cb --- /dev/null +++ b/spec/milvus/client_spec.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +require "spec_helper" + +RSpec.describe Milvus::Client do + let(:client) { + described_class.new( + url: "localhost:8080", + api_key: "123" + ) + } + + describe "#initialize" do + it "creates a client" do + expect(client).to be_a(Milvus::Client) + end + + it "accepts a custom logger" do + logger = Logger.new($stdout) + client = Milvus::Client.new( + url: "localhost:8080", + api_key: "123", + logger: logger + ) + expect(client.logger).to eq(logger) + end + end +end \ No newline at end of file