class Plugin::Twitter::World

Public Class Methods

define_postal(method, twitter_method = method, &wrap) click to toggle source

なんかコールバック機能つける Deferred返すから無くてもいいんだけどねー 2017/4/15追記 これを書いた当時の俺氏ねや

# File core/plugin/twitter/model/world.rb, line 91
def self.define_postal(method, twitter_method = method, &wrap)
  function = lambda{ |api, options, &callback|
    if(callback)
      callback.call(:start, options)
      callback.call(:try, options)
      api.call(options).next{ |res|
        callback.call(:success, res)
        res
      }.trap{ |exception|
        callback.call(:err, exception)
        callback.call(:fail, exception)
        callback.call(:exit, nil)
        Deferred.fail(exception)
      }.next{ |val|
        callback.call(:exit, nil)
        val }
    else
      api.call(options) end }
  if block_given?
    define_method(method){ |*args, &callback|
      wrap.call(lambda{ |options|
                  function.call(twitter.method(twitter_method), options, &callback) }, self, *args)
    }
  else
    define_method(method){ |options, &callback| function.call(twitter.method(twitter_method), options, &callback) }
  end
end
new(hash) click to toggle source
Calls superclass method
# File core/plugin/twitter/model/world.rb, line 14
def initialize(hash)
  super(hash)
  user_initialize
end

Public Instance Methods

call_api(api, args = {}, &block) click to toggle source

scanと同じだが、別スレッドで問い合わせをするのでブロッキングしない。 レスポンスが帰ってきたら、渡されたブロックが呼ばれる。 ブロックは、必ずメインスレッドで実行されることが保証されている。 Deferredを返す。 0.1: このメソッドはObsoleteです

# File core/plugin/twitter/model/world.rb, line 79
def call_api(api, args = {}, &block)
  __send__(api, args).next(&block)
end
icon() click to toggle source
# File core/plugin/twitter/model/world.rb, line 40
def icon
  user_obj.icon
end
idname() click to toggle source

自分のユーザ名を返す。初回はサービスに問い合せてそれを返す。

# File core/plugin/twitter/model/world.rb, line 35
def idname
  self[:user].idname end
Also aliased as: user
inspect() click to toggle source
# File core/plugin/twitter/model/world.rb, line 175
def inspect
  "#<#{self.class.to_s}: #{id.inspect} #{slug.inspect}>"
end
method_missing(method_name, *args) click to toggle source
# File core/plugin/twitter/model/world.rb, line 179
def method_missing(method_name, *args)
  result = twitter.__send__(method_name, *args)
  (class << self; self end).__send__(:define_method, method_name, &twitter.method(method_name))
  result
end
path() click to toggle source
# File core/plugin/twitter/model/world.rb, line 55
def path
  "/#{slug}"
end
post(to: nil, message:, **kwrest) click to toggle source
# File core/plugin/twitter/model/world.rb, line 170
def post(to: nil, message:, **kwrest)
  Plugin[:twitter].compose(self, to, body: message, **kwrest)
end
postable?(target=nil) click to toggle source
# File core/plugin/twitter/model/world.rb, line 165
def postable?(target=nil)
  Plugin[:twitter].compose?(self, target)
end
scan(kind=:friends_timeline, args={}) click to toggle source

サービスにクエリ kind を投げる。 レスポンスを受け取るまでブロッキングする。 レスポンスを返す。失敗した場合は、apifailイベントを発生させてnilを返す。 0.1: このメソッドはObsoleteです

# File core/plugin/twitter/model/world.rb, line 63
def scan(kind=:friends_timeline, args={})
  no_mainthread
  wait = Queue.new
  __send__(kind, args).next{ |res|
    wait.push res
  }.terminate.trap{
    wait.push nil
  }
  wait.pop
end
streaming(method = :userstream, *args, &proc) click to toggle source

Streaming APIに接続する

# File core/plugin/twitter/model/world.rb, line 84
def streaming(method = :userstream, *args, &proc)
  twitter.__send__(method, *args, &proc)
end
title() click to toggle source
# File core/plugin/twitter/model/world.rb, line 44
def title
  user_obj.title
end
to_hash() click to toggle source
Calls superclass method
# File core/plugin/twitter/model/world.rb, line 48
def to_hash
  super.merge(user: {id: user_obj.id,
                     idname: user_obj.idname,
                     name: user_obj.name,
                     profile_image_url: user_obj.icon.perma_link.to_s})
end
to_user()
Alias for: user_obj
twitter() click to toggle source
# File core/plugin/twitter/model/world.rb, line 19
def twitter
  @twitter ||= MikuTwitter.new.tap do |ヒウィッヒヒー|
    ck, cs = Plugin.filtering(:twitter_default_api_keys, nil, nil)
    ヒウィッヒヒー.consumer_key = ck || Environment::TWITTER_CONSUMER_KEY
    ヒウィッヒヒー.consumer_secret = cs || Environment::TWITTER_CONSUMER_SECRET
    ヒウィッヒヒー.a_token = token
    ヒウィッヒヒー.a_secret = secret
  end
end
user()
Alias for: idname
user_obj() click to toggle source

自分のUserを返す。初回はサービスに問い合せてそれを返す。

# File core/plugin/twitter/model/world.rb, line 30
def user_obj
  self[:user] end
Also aliased as: to_user