Class: Blueticks::Client

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

Overview

Top-level entry point. Construct one and access resources via accessor methods:

client = Blueticks::Client.new(api_key: "bt_live_...")
client.scheduled_messages.create(type: "text", to: "12025550100", text: "Hello!")

Configuration order of precedence:

1. Explicit keyword args.
2. Environment variables: BLUETICKS_API_KEY, BLUETICKS_BASE_URL.
3. Defaults (base_url => https://api.blueticks.co).

Constant Summary collapse

DEFAULT_BASE_URL =
"https://api.blueticks.co"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil, base_url: nil, timeout: 30.0, max_retries: 3, user_agent: nil, http: nil) ⇒ Client

Returns a new instance of Client.



35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/blueticks/client.rb', line 35

def initialize(api_key: nil, base_url: nil, timeout: 30.0, max_retries: 3,
               user_agent: nil, http: nil)
  api_key = resolve_api_key(api_key)
  base_url = resolve_base_url(base_url)

  @transport = Transport.new(
    api_key: api_key,
    base_url: base_url,
    timeout: timeout,
    max_retries: max_retries,
    user_agent: user_agent,
    http: http
  )
end

Instance Attribute Details

#transportObject (readonly)

Returns the value of attribute transport.



33
34
35
# File 'lib/blueticks/client.rb', line 33

def transport
  @transport
end

Instance Method Details

#accountObject



55
56
57
# File 'lib/blueticks/client.rb', line 55

def 
  @account ||= Resources::AccountResource.new(self)
end

#audiencesObject



75
76
77
# File 'lib/blueticks/client.rb', line 75

def audiences
  @audiences ||= Resources::AudiencesResource.new(self)
end

#campaignsObject



79
80
81
# File 'lib/blueticks/client.rb', line 79

def campaigns
  @campaigns ||= Resources::CampaignsResource.new(self)
end

#chatsObject



71
72
73
# File 'lib/blueticks/client.rb', line 71

def chats
  @chats ||= Resources::ChatsResource.new(self)
end

#contactsObject



91
92
93
# File 'lib/blueticks/client.rb', line 91

def contacts
  @contacts ||= Resources::ContactsResource.new(self)
end

#enginesObject



87
88
89
# File 'lib/blueticks/client.rb', line 87

def engines
  @engines ||= Resources::EnginesResource.new(self)
end

#groupsObject



83
84
85
# File 'lib/blueticks/client.rb', line 83

def groups
  @groups ||= Resources::GroupsResource.new(self)
end

#messagesObject



99
100
101
# File 'lib/blueticks/client.rb', line 99

def messages
  @messages ||= Resources::MessagesResource.new(self)
end

#newslettersObject



95
96
97
# File 'lib/blueticks/client.rb', line 95

def newsletters
  @newsletters ||= Resources::NewslettersResource.new(self)
end

#pingObject



59
60
61
# File 'lib/blueticks/client.rb', line 59

def ping
  @ping ||= Resources::PingResource.new(self)
end

#request(method, path, params: nil, body: nil, idempotency_key: nil) ⇒ Object

Issue a raw request. Used internally by resource classes.



51
52
53
# File 'lib/blueticks/client.rb', line 51

def request(method, path, params: nil, body: nil, idempotency_key: nil)
  @transport.request(method, path, params: params, body: body, idempotency_key: idempotency_key)
end

#scheduled_messagesObject



63
64
65
# File 'lib/blueticks/client.rb', line 63

def scheduled_messages
  @scheduled_messages ||= Resources::ScheduledMessagesResource.new(self)
end

#sunoObject



103
104
105
# File 'lib/blueticks/client.rb', line 103

def suno
  @suno ||= Resources::SunoResource.new(self)
end

#utilsObject

Kept for backward compatibility. No spec-backed operations exposed.



108
109
110
# File 'lib/blueticks/client.rb', line 108

def utils
  @utils ||= Resources::UtilsResource.new(self)
end

#webhooksObject



67
68
69
# File 'lib/blueticks/client.rb', line 67

def webhooks
  @webhooks ||= Resources::WebhooksResource.new(self)
end