Class: Legion::Gaia::Channels::Teams::ConversationStore
- Inherits:
-
Object
- Object
- Legion::Gaia::Channels::Teams::ConversationStore
- Defined in:
- lib/legion/gaia/channels/teams/conversation_store.rb
Defined Under Namespace
Classes: Reference
Instance Method Summary collapse
- #clear ⇒ Object
- #conversations ⇒ Object
-
#initialize ⇒ ConversationStore
constructor
A new instance of ConversationStore.
- #lookup(conversation_id) ⇒ Object
- #remove(conversation_id) ⇒ Object
- #size ⇒ Object
- #store(conversation_id:, service_url:, tenant_id: nil, bot_id: nil, activity_id: nil) ⇒ Object
- #store_from_activity(activity) ⇒ Object
Constructor Details
#initialize ⇒ ConversationStore
Returns a new instance of ConversationStore.
16 17 18 19 |
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 16 def initialize @references = {} @mutex = Mutex.new end |
Instance Method Details
#clear ⇒ Object
60 61 62 |
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 60 def clear @mutex.synchronize { @references.clear } end |
#conversations ⇒ Object
52 53 54 |
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 52 def conversations @mutex.synchronize { @references.keys } end |
#lookup(conversation_id) ⇒ Object
44 45 46 |
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 44 def lookup(conversation_id) @mutex.synchronize { @references[conversation_id] } end |
#remove(conversation_id) ⇒ Object
48 49 50 |
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 48 def remove(conversation_id) @mutex.synchronize { @references.delete(conversation_id) } end |
#size ⇒ Object
56 57 58 |
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 56 def size @mutex.synchronize { @references.size } end |
#store(conversation_id:, service_url:, tenant_id: nil, bot_id: nil, activity_id: nil) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 21 def store(conversation_id:, service_url:, tenant_id: nil, bot_id: nil, activity_id: nil) @mutex.synchronize do @references[conversation_id] = Reference.new( conversation_id: conversation_id, service_url: service_url, tenant_id: tenant_id, bot_id: bot_id, last_activity_id: activity_id ) end end |
#store_from_activity(activity) ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 33 def store_from_activity(activity) conversation = activity['conversation'] || activity[:conversation] || {} store( conversation_id: conversation['id'] || conversation[:id], service_url: activity['serviceUrl'] || activity[:serviceUrl], tenant_id: conversation['tenantId'] || conversation[:tenantId], bot_id: (activity['recipient'] || activity[:recipient] || {})['id'], activity_id: activity['id'] || activity[:id] ) end |