aboutsummaryrefslogtreecommitdiffstats
path: root/core/addon/streaming.rb
diff options
context:
space:
mode:
Diffstat (limited to 'core/addon/streaming.rb')
-rw-r--r--core/addon/streaming.rb31
1 files changed, 24 insertions, 7 deletions
diff --git a/core/addon/streaming.rb b/core/addon/streaming.rb
index f1149a86..18cf2a96 100644
--- a/core/addon/streaming.rb
+++ b/core/addon/streaming.rb
@@ -59,7 +59,7 @@ Module.new do
yield(service, lock.synchronize{ data = events; events = Set.new; data.freeze }) }
rescue => e
error e
- abort end }
+ Plugin.activity :error, e.to_s, :exception => e end }
define_method("event_#{event_name}"){ |json|
type_strict json => tcor(Array, Hash)
service ||= @service
@@ -68,7 +68,7 @@ Module.new do
thread.wakeup
else
error "event_#{event_name}: event processing thread was dead."
- abort end } end
+ thread.join end } end
def start
unless @thread and @thread.alive?
@@ -96,16 +96,16 @@ Module.new do
event_direct_message(json['direct_message'])
when json['delete']
if Mopt.debug
- Plugin.call(:update, nil, [Message.new(:message => YAML.dump(json),
- :system => true)]) end
+ Plugin.activity :system, YAML.dump(json) end
+
when !json.has_key?('event')
# thread_storage(:update).push(json)
event_update(json)
when Mopt.debug
- Plugin.call(:update, nil, [Message.new(:message => YAML.dump(json),
- :system => true)])
+ Plugin.activity :system, YAML.dump(json)
end
rescue Exception => e
+ Plugin.activity :error, e.to_s, exception: e
notice e
end end
@@ -127,7 +127,8 @@ Module.new do
Plugin.call(event_name, service, data) } end
define_together_event(:direct_message) do |service, data|
- trigger_event(service, :direct_messages => data.map{ |datum| datum.symbolize }) end
+ trigger_event(service, :direct_messages => data.map{ |datum|
+ MikuTwitter::ApiCallSupport::Request::Parser.direct_message(datum.symbolize) }) end
define_event(:favorite) do |service, json|
by = MikuTwitter::ApiCallSupport::Request::Parser.user(json['source'].symbolize)
@@ -149,6 +150,22 @@ Module.new do
elsif(source.is_me?)
Plugin.call(:followings_created, service, [target]) end end
+ define_event(:list_member_added) do |service, json|
+ target_user = MikuTwitter::ApiCallSupport::Request::Parser.user(json['target'].symbolize) # リストに追加されたユーザ
+ list = MikuTwitter::ApiCallSupport::Request::Parser.list(json['target_object'].symbolize) # リスト
+ source_user = MikuTwitter::ApiCallSupport::Request::Parser.user(json['source'].symbolize) # 追加したユーザ
+ list.add_member(target_user)
+ Plugin.call(:list_member_added, service, target_user, list, source_user)
+ end
+
+ define_event(:list_member_removed) do |service, json|
+ target_user = MikuTwitter::ApiCallSupport::Request::Parser.user(json['target'].symbolize) # リストに追加されたユーザ
+ list = MikuTwitter::ApiCallSupport::Request::Parser.list(json['target_object'].symbolize) # リスト
+ source_user = MikuTwitter::ApiCallSupport::Request::Parser.user(json['source'].symbolize) # 追加したユーザ
+ list.remove_member(target_user)
+ Plugin.call(:list_member_removed, service, target_user, list, source_user)
+ end
+
def start_streaming(&proc)
begin
Plugin.call(:rewindstatus, 'UserStream: start')