Class: Clacky::Channel::Adapters::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/clacky/server/channel/adapters/base.rb

Overview

Base adapter interface for IM platforms. Subclasses must implement every abstract method below.

Direct Known Subclasses

Feishu::Adapter, Wecom::Adapter, Weixin::Adapter

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.platform_config(raw) ⇒ Hash

Map raw config hash (from ChannelConfig) to symbol-keyed platform config.

Parameters:

  • raw (Hash)

    symbol-keyed raw config

Returns:

  • (Hash)

Raises:

  • (NotImplementedError)


33
34
35
# File 'lib/clacky/server/channel/adapters/base.rb', line 33

def self.platform_config(raw)
  raise NotImplementedError, "#{self} must implement .platform_config"
end

.platform_idSymbol

Returns e.g. :feishu, :wecom.

Returns:

  • (Symbol)

    e.g. :feishu, :wecom

Raises:

  • (NotImplementedError)


26
27
28
# File 'lib/clacky/server/channel/adapters/base.rb', line 26

def self.platform_id
  raise NotImplementedError, "#{self} must implement .platform_id"
end

Instance Method Details

#platform_idSymbol

Returns:

  • (Symbol)


38
39
40
# File 'lib/clacky/server/channel/adapters/base.rb', line 38

def platform_id
  self.class.platform_id
end

#send_text(chat_id, text, reply_to: nil) ⇒ Hash

Send a plain text (or Markdown) message to a chat.

Parameters:

  • chat_id (String)
  • text (String)
  • reply_to (String, nil) (defaults to: nil)

    optional message_id to thread under

Returns:

  • (Hash)

    { message_id: String }

Raises:

  • (NotImplementedError)


59
60
61
# File 'lib/clacky/server/channel/adapters/base.rb', line 59

def send_text(chat_id, text, reply_to: nil)
  raise NotImplementedError, "#{self.class} must implement #send_text"
end

#start {|event Hash| ... } ⇒ Object

Start the adapter and begin receiving messages. This method blocks until stopped — call it inside a Thread.

Yields:

  • (event Hash)

    yields one standardized event per inbound message

Raises:

  • (NotImplementedError)


45
46
47
# File 'lib/clacky/server/channel/adapters/base.rb', line 45

def start(&on_message)
  raise NotImplementedError, "#{self.class} must implement #start"
end

#stopObject

Stop the adapter and release resources.

Raises:

  • (NotImplementedError)


50
51
52
# File 'lib/clacky/server/channel/adapters/base.rb', line 50

def stop
  raise NotImplementedError, "#{self.class} must implement #stop"
end

#supports_message_updates?Boolean

Returns true if the platform supports editing a sent message.

Returns:

  • (Boolean)

    true if the platform supports editing a sent message



70
71
72
# File 'lib/clacky/server/channel/adapters/base.rb', line 70

def supports_message_updates?
  false
end

#update_message(chat_id, message_id, text) ⇒ Boolean

Update an existing message in-place (for streaming progress).

Returns:

  • (Boolean)

    true if successful



65
66
67
# File 'lib/clacky/server/channel/adapters/base.rb', line 65

def update_message(chat_id, message_id, text)
  false
end

#validate_config(config) ⇒ Array<String>

Validate the provided config hash.

Returns:

  • (Array<String>)

    list of error strings; empty means valid



76
77
78
# File 'lib/clacky/server/channel/adapters/base.rb', line 76

def validate_config(config)
  []
end