Class: Cadenya::Client

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

Overview

The Cadenya API client. Resource groups are readers; unset options are read from the environment.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil, base_url: nil, webhook_secret: nil, max_retries: 0, connection: nil, stream_transport: nil, workspace_id: nil) ⇒ Client

Returns a new instance of Client.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/cadenya/client.rb', line 13

def initialize(api_key: nil, base_url: nil, webhook_secret: nil, max_retries: 0, connection: nil, stream_transport: nil, workspace_id: nil)
  if !api_key.nil? && api_key.to_s.strip.empty?
    raise ArgumentError, "api_key must not be blank"
  end
  if !base_url.nil? && base_url.to_s.strip.empty?
    raise ArgumentError, "base_url must not be blank"
  end
  if !webhook_secret.nil? && webhook_secret.to_s.strip.empty?
    raise ArgumentError, "webhook_secret must not be blank"
  end
  if !workspace_id.nil? && workspace_id.to_s.strip.empty?
    raise ArgumentError, "workspace_id must not be blank"
  end
  api_key = (api_key || ENV.fetch("CADENYA_API_KEY", "")).to_s.strip
  if api_key.empty?
    raise ArgumentError, "missing API key: pass api_key: or set CADENYA_API_KEY"
  end
  base_url = (base_url || ENV.fetch("CADENYA_BASE_URL", "")).to_s.strip
  base_url = "https://api.cadenya.com" if base_url.empty?
  @webhook_secret = (webhook_secret || ENV.fetch("CADENYA_WEBHOOK_SECRET", "")).to_s.strip
  defaults = {}
  defaults["workspaceId"] = (workspace_id || ENV.fetch("CADENYA_WORKSPACE_ID", "")).to_s.strip
  core = Core.new(
    base_url: base_url,
    auth_header: ["Authorization", "Bearer #{api_key}"],
    max_retries: max_retries,
    defaults: defaults,
    user_agent: "cadenya-ruby/1.0.0 (api 1.0)",
    connection: connection,
    stream_transport: stream_transport
  )
  @accounts = Resources::Accounts.new(core)
  @api_keys = Resources::ApiKeys.new(core)
  @workspace_admin = Resources::WorkspaceAdmin.new(core)
  @profiles = Resources::Profiles.new(core)
  @workspaces = Resources::Workspaces.new(core)
  @agents = Resources::Agents.new(core)
  @ai_provider_keys = Resources::AiProviderKeys.new(core)
  @memory_layers = Resources::MemoryLayers.new(core)
  @models = Resources::Models.new(core)
  @objectives = Resources::Objectives.new(core)
  @tool_search = Resources::ToolSearch.new(core)
  @tenants = Resources::Tenants.new(core)
  @tool_sets = Resources::ToolSets.new(core)
  @uploads = Resources::Uploads.new(core)
  @widget_sessions = Resources::WidgetSessions.new(core)
  @widgets = Resources::Widgets.new(core)
  @workspace_secrets = Resources::WorkspaceSecrets.new(core)
end

Instance Attribute Details

#accountsObject (readonly)

Returns the value of attribute accounts.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def accounts
  @accounts
end

#agentsObject (readonly)

Returns the value of attribute agents.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def agents
  @agents
end

#ai_provider_keysObject (readonly)

Returns the value of attribute ai_provider_keys.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def ai_provider_keys
  @ai_provider_keys
end

#api_keysObject (readonly)

Returns the value of attribute api_keys.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def api_keys
  @api_keys
end

#memory_layersObject (readonly)

Returns the value of attribute memory_layers.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def memory_layers
  @memory_layers
end

#modelsObject (readonly)

Returns the value of attribute models.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def models
  @models
end

#objectivesObject (readonly)

Returns the value of attribute objectives.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def objectives
  @objectives
end

#profilesObject (readonly)

Returns the value of attribute profiles.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def profiles
  @profiles
end

#tenantsObject (readonly)

Returns the value of attribute tenants.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def tenants
  @tenants
end

#tool_searchObject (readonly)

Returns the value of attribute tool_search.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def tool_search
  @tool_search
end

#tool_setsObject (readonly)

Returns the value of attribute tool_sets.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def tool_sets
  @tool_sets
end

#uploadsObject (readonly)

Returns the value of attribute uploads.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def uploads
  @uploads
end

#widget_sessionsObject (readonly)

Returns the value of attribute widget_sessions.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def widget_sessions
  @widget_sessions
end

#widgetsObject (readonly)

Returns the value of attribute widgets.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def widgets
  @widgets
end

#workspace_adminObject (readonly)

Returns the value of attribute workspace_admin.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def workspace_admin
  @workspace_admin
end

#workspace_secretsObject (readonly)

Returns the value of attribute workspace_secrets.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def workspace_secrets
  @workspace_secrets
end

#workspacesObject (readonly)

Returns the value of attribute workspaces.



11
12
13
# File 'lib/cadenya/client.rb', line 11

def workspaces
  @workspaces
end

Instance Method Details

#unwrap_webhook(payload, headers) ⇒ Object

Verify a Standard Webhooks delivery and return the typed payload.



64
65
66
67
68
69
70
# File 'lib/cadenya/client.rb', line 64

def unwrap_webhook(payload, headers)
  if @webhook_secret.to_s.empty?
    raise ArgumentError, "missing webhook secret: pass webhook_secret: or set CADENYA_WEBHOOK_SECRET"
  end
  Webhooks.verify(@webhook_secret, payload, headers)
  Types::ObjectiveEventWebhookData.from_json(JSON.parse(payload))
end