Class: VectorAmp::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/vector_amp/client.rb

Overview

Top-level API client for VectorAmp datasets, ingestion sources/jobs, and intelligence.

Constant Summary collapse

DEFAULT_BASE_URL =
"https://api.vectoramp.com"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key: ENV["VECTORAMP_API_KEY"], base_url: DEFAULT_BASE_URL, transport: nil, timeout: Transport::HTTP::DEFAULT_TIMEOUT) ⇒ Client

Create a VectorAmp API client.

Parameters:

  • api_key (String) (defaults to: ENV["VECTORAMP_API_KEY"])

    API key; defaults to ENV.

  • base_url (String) (defaults to: DEFAULT_BASE_URL)

    API base URL; defaults to the production API.

  • transport (#request, nil) (defaults to: nil)

    optional custom transport for tests or advanced use.

  • timeout (Numeric) (defaults to: Transport::HTTP::DEFAULT_TIMEOUT)

    HTTP timeout in seconds for the default transport.

Raises:



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/vector_amp/client.rb', line 31

def initialize(api_key: ENV["VECTORAMP_API_KEY"], base_url: DEFAULT_BASE_URL, transport: nil, timeout: Transport::HTTP::DEFAULT_TIMEOUT)
  raise ConfigurationError, "api_key is required" if api_key.nil? || api_key.empty?

  @base_url = base_url
  @transport = transport || Transport::HTTP.new(base_url: base_url, api_key: api_key, timeout: timeout)
  @ingestion = IngestionResource.new(@transport)
  @sources = @ingestion
  @schedules = SchedulesResource.new(@transport)
  @intelligence = IntelligenceResource.new(@transport)
  @connections = ConnectionsResource.new(@transport)
  @datasets = DatasetsResource.new(@transport, client: self)
end

Instance Attribute Details

#base_urlString, ... (readonly)

Returns:



22
23
24
# File 'lib/vector_amp/client.rb', line 22

def base_url
  @base_url
end

#connectionsString, ... (readonly)

Returns:



22
23
24
# File 'lib/vector_amp/client.rb', line 22

def connections
  @connections
end

#datasetsString, ... (readonly)

Returns:



22
23
24
# File 'lib/vector_amp/client.rb', line 22

def datasets
  @datasets
end

#ingestionString, ... (readonly)

Returns:



22
23
24
# File 'lib/vector_amp/client.rb', line 22

def ingestion
  @ingestion
end

#intelligenceString, ... (readonly)

Returns:



22
23
24
# File 'lib/vector_amp/client.rb', line 22

def intelligence
  @intelligence
end

#schedulesString, ... (readonly)

Returns:



22
23
24
# File 'lib/vector_amp/client.rb', line 22

def schedules
  @schedules
end

#sourcesString, ... (readonly)

Returns:



22
23
24
# File 'lib/vector_amp/client.rb', line 22

def sources
  @sources
end

Instance Method Details

#ask(query, **options) ⇒ Hash

Ask an intelligence question and return a complete response.

Parameters:

  • query (String)

    natural-language question.

  • options (Hash)

    forwarded to IntelligenceResource#query; stream is forced to false.

Returns:

  • (Hash)

    intelligence response.



48
49
50
# File 'lib/vector_amp/client.rb', line 48

def ask(query, **options)
  @intelligence.query(query, **options.merge(stream: false))
end

#ask_stream(query, **options) {|chunk| ... } ⇒ Enumerator, Object

Ask an intelligence question as a stream.

Parameters:

  • query (String)

    natural-language question.

  • options (Hash)

    forwarded to IntelligenceResource#query; stream is forced to true.

Yield Parameters:

  • chunk (Object)

    streamed response chunk from the transport.

Returns:

  • (Enumerator, Object)

    enumerator without a block, otherwise the transport result.



57
58
59
# File 'lib/vector_amp/client.rb', line 57

def ask_stream(query, **options, &block)
  @intelligence.query(query, **options.merge(stream: true), &block)
end